├── page.png ├── editor.png ├── login.png ├── library.png ├── README.md └── dark-theme.css /page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/domainzero/bookstack-dark-theme/HEAD/page.png -------------------------------------------------------------------------------- /editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/domainzero/bookstack-dark-theme/HEAD/editor.png -------------------------------------------------------------------------------- /login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/domainzero/bookstack-dark-theme/HEAD/login.png -------------------------------------------------------------------------------- /library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/domainzero/bookstack-dark-theme/HEAD/library.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Casual stab at modifying the Bookstack main theme using the Dracula color scheme. 2 | Download and use at your own risk. 3 | 4 | # Installation 5 | 1. Deploy this CSS file to your Bookstack install's public/css folder 6 | 2. Call the stylesheet in the "Custom HTML head content" section in the settings like so: 7 | `` 8 | 3. Additionally, put the following block in your Custom HTML Head Content (these rules are also included in the bottom of the CSS sheet. They must be put in your Custom HTML Head Content due to how the CSS loads in Bookstack) 9 | 4. Enjoy! 10 | 11 | ```css 12 | 32 | ``` 33 | 34 | #### Changing the Codemirror theme for the Markdown editor 35 | Add the following to the "Custom HTML head content" box on the settings page to change the Markdown editor theme: 36 | ``` 37 | 38 | 39 | ``` 40 | 41 | Report any issues you find here. 42 | 43 | # Screenshots 44 | **Login:** 45 | ![](https://github.com/domainzero/bookstack-dark-theme/blob/master/login.png) 46 | **Library:** 47 | ![](https://github.com/domainzero/bookstack-dark-theme/blob/master/library.png) 48 | **Page:** 49 | ![](https://github.com/domainzero/bookstack-dark-theme/blob/master/page.png) 50 | **Editor:** 51 | ![](https://github.com/domainzero/bookstack-dark-theme/blob/master/editor.png) 52 | -------------------------------------------------------------------------------- /dark-theme.css: -------------------------------------------------------------------------------- 1 | /* optional */ 2 | /* uppercase titles */ 3 | .page-content h1{text-transform:uppercase} 4 | h1.break-text{text-transform:uppercase} 5 | 6 | 7 | /* Dracula stuff */ 8 | /* background */ 9 | :focus{outline-style:none!important} 10 | html {background-color: #282b36;} 11 | body {font-family: "Roboto", sans-serif!important;background-color: #282b36; color:#f8f8f2} 12 | html.shaded {background-color: #282a36;} 13 | .flex.sidebar+.flex.content{background-color: #282a36;} 14 | .flex.sidebar {background-color: #282a36;} 15 | body.shaded {background-color: #282a36;} 16 | .toolbar-container {background-color:#282a36} 17 | .search-box input{background-color:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.3)} 18 | hr{background-color:rgba(0,0,0,.2)} 19 | .faded-small, .primary-background-light {background-color: #282a36;} 20 | .floating-toolbox{background-color:#282a36} 21 | .editor-toolbar{background-color:#282a36;border-bottom:1px solid rgba(0,0,0,.2);} 22 | .title-input.page-title .input{background-color:#282a36;} 23 | #markdown-editor .markdown-editor-wrap {background-color: #282a36;} 24 | .card{ background: transparent;box-shadow:none} 25 | .comment-box {background-color: #333644;} 26 | .suggestion-box {background-color: #5e606a;} 27 | .suggestion-box li.active {background-color: #9b9ca3;} 28 | [notification] {background-color: #1d1f26;} 29 | 30 | /* text */ 31 | .text-page {color: #8be9fd;} 32 | .text-book {color: #50fa7b;} 33 | .text-chapter {color: #ffb86c;} 34 | .text-primary, p.primary, p .primary, span.primary:hover, .text-primary:hover, .text-button, .text-button:hover, .text-button:focus {color: #f8f8f2;} 35 | h1, h2, h3, h4, h5, h6 {color: #f8f8f2;} 36 | h1 {font-weight: 900} 37 | h2, h3, h4, h5, h6 {font-weight: 700} 38 | .faded a, .faded button, .faded span, .faded span>div {color: #f8f8f2;} 39 | .entity-list .page.draft .text-page {color: #bd93f9;} 40 | .card .entity-list-item:not(.no-hover):hover {background-color: #44475a !important;} 41 | .card .entity-list-item:not(.no-hover):hover .text-muted {color: white !important;} 42 | .entity-list-item:not(.no-hover):hover, .icon-list-item:not(.no-hover):hover {background-color: #44475a;color:#f8f8f2 !important;} 43 | .setting-list-label {color: #999;} 44 | .tag-item .tag-value {background-color: rgba(255, 255, 255, 0.1);} 45 | .tag-item a {color: #f8f8f2;} 46 | .text-small {color: #777 !important;} 47 | [notification="success"] svg {fill: #0f7d15 !important;} 48 | .entity-list-item:focus, .icon-list-item:focus {background-color:#44475a;} 49 | 50 | /* border changes */ 51 | header {border-bottom: 0;} 52 | #header{background-color:transparent!important} 53 | .flex.sidebar+.flex.content {border-left: 0;} 54 | .card h3{ border-bottom:0} 55 | .fake-input, .input-base, input[type=date], input[type=email], input[type=number], input[type=password], input[type=search], input[type=text], input[type=url], select, textarea{border: 1px solid #44475a;color: #f8f8f2;background-color: rgba(0,0,0,.2);} 56 | .activity-list-item {border-bottom:1px solid rgba(0,0,0,.2)} 57 | .floating-toolbox{border:0} 58 | #markdown-editor .markdown-editor-wrap{border: 1px solid rgba(0,0,0,.2);} 59 | 60 | /* scrollbar 61 | *********************************/ 62 | .scrollbar{margin-left: 30px;float: left;height: 300px;width: 65px;background: #F5F5F5;overflow-y: scroll;margin-bottom: 25px;} 63 | .force-overflow{min-height: 450px;} 64 | #wrapper{text-align: center;width: 500px;margin: auto;} 65 | #style-2::-webkit-scrollbar-track{-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);border-radius: 10px;background-color: #F5F5F5;} 66 | #style-2::-webkit-scrollbar{width: 12px;background-color: #F5F5F5;} 67 | #style-2::-webkit-scrollbar-thumb{border-radius: 10px;-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #D62929;} 68 | 69 | /* sidebar 70 | ****************************** 71 | pages */ 72 | .book-tree .sidebar-page-list .page {color: #8be9fd!important;} 73 | /* chapters */ 74 | .book-tree .sidebar-page-list .chapter {color: #ffb86c!important;} 75 | /* books */ 76 | .book-tree .sidebar-page-list .book {color: #50fa7b!important;} 77 | 78 | .input-base.invalid, .input-base.neg, .invalid.fake-input, .neg.fake-input, input.invalid[type=date], input.invalid[type=email], input.invalid[type=number], input.invalid[type=password], input.invalid[type=search], input.invalid[type=text], input.invalid[type=url], input.neg[type=date], input.neg[type=email], input.neg[type=number], input.neg[type=password], input.neg[type=search], input.neg[type=text], input.neg[type=url], select.invalid, select.neg, textarea.invalid, textarea.neg {border: 1px solid #ff5555;} 79 | .text-neg, p .neg, p.neg, span.neg {color: #ff5555;} 80 | 81 | .dropdown-container ul {background-color: #282a36;box-shadow: 0 0 2px 0 rgba(0,0,0,.1);border-radius: 1px;border: 1px solid #44475a;color: #f8f8f2;} 82 | .dropdown-container ul a, .dropdown-container ul button {color:#f8f8f2} 83 | .text-primary, p.primary, p .primary, span.primary:hover, .text-primary:hover, a, a:hover, a:focus, .text-button, .text-button:hover, .text-button:focus {color: #f8f8f2!important;fill:#f8f8f2!important;} 84 | .dropdown-container ul a:hover {background-color: #44475a;} 85 | .outline>input:active, .outline>input:focus {border-bottom: 2px solid #8be9fd;} 86 | .card.drag-card>div .outline input {background-color: #282a36;color:#f8f8f2} 87 | .card.drag-card .handle {background-color:#282a36;} 88 | .card.drag-card {border: 1px solid #44475a;} 89 | .card.drag-card .drag-card-action:hover, .card.drag-card .handle:hover {background-color: #44475a;} 90 | 91 | pre {background-color: #44475a;border: 1px solid #ddd;} 92 | pre:after {width: 0px;border-right:0} 93 | 94 | .sortable-page-list li {border: 1px solid #6272a4;} 95 | .sortable-page-list, .sortable-page-list ul {background-color: #282b36;} 96 | .well {background-color: #282a36;border:0;} 97 | .button.outline.page {border-color: #8be9fd;color: #8be9fd;} 98 | .button.outline.book {border-color: #50fa7b;color: #50fa7b;} 99 | 100 | .featured-image-container {background: none} 101 | .floating-toolbox .tabs {border-right: 1px solid #44475a;} 102 | .scroll-box {border: 1px solid #44475a;} 103 | .scroll-box .scroll-box-item {border-bottom: 1px solid #44475a;} 104 | 105 | ::-webkit-scrollbar {width: 10px;} 106 | ::-webkit-scrollbar-track {background: #282a36;} 107 | ::-webkit-scrollbar-thumb {background: #44475a;} 108 | ::-webkit-scrollbar-thumb:hover {background: #50fa7b;} 109 | .floating-toolbox .tabs svg {fill: rgba(248, 248, 242, 1);} 110 | 111 | .entity-selector .entity-list > div {background-color:#282a36;} 112 | .entity-selector .entity-list {color:#f8f8f2;background-color: #282a36} 113 | 114 | /* WSIWYG editor fixes */ 115 | #tinymce {background-color: #282a36!important;} 116 | .mce-container, .mce-container *, .mce-widget, .mce-widget *, .mce-reset {background-color: #282a36!important;} 117 | .mce-menubtn button {color: #f8f8f2!important;} 118 | .mce-ico {color:#f8f8f2!important;} 119 | .mce-grid-border a:hover, .mce-grid-border a.mce-active {border-color: #8be9fd;background: #bdd6f2;} 120 | .mce-menu-item.mce-selected .mce-text, .mce-menu-item.mce-selected .mce-ico {color: #f8f8f2!important;} 121 | .mce-widget, .mce-textbox {color: #ffffff!important;} 122 | .mce-label {text-shadow: none!important;} 123 | .popup-body {background-color: #282a36!important;} 124 | th {background-color: #44475a} 125 | .pos .svg-icon {fill:#282a36} 126 | 127 | ul > li > a {color: #8be9fd!important} 128 | .page-content > div > a {color: #8be9fd!important} 129 | 130 | /* pdf print fixes */ 131 | @page{margin:0cm!important;size: A4} 132 | @media print {html, body {width: 210mm;height: 297mm;} 133 | 134 | /* one offs */ 135 | .entity-list {background-color:#282a36 !important;} 136 | .svg-icon {fill:#f8f8f2!important;} 137 | .breadcrumb-listing .breadcrumb-listing-toggle:hover {fill: #f8f8f2;border-color: transparent;} 138 | .icon-list.text-primary {fill:#f8f8f2!important} 139 | #export-menu {color:#f8f8f2!important;} 140 | .book-tree .sidebar-page-list .entity-list-item.selected {background-color:#44475a;} 141 | /* other changes */ 142 | .code-base, code, span.code {border: 1px solid #6272a4;border-radius: 0px;} 143 | .button.pos, input[type=button].pos, input[type=submit].pos {background-color: #50fa7b;color: #282a36;text-transform: uppercase;border: 1px solid #52a256;vertical-align: top;} 144 | table.table tr:hover {background-color: #44475a;} 145 | table.table tr {border-bottom: 1px solid rgba(0,0,0,.2);} 146 | blockquote{border-left: 4px solid #8be9fd;background-color: #282a36!important;} 147 | .entity-selector .entity-list-item {background-color:#282a36;} 148 | .entity-selector {border:0} 149 | 150 | /* PUT THIS IN YOUR "Custom HTML Head Settings"! 151 | * Unless you don't want the Roboto font - then remove the next line. 152 | @import url('https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap'); 153 | .title-input.page-title input[type=text]{background:#44475a} 154 | .floating-toolbox div[toolbox-tab-content]{background-color:#282a36} 155 | html.dark-mode .card.drag-card{background-color:#44475a} 156 | html.dark-mode .card.drag-card .handle{background-color:#44475a} 157 | .card.drag-card .outline input{background-color:#282a36;color:#f8f8f2} 158 | #header{background-color:#282a36!important} 159 | html.dark-mode .fake-input,html.dark-mode .input-base,html.dark-mode input[type=color],html.dark-mode input[type=date],html.dark-mode input[type=email],html.dark-mode input[type=number],html.dark-mode input[type=password],html.dark-mode input[type=search],html.dark-mode input[type=text],html.dark-mode input[type=url],html.dark-mode select,html.dark-mode textarea{color:#f8f8f2;background-color:#44475a} 160 | html.dark-mode{background-color:#282a36} 161 | html.dark-mode .card{background-color:transparent} 162 | html.dark-mode body{color:#6272a4;background-color:transparent} 163 | .markdown-editor-display{background-color:#282a36!important} 164 | html.markdown-editor-display.dark-mode body{background-color:#282a36} 165 | .logo-text{color:var(--color-primary)!important} 166 | html.dark-mode code{background-color:#44475a} 167 | html.dark-mode pre{background-color:#44475a} 168 | .title-input.page-title input[type=text]{background:#44475a} 169 | html.dark-mode .editor-toolbar{background-color:#282a36} 170 | html.dark-mode .primary-background-light{background:#282a36} 171 | */ 172 | --------------------------------------------------------------------------------