add theming via css custom properties
[oweals/peertube.git] / client / src / sass / include / _variables.scss
index 7fd178c3b9b3a2378dc1dd79d9afe5b958591241..792a3f9c2f1157577607237d5cd824a2820e831d 100644 (file)
@@ -8,8 +8,6 @@ $grey-hoover-color: #EFEFEF;;
 $orange-color: #F1680D;
 $orange-hoover-color: #F97D46;
 
-$black-background: #000;
-$grey-background: #f6f2f2;
 $bg-color: #fff;
 $fg-color: #000;
 
@@ -27,11 +25,14 @@ $header-height: 50px;
 $header-border-color: #e9eff6;
 $search-input-width: 375px;
 
+$menu-background: #000;
 $menu-color: #fff;
 $menu-bottom-color: #C6C6C6;
 $menu-width: 240px;
 $menu-left-padding: 26px;
 
+$sub-menu-color: #F7F7F7;
+
 $footer-height: 30px;
 $footer-margin: 30px;
 
@@ -41,3 +42,40 @@ $video-thumbnail-height: 110px;
 $video-thumbnail-width: 200px;
 
 $theater-bottom-space: 85px;
+
+$input-color: $bg-color;
+$input-placeholder-color: #898989;
+
+/*** theme ***/
+
+body {
+  // now beware node-sass requires interpolation
+  // for css custom properties #{$var}
+  --mainColor: #{$orange-color};
+  --mainHoverColor: #{$orange-hoover-color};
+  --mainBackgroundColor: #{$bg-color};
+  --mainForegroundColor: #{$fg-color};
+  --submenuColor: #{$sub-menu-color};
+  --inputColor: #{$input-color};
+  --inputPlaceholderColor: #{$input-placeholder-color};
+}
+
+/*** map theme ***/
+
+// pass variables into a sass map,
+// to be warned of non-existing variables
+$variables: (
+  --mainColor: var(--mainColor),
+  --mainHoverColor: var(--mainHoverColor),
+  --mainBackgroundColor: var(--mainBackgroundColor),
+  --mainForegroundColor: var(--mainForegroundColor),
+  --submenuColor: var(--submenuColor),
+  --inputColor: var(--inputColor),
+  --inputPlaceholderColor: var(--inputPlaceholderColor)
+);
+
+/*** theme helper ***/
+
+@function var($variable) {
+  @return map-get($variables, $variable);
+}