Jelajahi Sumber

feat: Color Themes - Header + Sidebar + Footer support

NGPixel 8 tahun lalu
induk
melakukan
247d598edb

+ 1 - 3
client/js/pages/source-view.component.js

@@ -1,7 +1,5 @@
 'use strict'
 'use strict'
 
 
-/* global siteRoot */
-
 export default {
 export default {
   name: 'source-view',
   name: 'source-view',
   data() {
   data() {
@@ -9,7 +7,7 @@ export default {
   },
   },
   mounted() {
   mounted() {
     let self = this
     let self = this
-    FuseBox.import(siteRoot + '/js/ace/ace.js', (ace) => {
+    FuseBox.import('/js/ace/ace.js', (ace) => {
       let scEditor = ace.edit('source-display')
       let scEditor = ace.edit('source-display')
       scEditor.setTheme('ace/theme/dawn')
       scEditor.setTheme('ace/theme/dawn')
       scEditor.getSession().setMode('ace/mode/markdown')
       scEditor.getSession().setMode('ace/mode/markdown')

+ 7 - 0
client/scss/components/footer.scss

@@ -27,4 +27,11 @@
 
 
 	}
 	}
 
 
+  @each $color, $colorvalue in $material-colors {
+		&.is-#{$color} {
+      background-color: mc($color,'50');
+      color: mc($color,'500');
+    }
+  }
+
 }
 }

+ 38 - 4
client/scss/components/nav.scss

@@ -10,25 +10,37 @@
 	z-index: 2;
 	z-index: 2;
 	color: #FFF;
 	color: #FFF;
 
 
+  /* THEME OVERRIDE - START */
+
 	@each $color, $colorvalue in $material-colors {
 	@each $color, $colorvalue in $material-colors {
 		&.is-#{$color} {
 		&.is-#{$color} {
 			background-color: mc($color, '500');
 			background-color: mc($color, '500');
 			box-shadow: 0 2px 3px rgba(mc($color, '500'), 0.2);
 			box-shadow: 0 2px 3px rgba(mc($color, '500'), 0.2);
 
 
+      .nav-item a, a.nav-item {
+        color: mc($color, '50');
+
+        &:hover {
+          color: mc($color, '200');
+        }
+
+      }
+
+      h1:hover {
+        color: mc($color, '100');
+      }
+
 			.nav-item {
 			.nav-item {
 
 
 				.button {
 				.button {
-					border: 1px solid mc($color, '900');
 					background-color: mc($color, '800');
 					background-color: mc($color, '800');
 
 
 					&.is-outlined {
 					&.is-outlined {
 						background-color: mc($color, '600');
 						background-color: mc($color, '600');
-						border-color: mc($color, '800');
 						color: mc($color, '100');
 						color: mc($color, '100');
 					}
 					}
 
 
 					&:hover {
 					&:hover {
-						border-color: mc($color, '900');
 						background-color: mc($color, '900');
 						background-color: mc($color, '900');
 					}
 					}
 
 
@@ -36,9 +48,31 @@
 
 
 			}
 			}
 
 
+      .control {
+
+        input[type=text] {
+          background-color: mc($color, '800');
+          border-color: mc($color, '400');
+          color: mc($color, '50');
+
+          &:focus {
+            border-color: mc($color, '200');
+            box-shadow: inset 0 0 5px 0 rgba(mc($color, '900'), 0.5);
+          }
+
+          @include placeholder {
+            color: mc($color, '200');
+          }
+
+        }
+
+      }
+
 		}
 		}
 	}
 	}
 
 
+  /* THEME OVERRIDE - END */
+
 }
 }
 
 
 .nav-left {
 .nav-left {
@@ -117,7 +151,7 @@
 		}
 		}
 
 
 		&:hover {
 		&:hover {
-			color: mc('indigo', '100');
+			color: mc($primary, '100');
 		}
 		}
 	}
 	}
 
 

+ 51 - 0
client/scss/components/sidebar.scss

@@ -135,3 +135,54 @@
   }
   }
 
 
 }
 }
+
+/* THEME OVERRIDE - START */
+
+@each $color, $colorvalue in $material-colors {
+  .is-alternate-#{$color} .sidebar {
+    background-color: mc($color, '900');
+	  color: mc($color, '50');
+
+    aside {
+      .sidebar-label {
+        color: mc($color, '300');
+        background-color: mc($color, '800');
+      }
+      .sidebar-menu {
+        li {
+          a {
+            color: mc($color, '50');
+
+            &.is-active {
+              border-left-color: mc($color, '500');
+              color: mc($color, '300');
+
+              .is-small {
+                color: mc($color, '500');
+              }
+            }
+
+            &:hover {
+              color: mc($color, '400');
+            }
+
+            i {
+              color: mc($color, '300');
+            }
+          }
+          > ul {
+            border-top-color: lighten(mc($color, '900'), 3%);
+            border-bottom-color: lighten(mc($color, '900'), 2%);
+            background-color: darken(mc($color, '900'), 2%);
+
+            li a {
+              color: mc($color, '100');
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+/* THEME OVERRIDE - END */

+ 7 - 0
server/app/data.yml

@@ -57,6 +57,13 @@ defaults:
       papertrail: false
       papertrail: false
       rollbar: false
       rollbar: false
       sentry: false
       sentry: false
+    theme:
+      primary: indigo
+      alt: blue-grey
+      footer: blue-grey
+      code:
+        dark: true
+        colorize: true
 langs:
 langs:
   -
   -
     id: en
     id: en

+ 1 - 1
server/views/common/footer.pug

@@ -1,4 +1,4 @@
-footer.footer
+footer.footer(class=['is-' + appconfig.theme.footer])
   span
   span
     = t('footer.poweredby') + ' '
     = t('footer.poweredby') + ' '
     a(href='https://github.com/Requarks/wiki') Wiki.js
     a(href='https://github.com/Requarks/wiki') Wiki.js

+ 1 - 1
server/views/common/header.pug

@@ -1,6 +1,6 @@
 
 
 #header-container
 #header-container
-  nav.nav#header
+  nav.nav#header(class=['is-' + appconfig.theme.primary])
     .nav-left
     .nav-left
       block rootNavLeft
       block rootNavLeft
         a.nav-item(href='/')
         a.nav-item(href='/')

+ 1 - 1
server/views/layout.pug

@@ -29,7 +29,7 @@ html
     block head
     block head
 
 
   body
   body
-    #root.has-stickynav
+    #root.has-stickynav(class=['is-primary-' + appconfig.theme.primary, 'is-alternate-' + appconfig.theme.alt])
       include ./common/header.pug
       include ./common/header.pug
       alert
       alert
       main
       main