Procházet zdrojové kódy

Merge pull request #7123 from weseek/imprv/activate-apply-colors

imprv: Activate _apply-colors in app
Yuki Takei před 3 roky
rodič
revize
313645a121
21 změnil soubory, kde provedl 1204 přidání a 913 odebrání
  1. 1 0
      packages/app/src/pages/_app.page.tsx
  2. 0 1
      packages/app/src/styles/bootstrap/_variables.scss
  3. 21 14
      packages/app/src/styles/theme/_apply-colors-dark.scss
  4. 18 10
      packages/app/src/styles/theme/_apply-colors-light.scss
  5. 653 660
      packages/app/src/styles/theme/_apply-colors.scss
  6. 56 0
      packages/app/src/styles/theme/_hsl-functions.scss
  7. 21 0
      packages/app/src/styles/theme/_override-functions.scss
  8. 7 6
      packages/app/src/styles/theme/_reboot-bootstrap-buttons.scss
  9. 8 8
      packages/app/src/styles/theme/_reboot-bootstrap-colors.scss
  10. 2 1
      packages/app/src/styles/theme/_reboot-bootstrap-dropdown.scss
  11. 13 4
      packages/app/src/styles/theme/_reboot-bootstrap-theme-colors.scss
  12. 64 0
      packages/app/src/styles/theme/mixins/_hsl-button.scss
  13. 0 1
      packages/preset-themes/src/styles/bootstrap/_variables.scss
  14. 65 32
      packages/preset-themes/src/styles/default.scss
  15. 90 11
      packages/preset-themes/src/styles/theme/_apply-colors-dark.scss
  16. 60 1
      packages/preset-themes/src/styles/theme/_apply-colors-light.scss
  17. 109 37
      packages/preset-themes/src/styles/theme/_apply-colors.scss
  18. 0 20
      packages/preset-themes/src/styles/theme/_reboot-bootstrap-buttons.scss
  19. 2 1
      packages/preset-themes/src/styles/theme/_reboot-bootstrap-dropdown.scss
  20. 0 92
      packages/preset-themes/src/styles/theme/_reboot-bootstrap-theme-colors.scss
  21. 14 14
      packages/preset-themes/vite.themes.config.ts

+ 1 - 0
packages/app/src/pages/_app.page.tsx

@@ -19,6 +19,7 @@ import { CommonProps } from './utils/commons';
 import { registerTransformerForObjectId } from './utils/objectid-transformer';
 
 import '~/styles/style-app.scss';
+import '~/styles/theme/_apply-colors.scss';
 
 
 const isDev = process.env.NODE_ENV === 'development';

+ 0 - 1
packages/app/src/styles/bootstrap/_variables.scss

@@ -90,7 +90,6 @@ $border-radius-lg: 8px;
 // Buttons
 //
 // For each of Bootstrap's buttons, define text, background, and border color.
-$btn-link-disabled-color: $gray-500;
 $btn-focus-box-shadow: none;
 $btn-active-box-shadow: none;
 

+ 21 - 14
packages/app/src/styles/theme/_apply-colors-dark.scss

@@ -9,7 +9,7 @@ $bgcolor-list: var(--bgcolor-list,var(--bgcolor-global));
 $color-list-hover: var(--color-list-hover,var(--color-global));
 $color-list-active: $color-reversal !default;
 $bgcolor-list-active: var(--bgcolor-list-active,var(--primary));
-$bgcolor-subnav: var(--bgcolor-subnav,hsl(from var(--bgcolor-global) h s calc(l 3%)));
+$bgcolor-subnav: var(--bgcolor-subnav);
 $color-table: var(--color-table,white);
 $bgcolor-table: #343a40 !default;
 $border-color-table: lighten($bgcolor-table, 7.5%) !default;
@@ -24,7 +24,7 @@ $color-dropdown: var(--color-dropdown,var(--color-global));
 $bgcolor-dropdown: var(--bgcolor-dropdown,var(--bgcolor-global));
 $color-dropdown-link: var(--color-dropdown-link,var(--color-global));
 $color-dropdown-link-hover: $light !default;
-$bgcolor-dropdown-link-hover: var(--bgcolor-dropdown-link-hover,hsl(from var(--bgcolor-global) h s calc(l 15%)));
+$bgcolor-dropdown-link-hover: var(--bgcolor-dropdown-link-hover);
 $color-dropdown-link-active: $light !default;
 $bgcolor-dropdown-link-active: var(--bgcolor-dropdown-link-active,var(--primary));
 
@@ -66,8 +66,9 @@ input.form-control,
 select.form-control,
 select.custom-select,
 textarea.form-control {
+  --bgcolor-global-darken5: hsl(from var(--bgcolor-global) h s calc(l - 5%));
   color: var(--color-global);
-  background-color: hsl(from var(--bgcolor-global) h s calc(l - 5%));
+  background-color: var(--bgcolor-global-darken5);
   border-color: $border-color-global;
   &:focus {
     background-color: var(--bgcolor-global);
@@ -78,8 +79,10 @@ textarea.form-control {
 
 .form-control[disabled],
 .form-control[readonly] {
-  color: hsl(from var(--color-global) h s calc(l 10%));
-  background-color: hsl(from var(--bgcolor-global) h s calc(l 5%));
+  --color-global-light-10:hsl(from var(--color-global) h s calc(l + 10%));
+  --color-global-light-5:hsl(from var(--color-global) h s calc(l + 5%));
+  color: var(--color-global-light-10);
+  background-color: var(--color-global-light-5);
 }
 
 .input-group > .input-group-prepend > .input-group-text {
@@ -97,7 +100,8 @@ textarea.form-control {
 }
 
 label.custom-control-label::before {
-  background-color: hsl(from var(--bgcolor-global) h s calc(l - 5%));
+  --bgcolor-global-darken5: hsl(from var(--bgcolor-global) h s calc(l - 5%));
+  background-color: var(--bgcolor-global-darken5);
 }
 
 /*
@@ -228,10 +232,12 @@ ul.pagination {
  * GROWI page list
  */
 .page-list {
+  --color-global-darken10: hsl(from var(--color-global) h s calc(l - 10%));
+  --color-global-darken9: hsl(from var(--color-global) h s calc(l - 9%));
   .page-list-ul {
     > li {
       > span.page-list-meta {
-        color: hsl(from var(--color-global) h s calc(l - 10%));
+        color: var(--color-global-darken10);
       }
     }
   }
@@ -239,13 +245,13 @@ ul.pagination {
   // List group
   .list-group-item {
     &.active {
-      background-color: hsl(from var(--bgcolor-global) h s calc(l 9%));
+      background-color: var(--color-global-darken9);
     }
     .list-group-item-action:hover {
       background-color: var(--bgcolor-list-hover);
     }
     .page-list-snippet {
-      color: hsl(from var(--color-global) h s calc(l - 10%));
+      color: var(--color-global-darken10);
     }
   }
 }
@@ -254,8 +260,9 @@ ul.pagination {
  * GROWI ToC
  */
 .revision-toc-content {
+  --color-global-lighten30: hsl(from var(--color-global) h s calc(l + 30%));
   ::marker {
-    color: hsl(from var(--bgcolor-global) h s calc(l 30%));;
+    color: var(--color-global-lighten30);
   }
 }
 
@@ -302,12 +309,12 @@ ul.pagination {
   );
   // Pagetree
   .grw-pagetree {
-    --bgcolor-sidebar-context-lighten8: hsl(from var(--bgcolor-sidebar-context) h s calc(l 8%));
-    --bgcolor-sidebar-context-lighten15: hsl(from var(--bgcolor-sidebar-context) h s calc(l 15%));
+    --bgcolor-sidebar-context-lighten8: hsl(from var(--bgcolor-sidebar-context) h s calc(l + 8%));
+    --bgcolor-sidebar-context-lighten15: hsl(from var(--bgcolor-sidebar-context) h s calc(l + 15%));
     --color-sidebar-context-darken15: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 15%));
     --color-sidebar-context-darken10: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 10%));
-    --bgcolor-sidebar-context-lighten18: hsl(from var(--bgcolor-sidebar-context) h s calc(l 18%));
-    --bgcolor-sidebar-context-lighten24: hsl(from var(--bgcolor-sidebar-context) h s calc(l 24%));
+    --bgcolor-sidebar-context-lighten18: hsl(from var(--bgcolor-sidebar-context) h s calc(l + 18%));
+    --bgcolor-sidebar-context-lighten24: hsl(from var(--bgcolor-sidebar-context) h s calc(l + 24%));
     @include override-list-group-item-for-pagetree(
       var(--color-sidebar-context),
       var(--bgcolor-sidebar-context-lighten8),

+ 18 - 10
packages/app/src/styles/theme/_apply-colors-light.scss

@@ -24,6 +24,7 @@ $color-dropdown-link: var(--color-dropdown-link,var(--color-global));
 $color-dropdown-link-hover: var(--color-dropdown-link-hover,var(--color-global));
 $color-dropdown-link-active: var(--color-reversal);
 $bgcolor-dropdown-link-active: $primary !default;
+$bgcolor-navbar: var(--bgcolor-navbar,#{$gray-900});
 
 
 // override bootstrap variables
@@ -63,13 +64,16 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
 }
 
 .form-control::placeholder {
-  color: hsl(from var(--bgcolor-global) h s calc(l - 20%));
+  --bgcolor-global-darken20: hsl(from var(--bgcolor-global) h s calc(l - 20%));
+  color: var(--bgcolor-global-darken20);
 }
 
 .form-control[disabled],
 .form-control[readonly] {
-  color: hsl(from var(--color-global) h s calc(l 10%));
-  background-color: hsl(from var(--bgcolor-global) h s calc(l - 5%));
+  --color-global-light-10:hsl(from var(--color-global) h s calc(l + 10%));
+  --color-global-darken-5:hsl(from var(--color-global) h s calc(l - 5%));
+  color: var(--color-global-light-10);
+  background-color: var(--color-global-darken-5);
 }
 
 /*
@@ -188,7 +192,7 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
  * GROWI Sidebar
  */
 .grw-sidebar {
-  --bgcolor-sidebar-context: hsl(from var(--primary) h s calc(l 77%));
+  --bgcolor-sidebar-context: hsl(from var(--primary) h s calc(l + 77%));
   // List
   @include override-list-group-item(
     var(--color-list),
@@ -207,8 +211,8 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
   .grw-pagetree {
     --bgcolor-sidebar-context-darken5: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 5%));
     --bgcolor-sidebar-context-darken12: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 12%));
-    --color-sidebar-context-lighten10: hsl(from var(--color-sidebar-context) h s calc(l 10%));
-    --color-sidebar-context-lighten8: hsl(from var(--color-sidebar-context) h s calc(l 8%));
+    --color-sidebar-context-lighten10: hsl(from var(--color-sidebar-context) h s calc(l + 10%));
+    --color-sidebar-context-lighten8: hsl(from var(--color-sidebar-context) h s calc(l + 8%));
     --bgcolor-sidebar-context-darken12: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 15%));
     --bgcolor-sidebar-context-darken12: hsl(from var(--bgcolor-sidebar-context) h s calc(l - 24%));
     @include override-list-group-item-for-pagetree(
@@ -247,17 +251,18 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
  * GROWI page list
  */
 .page-list {
+  --color-global-lighten10:hsl(from var(--color-global) h s calc(l + 10%));
   .page-list-ul {
     > li {
       > span.page-list-meta {
-        color: hsl(from var(--color-global) h s calc(l 10%));
+        color: var(--color-global-lighten10);
       }
     }
   }
   // List group
   .list-group-item {
     .page-list-snippet {
-      color: hsl(from var(--color-global) h s calc(l 10%));
+      color: var(--color-global-lighten10);
     }
   }
 }
@@ -266,8 +271,9 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
  * GROWI ToC
  */
 .revision-toc-content {
+  --bgcolor-global-darken20: hsl(from var(--bgcolor-global) h s calc(l - 20%));
   ::marker {
-    color: hsl(from var(--bgcolor-global) h s calc(l - 20%));
+    color: var(--bgcolor-global-darken20);
   }
 }
 
@@ -446,5 +452,7 @@ $dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
  * skeleton
  */
 .grw-skeleton {
-  background-color: hsl(from var(--bgcolor-subnav) h s calc(l 10%));
+  --bgcolor-subnav-lighten10 : hsl(from var(--bgcolor-subnav) h s calc(l + 10%));
+  background-color: var(--bgcolor-subnav-lighten10);
 }
+

+ 653 - 660
packages/app/src/styles/theme/_apply-colors.scss

@@ -1,52 +1,54 @@
 @use '../variables' as var;
 @use '../bootstrap/init' as *;
 @use '../mixins';
-@use './mixins/tables'; // comment out and use _reboot-bootstrap-tables instead -- 2020.05.28 Yuki Takei
 @use '../atoms/mixins/code';
+@use './mixins/tables'; // comment out and use _reboot-bootstrap-tables instead -- 2020.05.28 Yuki Takei
+@use './mixins/hsl-button';
 
 //
 //== Apply to Bootstrap
 //
 
-// determine optional variables
-$border-image-navbar: linear-gradient(to right, $gray-300 0%, $gray-300 100%) !default;
-$bgcolor-search-top-dropdown: $secondary !default;
-$bgcolor-sidebar-nav-item-active: darken($bgcolor-sidebar, 10%) !default;
-$text-shadow-sidebar-nav-item-active: var(--text-shadow-sidebar-nav-item-active,1px 1px 2px var(--primary));
-$bgcolor-inline-code: $gray-100 !default;
-$color-inline-code: darken($red, 15%) !default;
-$bordercolor-inline-code: $gray-400 !default;
-$bordercolor-nav-tabs: $gray-300 !default;
-$bordercolor-nav-tabs-hover: $gray-200 $gray-200 $bordercolor-nav-tabs !default;
-$color-nav-tabs-link-active: $gray-600 !default;
-$bordercolor-nav-tabs-active: var(--ordercolor-nav-tabs-active,var(--bordercolor-nav-tabs) var(--bordercolor-nav-tabs) var(--bgcolor-global));
-$color-btn-reload-in-sidebar: $gray-500;
-$bgcolor-keyword-highlighted: var.$grw-marker-yellow !default;
-$bgcolor-page-list-group-item-active: var(--bgcolor-page-list-group-item-active,hsl(from var(--bgcolor-global) h s calc(l 76%)));
-$color-page-list-group-item-meta: var(--color-page-list-group-item-meta,$gray-500);
-$color-search-page-list-title: var(--color-search-page-list-title,var(--color-global));
-
-// override bootstrap variables
-$body-bg: var(--bgcolor-global);
-$body-color: var(--color-global);
-$link-color: var(--color-link);
-$link-hover-color: var(--color-link-hover);
-$input-focus-color: var(--color-global);
-$nav-tabs-border-color: $bordercolor-nav-tabs;
-$nav-tabs-link-hover-border-color: $bordercolor-nav-tabs-hover;
-$nav-tabs-link-active-color: $color-nav-tabs-link-active;
-$nav-tabs-link-active-bg: var(--bgcolor-global);
-$nav-tabs-link-active-border-color: var(--bordercolor-nav-tabs-active);
-$theme-colors: map-merge($theme-colors, ( primary: $primary ));
+// // determine optional variables
+// $border-image-navbar: linear-gradient(to right, $gray-300 0%, $gray-300 100%) !default;
+// $bgcolor-search-top-dropdown: $secondary !default;
+// $bgcolor-sidebar-nav-item-active: darken($bgcolor-sidebar, 10%) !default;
+// $text-shadow-sidebar-nav-item-active: var(--text-shadow-sidebar-nav-item-active,1px 1px 2px var(--primary));
+
+$bgcolor-inline-code: var(--bgcolor-inline-code, $gray-100);
+$color-inline-code: var(--color-inline-code, darken($red, 15%));
+$bordercolor-inline-code: var(--bordercolor-inline-code, $gray-400);
+
+// $bordercolor-nav-tabs: $gray-300 !default;
+// $bordercolor-nav-tabs-hover: $gray-200 $gray-200 $bordercolor-nav-tabs !default;
+// $color-nav-tabs-link-active: $gray-600 !default;
+// $bordercolor-nav-tabs-active: var(--ordercolor-nav-tabs-active,var(--bordercolor-nav-tabs) var(--bordercolor-nav-tabs) var(--bgcolor-global));
+// $color-btn-reload-in-sidebar: $gray-500;
+// $bgcolor-keyword-highlighted: var.$grw-marker-yellow !default;
+// $color-page-list-group-item-meta: var(--color-page-list-group-item-meta,$gray-500);
+// $color-search-page-list-title: var(--color-search-page-list-title,var(--color-global));
+
+// // override bootstrap variables
+// $body-bg: var(--bgcolor-global);
+// $body-color: var(--color-global);
+// $link-color: var(--color-link);
+// $link-hover-color: var(--color-link-hover);
+// $input-focus-color: var(--color-global);
+// $nav-tabs-border-color: $bordercolor-nav-tabs;
+// $nav-tabs-link-hover-border-color: $bordercolor-nav-tabs-hover;
+// $nav-tabs-link-active-color: $color-nav-tabs-link-active;
+// $nav-tabs-link-active-bg: var(--bgcolor-global);
+// $nav-tabs-link-active-border-color: var(--bordercolor-nav-tabs-active);
+// $theme-colors: map-merge($theme-colors, ( primary: $primary ));
 
 @import 'reboot-bootstrap-buttons';
 @import 'reboot-bootstrap-colors';
 @import 'reboot-bootstrap-theme-colors';
-@import 'reboot-bootstrap-nav';
+// @import 'reboot-bootstrap-nav';
 @import 'reboot-toastr-colors';
 
-// determine variables with bootstrap function (These variables can be used after importing bootstrap above)
-$color-modal-header: color-yiq($primary) !default;
+// // determine variables with bootstrap function (These variables can be used after importing bootstrap above)
+// $color-modal-header: color-yiq($primary) !default;
 
 code:not([class^='language-']) {
   @include code.code-inline-color($color-inline-code, $bgcolor-inline-code, $bordercolor-inline-code);
@@ -60,638 +62,629 @@ code:not([class^='language-']) {
 //== Apply to Bootstrap Elements
 //
 
-// Alert link
-@each $color, $value in $theme-colors {
-  .alert.alert-#{$color} {
-    a,
-    a:hover {
-      color: theme-color-level($color, $alert-color-level - 2);
-    }
-  }
-}
-
-// Dropdown
-.grw-apperance-mode-dropdown {
-  .grw-sidebar-mode-icon svg {
-    fill: $secondary;
-  }
-  .grw-color-mode-icon svg {
-    fill: var(--color-global);
-  }
-  .grw-color-mode-icon-muted svg {
-    fill: $secondary;
-  }
-}
-
-// Form
-.form-control {
-  @include form-control-focus();
-}
-
-// Tabs
-.nav.nav-tabs .nav-link.active {
-  color: var(--color-link);
-  background: transparent;
-
-  &:hover,
-  &:focus {
-    color: var(--color-link-hover);
-  }
-}
-
-// Pagination
-ul.pagination {
-  li.page-item.disabled {
-    button.page-link {
-      color: $gray-400;
-    }
-  }
-  li.page-item.active {
-    button.page-link {
-      color: color-yiq($primary);
-      background-color: $primary;
-      &:hover,
-      &:focus {
-        color: color-yiq($primary);
-        background-color: $primary;
-      }
-    }
-  }
-  li.page-item {
-    button.page-link {
-      color: $primary;
-      border-color: $secondary;
-      &:hover,
-      &:active,
-      &:focus {
-        color: $primary;
-      }
-    }
-  }
-}
-
-//
-//== Apply to Handsontable
-//
-.handsontable {
-  color: initial;
-}
-
-//
-//== Apply to GROWI Elements
-//
 
-.grw-logo {
-  // set transition for fill
-  svg * {
-    transition: fill 0.8s ease-out;
-  }
-
-  svg {
-    fill: var(--fillcolor-logo-mark);
-  }
-
-  &:hover {
-    svg {
-      .group1 {
-        fill: var.$growi-green;
-      }
-
-      .group2 {
-        fill: var.$growi-blue;
-      }
-    }
-  }
-}
-
-.grw-navbar {
-  background: var(--bgcolor-navbar);
-  .nav-item .nav-link {
-    color: var(--color-link-nabvar);
-  }
-
-  border-image: $border-image-navbar;
-  border-image-slice: 1;
-
-  .grw-app-title {
-    color: var(--fillcolor-logo-mark);
-  }
-}
-
-.grw-global-search {
-  .btn-secondary.dropdown-toggle {
-    @include button-variant($bgcolor-search-top-dropdown, $bgcolor-search-top-dropdown);
-  }
-
-  // for https://youtrack.weseek.co.jp/issue/GW-2603
-  .search-typeahead {
-    background-color: var(--bgcolor-global); opacity:0.9;
-  }
-}
+// // Dropdown
+// .grw-apperance-mode-dropdown {
+//   .grw-sidebar-mode-icon svg {
+//     fill: $secondary;
+//   }
+//   .grw-color-mode-icon svg {
+//     fill: var(--color-global);
+//   }
+//   .grw-color-mode-icon-muted svg {
+//     fill: $secondary;
+//   }
+// }
+
+// // Form
+// .form-control {
+//   @include form-control-focus();
+// }
+
+// // Tabs
+// .nav.nav-tabs .nav-link.active {
+//   color: var(--color-link);
+//   background: transparent;
+
+//   &:hover,
+//   &:focus {
+//     color: var(--color-link-hover);
+//   }
+// }
+
+// // Pagination
+// ul.pagination {
+//   li.page-item.disabled {
+//     button.page-link {
+//       color: $gray-400;
+//     }
+//   }
+//   li.page-item.active {
+//     button.page-link {
+//       color: color-yiq($primary);
+//       background-color: $primary;
+//       &:hover,
+//       &:focus {
+//         color: color-yiq($primary);
+//         background-color: $primary;
+//       }
+//     }
+//   }
+//   li.page-item {
+//     button.page-link {
+//       color: $primary;
+//       border-color: $secondary;
+//       &:hover,
+//       &:active,
+//       &:focus {
+//         color: $primary;
+//       }
+//     }
+//   }
+// }
+
+// //
+// //== Apply to Handsontable
+// //
+// .handsontable {
+//   color: initial;
+// }
+
+// //
+// //== Apply to GROWI Elements
+// //
+
+// .grw-logo {
+//   // set transition for fill
+//   svg * {
+//     transition: fill 0.8s ease-out;
+//   }
+
+//   svg {
+//     fill: var(--fillcolor-logo-mark);
+//   }
+
+//   &:hover {
+//     svg {
+//       .group1 {
+//         fill: var.$growi-green;
+//       }
+
+//       .group2 {
+//         fill: var.$growi-blue;
+//       }
+//     }
+//   }
+// }
+
+// .grw-navbar {
+//   background: var(--bgcolor-navbar);
+//   .nav-item .nav-link {
+//     color: var(--color-link-nabvar);
+//   }
+
+//   border-image: $border-image-navbar;
+//   border-image-slice: 1;
+
+//   .grw-app-title {
+//     color: var(--fillcolor-logo-mark);
+//   }
+// }
+
+// .grw-global-search {
+//   .btn-secondary.dropdown-toggle {
+//     @include button-variant($bgcolor-search-top-dropdown, $bgcolor-search-top-dropdown);
+//   }
+
+//   // for https://youtrack.weseek.co.jp/issue/GW-2603
+//   .search-typeahead {
+//     background-color: var(--bgcolor-global); opacity:0.9;
+//   }
+// }
 
 .grw-sidebar {
-  .grw-navigation-resize-button {
-    $color-resize-button: var(--color-resize-button--,var(--color-global));
-    $bgcolor-resize-button: white !default;
-    $color-resize-button-hover: $color-reversal !default;
-    $bgcolor-resize-button-hover: lighten($bgcolor-resize-button, 5%) !default;
-
-    .hexagon-container svg {
-      .background {
-        fill: $bgcolor-resize-button;
-      }
-      .icon {
-        fill: $color-resize-button;
-      }
-    }
-    &:hover .hexagon-container svg {
-      .background {
-        fill: $bgcolor-resize-button-hover;
-      }
-      .icon {
-        fill: $color-resize-button-hover;
-      }
-    }
-  }
-  div.grw-global-navigation {
-    > div {
-      background-color: var(--bgcolor-sidebar);
-    }
-  }
-  div.grw-contextual-navigation {
-    > div {
-      color: var(--color-sidebar-context);
-      background-color: var(--bgcolor-sidebar-context);
-    }
-  }
+  //   .grw-navigation-resize-button {
+  //     $color-resize-button: var(--color-resize-button--,var(--color-global));
+  //     $bgcolor-resize-button: white !default;
+  //     $color-resize-button-hover: $color-reversal !default;
+  //     $bgcolor-resize-button-hover: lighten($bgcolor-resize-button, 5%) !default;
+
+  //     .hexagon-container svg {
+  //       .background {
+  //         fill: $bgcolor-resize-button;
+  //       }
+  //       .icon {
+  //         fill: $color-resize-button;
+  //       }
+  //     }
+  //     &:hover .hexagon-container svg {
+  //       .background {
+  //         fill: $bgcolor-resize-button-hover;
+  //       }
+  //       .icon {
+  //         fill: $color-resize-button-hover;
+  //       }
+  //     }
+  //   }
+  //   div.grw-global-navigation {
+  //     > div {
+  //       background-color: var(--bgcolor-sidebar);
+  //     }
+  //   }
+  //   div.grw-contextual-navigation {
+  //     > div {
+  //       color: var(--color-sidebar-context);
+  //       background-color: var(--bgcolor-sidebar-context);
+  //     }
+  //   }
 
   .grw-sidebar-nav {
     .btn {
-      @include button-variant(
-        $bgcolor-sidebar,
-        $bgcolor-sidebar,
-        darken($bgcolor-sidebar, 7.5%),
-        darken($bgcolor-sidebar, 10%),
-        $bgcolor-sidebar-nav-item-active,
-        $bgcolor-sidebar-nav-item-active
+      @include hsl-button.button-variant(
+        var(--bgcolor-sidebar),
+        var(--bgcolor-sidebar),
       );
     }
   }
-  .grw-sidebar-nav-primary-container {
-    .btn.active {
-      i {
-        text-shadow: var(--text-shadow-sidebar-nav-item-active);
-      }
-      // fukidashi
-      &:after {
-        border-right-color: var(--bgcolor-sidebar-context)
-        ;
-      }
-    }
-  }
-
-  .grw-sidebar-content-header {
-    .grw-btn-reload {
-      color: $color-btn-reload-in-sidebar;
-    }
-
-    .grw-recent-changes-resize-button {
-      .custom-control-label::before {
-        background-color: $primary;
-      }
-
-      .custom-control-label::after {
-        background-color: var(--bgcolor-global);
-      }
-
-      .custom-control-input:not(:checked) + .custom-control-label::before {
-        color: var(--bgcolor-global);
-      }
-
-      .custom-control-input:checked + .custom-control-label::before {
-        color: var(--bgcolor-global);
-        background-color: $primary;
-        // border-color: $primary !important;
-      }
-      .custom-control-input:checked + .custom-control-label::after {
-        color: var(--bgcolor-global);
-      }
-    }
-  }
-
-  .grw-pagetree {
-    .list-group-item {
-      .grw-pagetree-title-anchor {
-        color: inherit;
-      }
-    }
-  }
-  .grw-pagetree-footer {
-    .h5.grw-private-legacy-pages-anchor {
-      color: inherit;
-    }
-  }
-
-  .grw-recent-changes {
-    .list-group {
-      .list-group-item {
-        background-color: transparent;
-
-        .icon-lock {
-          color: var(--color-link);
-        }
-
-        .grw-recent-changes-item-lower {
-          color: $gray-500;
-
-          svg {
-            fill: $gray-500;
-          }
-        }
-      }
-    }
-  }
-}
-
-/*
- * Icon
- */
-.editor-container .navbar-editor svg {
-  fill: var(--color-editor-icons);
-}
-
-// page preview button in link form
-.btn-page-preview svg {
-  fill: white;
-}
-
-/*
- * Modal
- */
-.modal {
-  .modal-header {
-    border-bottom-color: $border-color-theme;
-    .modal-title {
-      color: $color-modal-header;
-    }
-    .close {
-      color: $color-modal-header;
-      opacity: 0.5;
-      &:hover {
-        opacity: 0.9;
-      }
-    }
-  }
-
-  .modal-content {
-    background-color: var(--bgcolor-global);
-  }
-
-  .modal-footer {
-    border-top-color: $border-color-theme;
-  }
-}
-
-.grw-custom-nav-tab {
-  .nav-item {
-    &:hover,
-    &:focus {
-      background-color: var(--color-link); opacity:0.9;
-    }
-    .nav-link {
-      -webkit-appearance: none;
-      color: var(--color-link);
-      svg {
-        fill: var(--color-link);
-      }
-
-      // Disabled state lightens text
-      &.disabled {
-        color: $nav-link-disabled-color;
-        svg {
-          fill: $nav-link-disabled-color;
-        }
-      }
-    }
-  }
-
-  .grw-nav-slide-hr {
-    border-color: var(--color-link);
-  }
-}
-
-.grw-page-accessories-modal {
-  .modal-header {
-    .close {
-      color: $secondary;
-    }
-  }
-}
-
-/*
- * cards
- */
-.card.well {
-  color: var(--color-global);
-  background-color: var(--bgcolor-card);
-  border-color: $light;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.admin-bot-card {
-  .grw-botcard-title-active {
-    color: $gray-200;
-  }
-}
-
-/*
- * Form Slider
- */
-.admin-page {
-  span.slider {
-    background-color: $gray-300;
-
-    &:before {
-      background-color: white;
-    }
-  }
-
-  input:checked + .slider {
-    background-color: #007bff;
-  }
-
-  input:focus + .slider {
-    box-shadow: 0 0 1px #007bff;
-  }
-}
-
-/*
- * GROWI wiki
- */
-.wiki {
-  h1,
-  h2,
-  h3,
-  h4,
-  h5,
-  h6,
-  h7 {
-    &.blink {
-      @include mixins.blink-bgcolor($bgcolor-blinked-section);
-    }
-  }
-
-  .highlighted-keyword {
-    background: linear-gradient(transparent 60%, $bgcolor-keyword-highlighted 60%);
-  }
-
-  a {
-    color: var(--color-link-wiki);
-
-    &:hover {
-      color: var(--color-link-wiki-hover);
-    }
-  }
-
-  // table with handsontable modal button
-  .editable-with-handsontable {
-    button {
-      color: var(--color-link-wiki);
-    }
-
-    button:hover {
-      color: var(--color-link-wiki-hover);
-    }
-  }
-}
-
-/*
- * GROWI page-list
- */
-.page-list {
-  // List group
-  .list-group {
-    .list-group-item {
-      a {
-        svg {
-          fill: var(--color-global);
-        }
-
-        @include hover() {
-          svg {
-            fill: var(--color-global);
-          }
-        }
-      }
-
-      .page-list-meta {
-        color: var(--color-page-list-group-item-meta);
-        svg {
-          fill: var(--color-page-list-group-item-meta);
-        }
-      }
-
-      &.list-group-item-action {
-        &.active {
-          background-color: var(--bgcolor-page-list-group-item-active);
-          border-left-color: $primary;
-        }
-      }
-    }
-  }
-}
-
-/*
- * GROWI Editor
- */
-.layout-root.editing {
-  .main {
-    background-color: hsl(from var(--bgcolor-global) h s calc(l - 2%));
-
-    .page-editor-editor-container {
-      border-right-color: $border-color-theme;
-
-      .navbar-editor {
-        background-color: var(--bgcolor-global); // same color with active tab
-        border-bottom-color: $border-color-theme;
-      }
-    }
-
-    .page-editor-preview-container {
-      background-color: var(--bgcolor-global);
-    }
-  }
-}
-
-/*
- * Preview for editing /Sidebar
- */
-body.editing-sidebar {
-  .page-editor-preview-body {
-    color: var(--color-sidebar-context);
-    background-color: var(--bgcolor-sidebar-context);
-  }
-}
-
-/*
- * GROWI Grid Edit Modal
- */
-.grw-grid-edit-preview {
-  .desktop-preview,
-  .tablet-preview,
-  .mobile-preview {
-    background: var(--bgcolor-global);
-  }
-  .grid-edit-border-for-each-cols {
-    border: 2px solid var(--bgcolor-global);
-  }
-}
-
-.grid-preview-col-0 {
-  background: var.$growi-blue;
-}
-
-.grid-preview-col-1 {
-  background: var(--info);
-}
-
-.grid-preview-col-2 {
-  background: var(--success);
-}
-
-.grid-preview-col-3 {
-  background: var.$growi-green;
-}
-
-/*
- * GROWI comment
- */
-.page-comment-meta .page-comment-revision svg {
-  fill: var(--color-link);
-
-  &:hover {
-    fill: var(--color-link-hover);
-  }
-}
-
-/*
- * GROWI comment form
- */
-.page-comments {
-  .page-comment .page-comment-main,
-  .page-comment-form .comment-form-main {
-    background-color: var(--bgcolor-global);
-
-    &:before {
-      border-right-color: var(--bgcolor-global);
-    }
-
-    .nav.nav-tabs {
-      > li > a.active {
-        background: transparent;
-        border-bottom: solid 1px hsl(from var(--bgcolor-global) h s calc(l - 4%));
-        border-bottom-color: hsl(from var(--bgcolor-global) h s calc(l - 4%));
-      }
-    }
-  }
-}
-
-/*
- * GROWI search result
- */
-.search-result-base {
-  .grw-search-page-nav {
-    background-color: var(--bgcolor-subnav);
-  }
-  .search-control {
-    background-color: var(--bgcolor-global);
-  }
-  .page-list {
-    .highlighted-keyword {
-      background: linear-gradient(transparent 60%, $bgcolor-keyword-highlighted 60%);
-    }
-  }
-}
-
-/*
- * react bootstrap typeahead
- */
-mark.rbt-highlight-text {
-  // Temporarily the highlight color is black
-  color: black;
-}
-
-/*
- * GROWI page content footer
- */
-.page-content-footer {
-  background-color: hsl(from var(--bgcolor-global) h s calc(l - 2%));
-  border-top-color: $border-color-theme;
-}
-
-/*
- * GROWI admin page #layoutOptions #themeOptions
- */
-.admin-page {
-  #layoutOptions {
-    .customize-layout-card {
-      &.border-active {
-        border-color: $color-theme-color-box;
-      }
-    }
-  }
-
-  #themeOptions {
-    .theme-option-container.active {
-      .theme-option-name {
-        color: var(--color-global);
-      }
-      a {
-        background-color: $color-theme-color-box;
-        border-color: $color-theme-color-box;
-      }
-    }
-  }
-}
-
-/*
- * HackMd
- */
-.bg-box {
-  background-color: var(--bgcolor-global);
-}
-
-.grw-fab {
-  .btn-create-page {
-    fill: color-yiq($primary);
-  }
-
-  .btn-scroll-to-top {
-    fill: $gray-900;
-  }
-}
-
-/*
-  Slack Integration
-*/
-.selecting-bot-type {
-  .bot-type-disc {
-    width: 20px;
-  }
-}
-
-/*
-  In App Notification
-*/
-.grw-unopend-notification {
-  width: 7px;
-  height: 7px;
-  background-color: $primary;
-}
-
-/*
-Emoji picker modal
-*/
-.emoji-picker-modal {
-  background-color: transparent !important;
-}
+  //   .grw-sidebar-nav-primary-container {
+  //     .btn.active {
+  //       i {
+  //         text-shadow: var(--text-shadow-sidebar-nav-item-active);
+  //       }
+  //       // fukidashi
+  //       &:after {
+  //         border-right-color: var(--bgcolor-sidebar-context)
+  //         ;
+  //       }
+  //     }
+  //   }
+
+  //   .grw-sidebar-content-header {
+  //     .grw-btn-reload {
+  //       color: $color-btn-reload-in-sidebar;
+  //     }
+
+  //     .grw-recent-changes-resize-button {
+  //       .custom-control-label::before {
+  //         background-color: $primary;
+  //       }
+
+  //       .custom-control-label::after {
+  //         background-color: var(--bgcolor-global);
+  //       }
+
+  //       .custom-control-input:not(:checked) + .custom-control-label::before {
+  //         color: var(--bgcolor-global);
+  //       }
+
+  //       .custom-control-input:checked + .custom-control-label::before {
+  //         color: var(--bgcolor-global);
+  //         background-color: $primary;
+  //         // border-color: $primary !important;
+  //       }
+  //       .custom-control-input:checked + .custom-control-label::after {
+  //         color: var(--bgcolor-global);
+  //       }
+  //     }
+  //   }
+
+  //   .grw-pagetree {
+  //     .list-group-item {
+  //       .grw-pagetree-title-anchor {
+  //         color: inherit;
+  //       }
+  //     }
+  //   }
+  //   .grw-pagetree-footer {
+  //     .h5.grw-private-legacy-pages-anchor {
+  //       color: inherit;
+  //     }
+  //   }
+
+  //   .grw-recent-changes {
+  //     .list-group {
+  //       .list-group-item {
+  //         background-color: transparent;
+
+  //         .icon-lock {
+  //           color: var(--color-link);
+  //         }
+
+  //         .grw-recent-changes-item-lower {
+  //           color: $gray-500;
+
+  //           svg {
+  //             fill: $gray-500;
+  //           }
+  //         }
+  //       }
+  //     }
+  //   }
+}
+
+// /*
+//  * Icon
+//  */
+// .editor-container .navbar-editor svg {
+//   fill: var(--color-editor-icons);
+// }
+
+// // page preview button in link form
+// .btn-page-preview svg {
+//   fill: white;
+// }
+
+// /*
+//  * Modal
+//  */
+// .modal {
+//   .modal-header {
+//     border-bottom-color: $border-color-theme;
+//     .modal-title {
+//       color: $color-modal-header;
+//     }
+//     .close {
+//       color: $color-modal-header;
+//       opacity: 0.5;
+//       &:hover {
+//         opacity: 0.9;
+//       }
+//     }
+//   }
+
+//   .modal-content {
+//     background-color: var(--bgcolor-global);
+//   }
+
+//   .modal-footer {
+//     border-top-color: $border-color-theme;
+//   }
+// }
+
+// .grw-custom-nav-tab {
+//   .nav-item {
+//     &:hover,
+//     &:focus {
+//       background-color: var(--color-link); opacity:0.9;
+//     }
+//     .nav-link {
+//       -webkit-appearance: none;
+//       color: var(--color-link);
+//       svg {
+//         fill: var(--color-link);
+//       }
+
+//       // Disabled state lightens text
+//       &.disabled {
+//         color: $nav-link-disabled-color;
+//         svg {
+//           fill: $nav-link-disabled-color;
+//         }
+//       }
+//     }
+//   }
+
+//   .grw-nav-slide-hr {
+//     border-color: var(--color-link);
+//   }
+// }
+
+// .grw-page-accessories-modal {
+//   .modal-header {
+//     .close {
+//       color: $secondary;
+//     }
+//   }
+// }
+
+// /*
+//  * cards
+//  */
+// .card.well {
+//   color: var(--color-global);
+//   background-color: var(--bgcolor-card);
+//   border-color: $light;
+//   box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+// }
+
+// .admin-bot-card {
+//   .grw-botcard-title-active {
+//     color: $gray-200;
+//   }
+// }
+
+// /*
+//  * Form Slider
+//  */
+// .admin-page {
+//   span.slider {
+//     background-color: $gray-300;
+
+//     &:before {
+//       background-color: white;
+//     }
+//   }
+
+//   input:checked + .slider {
+//     background-color: #007bff;
+//   }
+
+//   input:focus + .slider {
+//     box-shadow: 0 0 1px #007bff;
+//   }
+// }
+
+// /*
+//  * GROWI wiki
+//  */
+// .wiki {
+//   h1,
+//   h2,
+//   h3,
+//   h4,
+//   h5,
+//   h6,
+//   h7 {
+//     &.blink {
+//       @include mixins.blink-bgcolor($bgcolor-blinked-section);
+//     }
+//   }
+
+//   .highlighted-keyword {
+//     background: linear-gradient(transparent 60%, $bgcolor-keyword-highlighted 60%);
+//   }
+
+//   a {
+//     color: var(--color-link-wiki);
+
+//     &:hover {
+//       color: var(--color-link-wiki-hover);
+//     }
+//   }
+
+//   // table with handsontable modal button
+//   .editable-with-handsontable {
+//     button {
+//       color: var(--color-link-wiki);
+//     }
+
+//     button:hover {
+//       color: var(--color-link-wiki-hover);
+//     }
+//   }
+// }
+
+// /*
+//  * GROWI page-list
+//  */
+// .page-list {
+//   // List group
+//   .list-group {
+//     .list-group-item {
+//       a {
+//         svg {
+//           fill: var(--color-global);
+//         }
+
+//         @include hover() {
+//           svg {
+//             fill: var(--color-global);
+//           }
+//         }
+//       }
+
+//       .page-list-meta {
+//         color: var(--color-page-list-group-item-meta);
+//         svg {
+//           fill: var(--color-page-list-group-item-meta);
+//         }
+//       }
+
+//       &.list-group-item-action {
+//         --bgcolor-page-list-group-item-active: hsl(from var(--bgcolor-global) h s calc(l + 76%));
+//         &.active {
+//           background-color: var(--bgcolor-page-list-group-item-active);
+//           border-left-color: $primary;
+//         }
+//       }
+//     }
+//   }
+// }
+
+// /*
+//  * GROWI Editor
+//  */
+// .layout-root.editing {
+//   --bgcolor-global-darken2: hsl(from var(--bgcolor-global) h s calc(l - 2%));
+//   .main {
+//     background-color: var(--bgcolor-global-darken2);
+
+//     .page-editor-editor-container {
+//       border-right-color: $border-color-theme;
+
+//       .navbar-editor {
+//         background-color: var(--bgcolor-global); // same color with active tab
+//         border-bottom-color: $border-color-theme;
+//       }
+//     }
+
+//     .page-editor-preview-container {
+//       background-color: var(--bgcolor-global);
+//     }
+//   }
+// }
+
+// /*
+//  * Preview for editing /Sidebar
+//  */
+// body.editing-sidebar {
+//   .page-editor-preview-body {
+//     color: var(--color-sidebar-context);
+//     background-color: var(--bgcolor-sidebar-context);
+//   }
+// }
+
+// /*
+//  * GROWI Grid Edit Modal
+//  */
+// .grw-grid-edit-preview {
+//   .desktop-preview,
+//   .tablet-preview,
+//   .mobile-preview {
+//     background: var(--bgcolor-global);
+//   }
+//   .grid-edit-border-for-each-cols {
+//     border: 2px solid var(--bgcolor-global);
+//   }
+// }
+
+// .grid-preview-col-0 {
+//   background: var.$growi-blue;
+// }
+
+// .grid-preview-col-1 {
+//   background: var(--info);
+// }
+
+// .grid-preview-col-2 {
+//   background: var(--success);
+// }
+
+// .grid-preview-col-3 {
+//   background: var.$growi-green;
+// }
+
+// /*
+//  * GROWI comment
+//  */
+// .page-comment-meta .page-comment-revision svg {
+//   fill: var(--color-link);
+
+//   &:hover {
+//     fill: var(--color-link-hover);
+//   }
+// }
+
+// /*
+//  * GROWI comment form
+//  */
+// .page-comments {
+//   .page-comment .page-comment-main,
+//   .page-comment-form .comment-form-main {
+//     background-color: var(--bgcolor-global);
+
+//     &:before {
+//       border-right-color: var(--bgcolor-global);
+//     }
+
+//     .nav.nav-tabs {
+//       --border-bottom-color: hsl(from var(--bgcolor-global) h s calc(l - 4%));
+//       > li > a.active {
+//         background: transparent;
+//         border-bottom: solid 1px var(--border-bottom-color);
+//         border-bottom-color: var(--border-bottom-color);
+//       }
+//     }
+//   }
+// }
+
+// /*
+//  * GROWI search result
+//  */
+// .search-result-base {
+//   .grw-search-page-nav {
+//     background-color: var(--bgcolor-subnav);
+//   }
+//   .search-control {
+//     background-color: var(--bgcolor-global);
+//   }
+//   .page-list {
+//     .highlighted-keyword {
+//       background: linear-gradient(transparent 60%, $bgcolor-keyword-highlighted 60%);
+//     }
+//   }
+// }
+
+// /*
+//  * react bootstrap typeahead
+//  */
+// mark.rbt-highlight-text {
+//   // Temporarily the highlight color is black
+//   color: black;
+// }
+
+// /*
+//  * GROWI page content footer
+//  */
+// .page-content-footer {
+//   --bgcolor-global-darken2: hsl(from var(--bgcolor-global) h s calc(l - 2%));
+//   background-color: var(--bgcolor-global-darken2);
+//   border-top-color: $border-color-theme;
+// }
+
+// /*
+//  * GROWI admin page #layoutOptions #themeOptions
+//  */
+// .admin-page {
+//   #layoutOptions {
+//     .customize-layout-card {
+//       &.border-active {
+//         border-color: $color-theme-color-box;
+//       }
+//     }
+//   }
+
+//   #themeOptions {
+//     .theme-option-container.active {
+//       .theme-option-name {
+//         color: var(--color-global);
+//       }
+//       a {
+//         background-color: $color-theme-color-box;
+//         border-color: $color-theme-color-box;
+//       }
+//     }
+//   }
+// }
+
+// /*
+//  * HackMd
+//  */
+// .bg-box {
+//   background-color: var(--bgcolor-global);
+// }
+
+// .grw-fab {
+//   .btn-create-page {
+//     fill: color-yiq($primary);
+//   }
+
+//   .btn-scroll-to-top {
+//     fill: $gray-900;
+//   }
+// }
+
+// /*
+//   Slack Integration
+// */
+// .selecting-bot-type {
+//   .bot-type-disc {
+//     width: 20px;
+//   }
+// }
+
+// /*
+//   In App Notification
+// */
+// .grw-unopend-notification {
+//   width: 7px;
+//   height: 7px;
+//   background-color: $primary;
+// }
+
+// /*
+// Emoji picker modal
+// */
+// .emoji-picker-modal {
+//   background-color: transparent !important;
+// }

+ 56 - 0
packages/app/src/styles/theme/_hsl-functions.scss

@@ -0,0 +1,56 @@
+@use '~bootstrap/scss/functions' as bs;
+
+// @function getHS($color-hsl) {
+//   // remove "var(" and ")"
+//   $color: str-replace($color-hsl, 'var(');
+//   $color: str-replace($color, ')');
+//   @return var(#{$color+'-hs'});
+// }
+// @function getL($color-hsl) {
+//   // remove "var(" and ")"
+//   // $color: str-replace(str-replace($color-hsl, 'var('), ')');
+//   $color: str-replace($color-hsl, 'var(');
+//   $color: str-replace($color, ')');
+//   @return var(#{$color+'-l'});
+// }
+
+// @function contrast($color-hsl) {
+//   $color-hs: getHS($color-hsl);
+//   $color-l: getL($color-hsl);
+//   @return hsl($color-hs, clamp(10%, calc((100% - $color-l - 51% ) * 1000), 95%));
+// }
+
+// @function lighten($color-hsl, $degrees) {
+//   $color-hs: getHS($color-hsl);
+//   $color-l: getL($color-hsl);
+//   @return hsl($color-hs, calc($color-l + $degrees));
+// }
+// @function darken($color-hsl, $degrees) {
+//   $color-hs: getHS($color-hsl);
+//   $color-l: getL($color-hsl);
+//   @return hsl($color-hs, calc($color-l - $degrees));
+// }
+
+@function contrast($color, $darken-degrees: 0%) {
+  $color: bs.str-replace($color, 'var(');
+  $color: bs.str-replace($color, ')');
+  $color-hs: var(#{$color+'-hs'});
+  $color-l: var(#{$color+'-l'});
+  // @return hsl($color-hs, clamp(10%, calc((100% - $color-l - 51% ) * 1000), 95%));
+  @return hsl($color-hs, clamp(10%, calc((100% - $color-l - $darken-degrees - 51% ) * 1000), 95%));
+}
+
+@function lighten($color, $degrees) {
+  $color: bs.str-replace($color, 'var(');
+  $color: bs.str-replace($color, ')');
+  $color-hs: var(#{$color+'-hs'});
+  $color-l: var(#{$color+'-l'});
+  @return hsl($color-hs, calc($color-l + $degrees));
+}
+@function darken($color, $degrees) {
+  $color: bs.str-replace($color, 'var(');
+  $color: bs.str-replace($color, ')');
+  $color-hs: var(#{$color+'-hs'});
+  $color-l: var(#{$color+'-l'});
+  @return hsl($color-hs, calc($color-l - $degrees));
+}

+ 21 - 0
packages/app/src/styles/theme/_override-functions.scss

@@ -0,0 +1,21 @@
+@use './hsl-functions' as hsl;
+
+@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
+  @return hsl.contrast($color);
+}
+
+@function lighten($color, $degrees) {
+  @return hsl.lighten($color, $degrees);
+}
+
+@function darken($color, $degrees) {
+  @return hsl.darken($color, $degrees);
+}
+
+@function mix($color1, $color2, $degrees) {
+  @return $color1;
+}
+
+@function rgba($color, $degrees) {
+  @return $color;
+}

+ 7 - 6
packages/app/src/styles/theme/_reboot-bootstrap-buttons.scss

@@ -1,21 +1,22 @@
 .btn-link {
-  color: var(--link-color);
+  color: var(--color-link);
   svg {
-    fill: var(--link-color);
+    fill: var(--color-link);
   }
 
   @include hover() {
-    color: var(--link-hover-color);
+    color: var(--color-link-hover);
     svg {
-      fill: var(--link-hover-color);
+      fill: var(--color-link-hover);
     }
   }
 
   &:disabled,
   &.disabled {
-    color: var(--btn-link-disabled-color);
+    color: var(--color-link-disabled, $gray-500);
     svg {
-      fill: var(--btn-link-disabled-color);
+      fill: var(--color-link-disabled, $gray-500);
     }
   }
 }
+

+ 8 - 8
packages/app/src/styles/theme/_reboot-bootstrap-colors.scss

@@ -14,32 +14,32 @@
 // 3. Set an explicit initial text-align value so that we can later use
 //    the `inherit` value on things like `<th>` elements.
 
-&, body {
-  color: var(--body-color);
-  background-color: var(--body-bg); // 2
+html, body {
+  color: var(--color-global);
+  background-color: var(--bgcolor-global); // 2
 
   svg {
-    fill: var(--body-color);
+    fill: var(--color-global);
   }
 }
 
 // Links
 
 a {
-  color: var(--link-color);
+  color: var(--color-link);
   text-decoration: $link-decoration;
   background-color: transparent; // Remove the gray background on active links in IE 10.
 
   svg {
-    fill: var(--link-color);
+    fill: var(--color-link);
   }
 
   @include hover() {
-    color: var(--link-hover-color);
+    color: var(--color-link-hover);
     text-decoration: $link-hover-decoration;
 
     svg {
-      fill: var(--link-hover-color);
+      fill: var(--color-link-hover);
     }
   }
 }

+ 2 - 1
packages/app/src/styles/theme/_reboot-bootstrap-dropdown.scss

@@ -10,6 +10,7 @@
 }
 
 .dropdown-item {
+  --bgcolor-dropdown-link-hover: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 15%));
   color: $dropdown-link-color;
   svg {
     fill: $dropdown-link-color;
@@ -21,7 +22,7 @@
       fill: $dropdown-link-hover-color;
     }
 
-    @include gradient-bg($dropdown-link-hover-bg);
+    @include gradient-bg(var(--dropdown-link-hover-bg));
   }
 
   &:active,

+ 13 - 4
packages/app/src/styles/theme/_reboot-bootstrap-theme-colors.scss

@@ -57,16 +57,16 @@
       border-color: $color;
     }
     .custom-control-input:checked + .custom-control-label::after {
-      color: $bgcolor-global;
+      color: var(--bgcolor-global);
     }
     .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
-      color: $bgcolor-global;
+      color: var(--bgcolor-global);
       background-color: $color;
       border-color: $color;
     }
     .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
-      color: $bgcolor-global;
-      background-color: $bgcolor-global;
+      color: var(--bgcolor-global);
+      background-color: var(--bgcolor-global);
       border-color: $input-focus-border-color;
     }
   }
@@ -80,6 +80,15 @@
       theme-color-level($color, $alert-color-level)
     );
   }
+  // Alert link
+  :root, .wiki {
+    .alert.alert-#{$color} {
+      a,
+      a:hover {
+        color: theme-color-level($color, $alert-color-level - 2);
+      }
+    }
+  }
 }
 
 @each $color, $value in $theme-colors {

+ 64 - 0
packages/app/src/styles/theme/mixins/_hsl-button.scss

@@ -0,0 +1,64 @@
+@use '../../bootstrap/init' as bs;
+@use '../hsl-functions' as hsl;
+
+// @mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {
+@mixin button-variant($background, $border, $hover-background-darken-degrees: 7.5%, $hover-border-darken-degrees: 10%, $active-background-darken-degrees: 10%, $active-border-darken-degrees: 12.5%) {
+  $hover-background: hsl.darken($background, $hover-background-darken-degrees);  // DO NOT ... twice
+  $hover-border: hsl.darken($border, $hover-border-darken-degrees);  // DO NOT ... twice
+
+  color: hsl.contrast($background);
+  @include bs.gradient-bg($background);
+  border-color: $border;
+  // @include box-shadow($btn-box-shadow);
+
+  @include bs.hover() {
+    color: hsl.contrast($background, $hover-background-darken-degrees);
+    @include bs.gradient-bg($hover-background);
+    border-color: $hover-border;
+  }
+
+  &:focus,
+  &.focus {
+    color: hsl.contrast($background, $hover-background-darken-degrees);
+    @include bs.gradient-bg($hover-background);
+    border-color: $hover-border;;
+    // @if $enable-shadows {
+    //   @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
+    // } @else {
+    //   // Avoid using mixin so we can pass custom focus shadow properly
+    //   box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+    // }
+  }
+
+  // // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    color: hsl.contrast($background);
+    background-color: $background;
+    border-color: $border;
+    // Remove CSS gradients if they're enabled
+    @if bs.$enable-gradients {
+      background-image: none;
+    }
+  }
+
+  // &:not(:disabled):not(.disabled):active,
+  // &:not(:disabled):not(.disabled).active,
+  // .show > &.dropdown-toggle {
+  //   color: color-yiq($active-background);
+  //   background-color: $active-background;
+  //   @if $enable-gradients {
+  //     background-image: none; // Remove the gradient for the pressed/active state
+  //   }
+  //   border-color: $active-border;
+
+  //   &:focus {
+  //     // @if $enable-shadows and $btn-active-box-shadow != none {
+  //     //   @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
+  //     // } @else {
+  //     //   // Avoid using mixin so we can pass custom focus shadow properly
+  //     //   box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+  //     // }
+  //   }
+  // }
+}

+ 0 - 1
packages/preset-themes/src/styles/bootstrap/_variables.scss

@@ -90,7 +90,6 @@ $border-radius-lg: 8px;
 // Buttons
 //
 // For each of Bootstrap's buttons, define text, background, and border color.
-$btn-link-disabled-color: $gray-500;
 $btn-focus-box-shadow: none;
 $btn-active-box-shadow: none;
 

+ 65 - 32
packages/preset-themes/src/styles/default.scss

@@ -17,11 +17,19 @@
 //== Light Mode
 //
 :root[data-theme='light'] {
-  --primary: #122c55;
+  --primary: hsl(var(--primary-hs),var(--primary-l));
+  --primary-hs: 216.7,65%;
+  --primary-l: 20.2%;
+  --accent: #209fd8;
+  --accent-hs: 216.7,65%;
+  --accent-l: 20.2%;
   $accent: #209fd8;
 
+
   // Background colors
-  --bgcolor-global: white;
+  --bgcolor-global: hsl(var(--bgcolor-global-hs),var(--bgcolor-global-l));
+  --bgcolor-global-hs: 0,0%;
+  --bgcolor-global-l: 100%;
   --body-bg: var(--bgcolor-global);
   $bgcolor-inline-code: $gray-100; //optional
   --bgcolor-card: #{$gray-50};
@@ -29,24 +37,27 @@
   //$bgcolor-keyword-highlighted: $grw-marker-yellow;
 
   // Font colors
-  --color-global: #112744;
-  --body-color: var(--color-global);
+  --color-global: hsl(var(--color-global-hs),var(--color-global-l));
+  --color-global-hs: 214.1,60%;
+  --color-global-l: 16.7%;
   $color-reversal: $light;
   // $color-header: #2b2b2b;
-  --color-link: #1938ba;
-  --link-color: var(--color-link);
-  --link-hover-color: var(--color-link-hover);
-  --color-link-hover: hsl(from var(--color-link) h s calc(l 20%));
+  --color-link: hsl(var(--color-link-hs),var(--color-link-l));
+  --color-link-hs: 228.4,76.3%;
+  --color-link-l: 41.4%;
+  --color-link-hover: hsl(var(--color-link-hs),calc(var(--color-link-l) + 20%));
   --color-link-wiki: var(--color-link);
-  --color-link-wiki-hover:  hsl(from var(--color-link-wiki) h s calc(l 20%));
-  --color-link-nabvar: #{gray-500};
+  --color-link-wiki-hs: var(--color-link-hs);
+  --color-link-wiki-l: var(--color-link-l);
+  --color-link-wiki-hover: hsl(var(--color-link-wiki-hs),calc(var(--color-link-wiki-l) + 20%));
+  --color-link-nabvar: #{$gray-500};
   $color-inline-code: darken($red, 15%); // optional
 
   // List Group colors
   --color-list: var(--color-global); // optional
-  // --bgcolor-list: var(--bgcolor-global); // optional
+  --bgcolor-list: var(--bgcolor-global); // optional
   // --color-list-hover: va(--color-global); // optional
-  --bgcolor-list-hover: hsl(from var(--bgcolor-global) h s calc(l 3%)); // optional
+  --bgcolor-list-hover: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 3%));// optional
   // --color-list-active:white ; // optional
   // $bgcolor-list-active: $primary; // optional
 
@@ -59,17 +70,21 @@
 
   // Navbar
   --bgcolor-navbar: #{$gray-900};
+  --bgcolor-navbar-h:0;
+  --bgcolor-navbar-s:0%;
+  --bgcolor-navbar-l:12.94%;
   $bgcolor-search-top-dropdown: $accent;
   $border-image-navbar: linear-gradient(to right, #36c9ff 0%, #36c9ff 33%, #7926ff 66%, #ff2eff 100%);
 
   // Logo colors
   --bgcolor-logo: var(--bgcolor-navbar);
-  --fillcolor-logo-mark: lighten(desaturate(var(--bgcolor-navbar), 10%), 15%);
-
+  --fillcolor-logo-mark: hsl(var(--bgcolor-navbar-h),calc(var(--bgcolor-navbar-s) - 20%),calc(var(--bgcolor-navbar-l) + 15%));
   // Sidebar
   --bgcolor-sidebar: var(--primary);
   $bgcolor-sidebar: #122c55;
-  $bgcolor-sidebar-nav-item-active: rgba(black, 0.37); // optional
+  --bgcolor-sidebar-hs: var(--primary-hs);
+  --bgcolor-sidebar-l: var(--primary-l);
+  --bgcolor-sidebar-nav-item-active: rgba(black, 0.37); // optional
   --text-shadow-sidebar-nav-item-active: 0px 0px 10px #0099ff; // optional
   // Sidebar resize button
   $color-resize-button: $color-reversal;
@@ -78,13 +93,13 @@
   $bgcolor-resize-button-hover: lighten($bgcolor-resize-button, 5%);
   // Sidebar contents
   --color-sidebar-context: var(--color-global);
-
+  --color-sidebar-context-hs: var(--color-global-hs);
+  --color-sidebar-context-l: var(--color-global-l);
   // Sidebar list group
-  --bgcolor-sidebar-list-group: #{gray-50}; // optional
+  --bgcolor-sidebar-list-group: #{$gray-50}; // optional
 
   // Subnavigation
-  // --bgcolor-subnav: #fafafa; // optional
-
+  --bgcolor-subnav: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 3%));
   // Tabs
   // $color-nav-tabs-link-active: #; //optional
   // $bordercolor-nav-tabs-hover: # # $bordercolor-nav-tabs; // optional
@@ -108,7 +123,8 @@
   $color-theme-color-box: lighten($primary, 20%);
 
   @import './theme/apply-colors';
-  @import './theme/apply-colors-light';
+  // @import './theme/apply-colors-light';
+  // @import '/packages/app/src/styles/theme/apply-colors-light-new';
 
   // Button
   .btn-group.grw-page-editor-mode-manager {
@@ -122,32 +138,44 @@
 //
 :root[data-theme='dark'] {
   --primary: #115cd3;
+  --primary-hs: 216.8,85.1%;
+  --prymary-l: 44.7;
   $accent: #db00c2;
 
   // Background colors
   --bgcolor-global: #131418;
+  --bgcolor-global-hs: 228,11.6%;
+  --bgcolor-global-l: 9.4%;
+  --body-bg: var(--bgcolor-global);
   $bgcolor-inline-code: #1f1f22; //optional
-  --bgcolor-card: hsl(from var(--bgcolor-global) h s calc(l - 5%));
+  --bgcolor-card: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 5%));
   $bgcolor-blinked-section: rgba($primary, 0.4);
   $bgcolor-keyword-highlighted: darken($grw-marker-red, 30%);
 
   // Font colors
   --color-global: #{$gray-400};
-  $color-global: var(--color-global);
+  --color-global-hs: 0,0%;
+  --color-global-l: 74%;
   $color-reversal: $gray-900;
   // $color-header: desaturate($primary, 20%);
   --color-link: #7b9ad5;
-  --color-link-hover: hsl(from var(--color-link) h s calc(l 10%));
+  --link-color: var(--color-link);
+  --color-link-hs: 219.3,51.7%;
+  --color-link-l: 65.9%;
+  --color-link-hover: hsl(var(--color-link-hs), calc(var(--color-link-l) + 10%));
+  --link-hover-color: var(--color-link-hover);
   --color-link-wiki: var(--color-link);
-  --color-link-wiki-hover: hsl(from var(--color-link-wiki) h s calc(l 10%));
+  --color-link-wiki-hs: var(--color-link-hs);
+  --color-link-wiki-l: var(--color-link-l);
+  --color-link-wiki-hover: hsl(var(--color-link-wiki-hs), calc(var(--color-link-wiki-l) + 10%));
   --color-link-nabvar: #a7a7a7;
   --color-inline-code: #c7254e; // optional
 
   // List Group colors
   --color-list: var(--color-global); // optional
-  // --bgcolor-list: var(--bgcolor-global); // optional
+  --bgcolor-list: var(--bgcolor-global); // optional
   // --color-list-hover: va(--color-global); // optional
-  --bgcolor-list-hover: hsl(from var(--bgcolor-global) h s calc(l 3%)); // optional
+  --bgcolor-list-hover: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 3%)); // optional
   // --color-list-active:white ; // optional
   // $bgcolor-list-active: $primary; // optional
 
@@ -164,13 +192,15 @@
   $border-image-navbar: linear-gradient(to right, #44bfe3 0%, #b04aff 50%, #ff1794 100%);
 
   // Logo colors
-  $bgcolor-logo: var(--bgcolor-navbar);
+  --bgcolor-logo: var(--bgcolor-navbar);
   --fillcolor-logo-mark: #{$gray-700};
 
   // Sidebar
-  --bgcolor-sidebar: #122c55;
+  --bgcolor-sidebar: hsl(var(--bgcolor-sidebar-hs),var(---gcolor-sidebar-l));
   $bgcolor-sidebar: #122c55;
-  $bgcolor-sidebar-nav-item-active: rgba(#969494, 0.3); // optional
+  --bgcolor-sidebar-hs: 216.7,65%;
+  --bgcolor-sidebar-l: 33.3%;
+  --bgcolor-sidebar-nav-item-active: rgba(#969494, 0.3); // optional
   --text-shadow-sidebar-nav-item-active: 0px 0px 10px #0099ff; // optional
   // Sidebar resize button
   $color-resize-button: white;
@@ -179,12 +209,13 @@
   $bgcolor-resize-button-hover: darken($bgcolor-resize-button, 5%);
   // Sidebar contents
   --color-sidebar-context: var(--color-global);
-
+  --color-sidebar-context-hs: var(--color-global-hs);
+  --color-sidebar-context-l: var(--color-global-l);
   // Sidebar list group
   --bgcolor-sidebar-list-group: #1c2a3e; // optional
 
   // Subnavigation
-  --bgcolor-subnav: hsl(from var(--bgcolor-global) h s calc(l 4%)); // optional
+  --bgcolor-subnav: --bgcolor-list-hover: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 3%));  // optional
 
   // Tabs
   $bordercolor-nav-tabs: $gray-700; // optional
@@ -207,7 +238,9 @@
   $color-theme-color-box: $primary;
 
   @import './theme/apply-colors';
-  @import './theme/apply-colors-dark';
+  // @import './theme/apply-colors-dark';
+
+  // @import '/packages/app/src/styles/theme/apply-colors-dark-new';
 
   //Button
   .btn-group.grw-page-editor-mode-manager {

+ 90 - 11
packages/preset-themes/src/styles/theme/_apply-colors-dark.scss

@@ -4,26 +4,45 @@
 @use './mixins/count-badge';
 
 // determine optional variables
+$color-list: var(--color-list,var(--color-global));
+$bgcolor-list: var(--bgcolor-list,var(--bgcolor-global));
+$color-list-hover: var(--color-list-hover,var(--color-global));
 $color-list-active: $color-reversal !default;
-$bgcolor-list-active: $primary !default;
+$bgcolor-list-active: var(--bgcolor-list-active,var(--primary));
+$bgcolor-subnav: var(--bgcolor-subnav);
+$color-table: var(--color-table,white);
 $bgcolor-table: #343a40 !default;
 $border-color-table: lighten($bgcolor-table, 7.5%) !default;
 $color-table-hover: rgba(white, 0.075) !default;
 $bgcolor-table-hover: lighten($bgcolor-table, 7.5%) !default;
+$bgcolor-sidebar-list-group: var(--bgcolor-sidebar-list-group,var(--bgcolor-list));
 $color-tags: #949494 !default;
 $bgcolor-tags: $dark !default;
 $border-color-global: $gray-500 !default;
 $border-color-toc: $border-color-global !default;
+$color-dropdown: var(--color-dropdown,var(--color-global));
+$bgcolor-dropdown: var(--bgcolor-dropdown,var(--bgcolor-global));
+$color-dropdown-link: var(--color-dropdown-link,var(--color-global));
 $color-dropdown-link-hover: $light !default;
+$bgcolor-dropdown-link-hover: var(--bgcolor-dropdown-link-hover);
 $color-dropdown-link-active: $light !default;
-$bgcolor-dropdown-link-active: $primary !default;
+$bgcolor-dropdown-link-active: var(--bgcolor-dropdown-link-active,var(--primary));
 
 // override bootstrap variables
 $text-muted: $gray-550;
+$table-dark-color: var(--color-table);
 $table-dark-bg: $bgcolor-table;
 $table-dark-border-color: $border-color-table;
+$table-dark-hover-color: var(--color-table-hover);
 $table-dark-hover-bg: $bgcolor-table-hover;
 $border-color: $border-color-global;
+$dropdown-color: var(--color-dropdown);
+$dropdown-bg: var(--bgcolor-dropdown);
+$dropdown-link-color: var(--color-dropdown-link);
+$dropdown-link-hover-color: var(--color-dropdown-link-hover);
+$dropdown-link-hover-bg: var(--bgcolor-dropdown-link-hover);
+$dropdown-link-active-color: var(--color-dropdown-link-active);
+$dropdown-link-active-bg: bar(--bgcolor-dropdown-link-active);
 
 @import './mixins/list-group';
 @import './reboot-bootstrap-text';
@@ -32,6 +51,14 @@ $border-color: $border-color-global;
 @import './reboot-bootstrap-dropdown';
 
 // List Group
+@include override-list-group-item(
+  var(--color-list),
+  var(--bgcolor-sidebar-list-group),
+  var(--color-list-hover),
+  var(--bgcolor-list-hover),
+  var(--color-list-active),
+  var(--bgcolor-list-active)
+);
 /*
   * Form
   */
@@ -39,8 +66,11 @@ input.form-control,
 select.form-control,
 select.custom-select,
 textarea.form-control {
+  color: var(--color-global);
+  background-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 5%));
   border-color: $border-color-global;
   &:focus {
+    background-color: var(--bgcolor-global);
   }
   // FIXME: accent color
   // border: 1px solid darken($border, 30%);
@@ -48,6 +78,8 @@ textarea.form-control {
 
 .form-control[disabled],
 .form-control[readonly] {
+  color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 10%));
+  background-color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 5%));
 }
 
 .input-group > .input-group-prepend > .input-group-text {
@@ -65,6 +97,7 @@ textarea.form-control {
 }
 
 label.custom-control-label::before {
+  background-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 5%));
 }
 
 /*
@@ -198,6 +231,7 @@ ul.pagination {
   .page-list-ul {
     > li {
       > span.page-list-meta {
+        color: hsl(var(--color-global-hs),calc(var(--color-global-l) - 10%));
       }
     }
   }
@@ -205,10 +239,13 @@ ul.pagination {
   // List group
   .list-group-item {
     &.active {
+      background-color: hsl(var(--color-global-hs),calc(var(--color-global-l) - 10%));
     }
     .list-group-item-action:hover {
+      background-color: var(--bgcolor-list-hover);
     }
     .page-list-snippet {
+      color: hsl(var(--color-global-hs),calc(var(--color-global-l) - 10%));
     }
   }
 }
@@ -218,6 +255,7 @@ ul.pagination {
  */
 .revision-toc-content {
   ::marker {
+    color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 30%));
   }
 }
 
@@ -225,14 +263,17 @@ ul.pagination {
  * GROWI subnavigation
  */
 .grw-subnav {
+  background-color: var(--bgcolor-subnav);
 }
 
 .grw-subnav-fixed-container .grw-subnav {
+  background-color: var(--bgcolor-subnav); opacity:0.85;
 }
 
 .grw-page-editor-mode-manager {
   .btn-outline-primary {
     &:hover {
+      color: var(--primary);
       background-color: $gray-700;
     }
   }
@@ -250,17 +291,48 @@ ul.pagination {
  * GROWI Sidebar
  */
 .grw-sidebar {
-  .grw-pagetree-triangle-btn {
-    @include mixins-buttons.button-outline-svg-icon-variant($secondary, $gray-200);
-  }
-  .btn-page-item-control {
-    @include button-outline-variant($gray-500, $gray-500, $secondary, transparent);
-    @include hover() {
+  // List
+  @include override-list-group-item(
+    var(--color-list),
+    var(--bgcolor-sidebar-list-group),
+    var(--color-list-hover),
+    var(--bgcolor-list-hover),
+    var(--color-list-active),
+    var(--bgcolor-list-active)
+  );
+  // Pagetree
+  .grw-pagetree {
+    --bgcolor-sidebar-context: hsl(var(--primary-hs),calc(var(--primary-l) + 77%));
+    --bgcolor-sidebar-context-hs: var(--primary-hs);
+    --bgcolor-sidebar-context-l: calc(var(--primary-l) + 77%);
+    @include override-list-group-item-for-pagetree(
+      var(--color-sidebar-context),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) + 8%)),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) + 15%)),
+      hsl(var(--color-sidebar-context-hs),calc(var(--color-sidebar-context-l) - 15%)),
+      hsl(var(--color-sidebar-context-hs),calc(var(--color-sidebar-context-l) - 10%)),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) + 18%)),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) + 24%))
+    );
+    .grw-pagetree-triangle-btn {
+      @include mixins-buttons.button-outline-svg-icon-variant($secondary, $gray-200);
     }
-    &:not(:disabled):not(.disabled):active,
-    &:not(:disabled):not(.disabled).active {
+    .btn-page-item-control {
+      @include button-outline-variant($gray-500, $gray-500, $secondary, transparent);
+      @include hover() {
+        background-color: var(--bgcolor-sidebar-context-lighten20);
+      }
+      &:not(:disabled):not(.disabled):active,
+      &:not(:disabled):not(.disabled).active {
+        background-color: var(--bgcolor-sidebar-context-lighten34);
+      }
+      box-shadow: none !important;
+    }
+  }
+  .private-legacy-pages-link {
+    &:hover {
+      background: var(--bgcolor-list-hover);
     }
-    box-shadow: none !important;
   }
 }
 
@@ -281,6 +353,7 @@ ul.pagination {
  * Popover
  */
 .popover {
+  background-color: var(--bgcolor-global);
   border-color: $secondary;
   .popover-header {
     color: $white;
@@ -297,6 +370,7 @@ ul.pagination {
     }
 
     &::after {
+      border-top-color: var(--bgcolor-global);
     }
   }
   &.bs-popover-bottom .arrow {
@@ -305,6 +379,7 @@ ul.pagination {
     }
 
     &::after {
+      border-bottom-color: var(--bgcolor-global);
     }
   }
   &.bs-popover-right .arrow {
@@ -313,6 +388,7 @@ ul.pagination {
     }
 
     &::after {
+      border-right-color: var(--bgcolor-global);
     }
   }
   &.bs-popover-left .arrow {
@@ -321,6 +397,7 @@ ul.pagination {
     }
 
     &::after {
+      border-left-color: var(--bgcolor-global);
     }
   }
 }
@@ -340,6 +417,7 @@ ul.pagination {
   $color-slack: #4b144c;
 
   .form-control {
+    background: var(--bgcolor-global);
   }
 
   .custom-control-label {
@@ -405,6 +483,7 @@ ul.pagination {
 }
 
 .page-comments-row {
+  background: var(--bgcolor-subnav);
 }
 
 /*

+ 60 - 1
packages/preset-themes/src/styles/theme/_apply-colors-light.scss

@@ -4,24 +4,41 @@
 @use './mixins/count-badge';
 
 // determine optional variables
+$color-list: var(--color-list,var(--color-global));
+$bgcolor-list: var(--bgcolor-list,var(--bgcolor-global));
+$color-list-hover: var(--color-list-hover,var(--color-global));
 $bgcolor-list-active: lighten($primary, 65%) !default;
 $color-list-active: color-yiq($bgcolor-list-active) !default;
+$color-table: var(--color-table,var(--color-global));
 $bgcolor-table: null !default;
 $border-color-table: $gray-200 !default;
+$color-table-hover: var(--color-table-hover,var(--color-table));
 $bgcolor-table-hover: rgba(black, 0.075) !default;
+$bgcolor-sidebar-list-group: var(--bgcolor-sidebar-list-group,var(--bgcolor-list));
 $color-tags: $secondary !default;
 $bgcolor-tags: $gray-200 !default;
 $border-color-global: $gray-300 !default;
 $border-color-toc: $border-color-global !default;
-$color-dropdown-link-active: $color-reversal !default;
+$color-dropdown: var(--color-dropdown,var(--color-global));
+$color-dropdown-link: var(--color-dropdown-link,var(--color-global));
+$color-dropdown-link-hover: var(--color-dropdown-link-hover,var(--color-global));
+$color-dropdown-link-active: var(--color-reversal);
 $bgcolor-dropdown-link-active: $primary !default;
 
+
 // override bootstrap variables
 $text-muted: $gray-500;
+$table-color: var(--color-table);
 $table-bg: $bgcolor-table;
 $table-border-color: $border-color-table;
+$table-hover-color: var(--color-table-hover);
 $table-hover-bg: $bgcolor-table-hover;
 $border-color: $border-color-global;
+$dropdown-color: var(--color-dropdown);
+$dropdown-link-color: var(--color-dropdown-link);
+$dropdown-link-hover-color: var(--color-dropdown-link-hover);
+$dropdown-link-active-color: var(--color-dropdown-link-active);
+$dropdown-link-active-bg: var(--bgcolor-dropdown-link-active);
 
 @import './mixins/list-group';
 @import './reboot-bootstrap-text';
@@ -30,23 +47,36 @@ $border-color: $border-color-global;
 @import './reboot-bootstrap-dropdown';
 
 // List Group
+@include override-list-group-item(
+  var(--color-list),
+  var(--bgcolor-sidebar-list-group),
+  var(--color-list-hover),
+  var(--bgcolor-list-hover),
+  var(--color-list-active),
+  var(--bgcolor-list-active)
+);
 /*
  * Form
  */
 .form-control {
+  background-color: var(--bgcolor-global);
 }
 
 .form-control::placeholder {
+  color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 20%));
 }
 
 .form-control[disabled],
 .form-control[readonly] {
+  color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 10%));
+  background-color: hsl(var(--color-global-hs),calc(var(--color-global-l) - 5%));
 }
 
 /*
  * card
  */
 .card.card-disabled {
+  background-color: var(--background-color);
   border-color: $gray-200;
 }
 
@@ -133,9 +163,11 @@ $border-color: $border-color-global;
  * GROWI subnavigation
  */
 .grw-subnav {
+  background-color: var(--bgcolor-subnav);
 }
 
 .grw-subnav-fixed-container .grw-subnav {
+  background-color: var(--bgcolor-subnav); opacity:0.85;
 }
 
 .grw-page-editor-mode-manager {
@@ -156,7 +188,18 @@ $border-color: $border-color-global;
  * GROWI Sidebar
  */
 .grw-sidebar {
+  --bgcolor-sidebar-context: hsl(var(--primary-hs),calc(var(--primary-l) + 77%));
+  --bgcolor-sidebar-context-hs: var(--primary-hs);
+  --bgcolor-sidebar-context-l: calc(var(--primary-l) + 77%);
   // List
+  @include override-list-group-item(
+    var(--color-list),
+    var(--bgcolor-sidebar-list-group),
+    var(--color-list-hover),
+    var(--bgcolor-list-hover),
+    var(--color-list-active),
+    var(--bgcolor-list-active)
+  );
   // sidebar-centent-bg
   .grw-navigation-wrap {
     // Drop a shadow on the light theme. The dark theme makes '$ bgcolor-sidebar-context' brighter than the body.
@@ -164,12 +207,22 @@ $border-color: $border-color-global;
   }
   // Pagetree
   .grw-pagetree {
+    @include override-list-group-item-for-pagetree(
+      var(--color-sidebar-context),
+      hsl(var(--bgcolor-sidebar-contexths),calc(var(--bgcolor-sidebar-context-l) - 5%)),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) - 12%)),
+      hsl(var(--color-sidebar-context-hs),calc(var(--color-sidebar-context-l) + 10%)),
+      hsl(var(--color-sidebar-context-hs),calc(var(--color-sidebar-context-l) + 8%)),
+      hsl(var(--bgcolor-sidebar-context-hs),calc(var(--bgcolor-sidebar-context-l) - 15%)),
+      hsl(var(--bgcolor-sidebar-context-h-s),calc(var(--bgcolor-sidebar-context-l) - 24%))
+    );
     .grw-pagetree-triangle-btn {
       @include mixins-buttons.button-outline-svg-icon-variant($gray-400, $primary);
     }
   }
   .private-legacy-pages-link {
     &:hover {
+      background: var(--bgcolor-list-hover);
     }
   }
 }
@@ -193,12 +246,14 @@ $border-color: $border-color-global;
   .page-list-ul {
     > li {
       > span.page-list-meta {
+        color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 10%));
       }
     }
   }
   // List group
   .list-group-item {
     .page-list-snippet {
+      color: hsl(var(--color-global-hs),calc(var(--color-global-l) + 10%));
     }
   }
 }
@@ -208,6 +263,7 @@ $border-color: $border-color-global;
  */
 .revision-toc-content {
   ::marker {
+    color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 20%));
   }
 }
 
@@ -322,6 +378,7 @@ $border-color: $border-color-global;
 }
 
 .page-comments-row {
+  background: var(--bgcolor-subnav);
 }
 
 /*
@@ -385,4 +442,6 @@ $border-color: $border-color-global;
  * skeleton
  */
 .grw-skeleton {
+  background-color: hsl(var(--bgcolor-navbar-h),calc(var(--bgcolor-navbar-s) - 20%),calc(var(--bgcolor-navbar-l) + 10%));
 }
+

+ 109 - 37
packages/preset-themes/src/styles/theme/_apply-colors.scss

@@ -11,52 +11,59 @@
 // determine optional variables
 $border-image-navbar: linear-gradient(to right, $gray-300 0%, $gray-300 100%) !default;
 $bgcolor-search-top-dropdown: $secondary !default;
-$bgcolor-sidebar-nav-item-active: darken($bgcolor-sidebar, 10%) !default;
-$bgcolor-inline-code: $gray-100 !default;
-$color-inline-code: darken($red, 15%) !default;
-$bordercolor-inline-code: $gray-400 !default;
+// $bgcolor-sidebar-nav-item-active: darken($bgcolor-sidebar, 10%) !default;
+$text-shadow-sidebar-nav-item-active: var(--text-shadow-sidebar-nav-item-active,1px 1px 2px var(--primary));
+// $bgcolor-inline-code: $gray-100 !default;
+// $color-inline-code: darken($red, 15%) !default;
+// $bordercolor-inline-code: $gray-400 !default;
 $bordercolor-nav-tabs: $gray-300 !default;
 $bordercolor-nav-tabs-hover: $gray-200 $gray-200 $bordercolor-nav-tabs !default;
 $color-nav-tabs-link-active: $gray-600 !default;
+$bordercolor-nav-tabs-active: var(--ordercolor-nav-tabs-active,var(--bordercolor-nav-tabs) var(--bordercolor-nav-tabs) var(--bgcolor-global));
 $color-btn-reload-in-sidebar: $gray-500;
 $bgcolor-keyword-highlighted: var.$grw-marker-yellow !default;
+$color-page-list-group-item-meta: var(--color-page-list-group-item-meta,$gray-500);
+$color-search-page-list-title: var(--color-search-page-list-title,var(--color-global));
 
 // override bootstrap variables
+$body-bg: var(--bgcolor-global);
+$body-color: var(--color-global);
+$link-color: var(--color-link);
+$link-hover-color: var(--color-link-hover);
+$input-focus-color: var(--color-global);
 $nav-tabs-border-color: $bordercolor-nav-tabs;
 $nav-tabs-link-hover-border-color: $bordercolor-nav-tabs-hover;
 $nav-tabs-link-active-color: $color-nav-tabs-link-active;
+$nav-tabs-link-active-bg: var(--bgcolor-global);
+$nav-tabs-link-active-border-color: var(--bordercolor-nav-tabs-active);
 $theme-colors: map-merge($theme-colors, ( primary: $primary ));
 
-@import 'reboot-bootstrap-buttons';
-@import 'reboot-bootstrap-colors';
-@import 'reboot-bootstrap-theme-colors';
 @import 'reboot-bootstrap-nav';
-@import 'reboot-toastr-colors';
 
 // determine variables with bootstrap function (These variables can be used after importing bootstrap above)
 $color-modal-header: color-yiq($primary) !default;
 
-code:not([class^='language-']) {
-  @include code.code-inline-color($color-inline-code, $bgcolor-inline-code, $bordercolor-inline-code);
-}
+// code:not([class^='language-']) {
+//   @include code.code-inline-color($color-inline-code, $bgcolor-inline-code, $bordercolor-inline-code);
+// }
 
-.code-highlighted {
-  border-color: $bordercolor-inline-code;
-}
+// .code-highlighted {
+//   border-color: $bordercolor-inline-code;
+// }
 
 //
 //== Apply to Bootstrap Elements
 //
 
 // Alert link
-@each $color, $value in $theme-colors {
-  .alert.alert-#{$color} {
-    a,
-    a:hover {
-      color: theme-color-level($color, $alert-color-level - 2);
-    }
-  }
-}
+// @each $color, $value in $theme-colors {
+//   .alert.alert-#{$color} {
+//     a,
+//     a:hover {
+//       color: theme-color-level($color, $alert-color-level - 2);
+//     }
+//   }
+// }
 
 // Dropdown
 .grw-apperance-mode-dropdown {
@@ -64,6 +71,7 @@ code:not([class^='language-']) {
     fill: $secondary;
   }
   .grw-color-mode-icon svg {
+    fill: var(--color-global);
   }
   .grw-color-mode-icon-muted svg {
     fill: $secondary;
@@ -77,10 +85,12 @@ code:not([class^='language-']) {
 
 // Tabs
 .nav.nav-tabs .nav-link.active {
+  color: var(--color-link);
   background: transparent;
 
   &:hover,
   &:focus {
+    color: var(--color-link-hover);
   }
 }
 
@@ -132,6 +142,10 @@ ul.pagination {
     transition: fill 0.8s ease-out;
   }
 
+  svg {
+    fill: var(--fillcolor-logo-mark);
+  }
+
   &:hover {
     svg {
       .group1 {
@@ -146,13 +160,16 @@ ul.pagination {
 }
 
 .grw-navbar {
+  background: var(--bgcolor-navbar);
   .nav-item .nav-link {
+    color: var(--color-link-nabvar);
   }
 
   border-image: $border-image-navbar;
   border-image-slice: 1;
 
   .grw-app-title {
+    color: var(--fillcolor-logo-mark);
   }
 }
 
@@ -163,11 +180,13 @@ ul.pagination {
 
   // for https://youtrack.weseek.co.jp/issue/GW-2603
   .search-typeahead {
+    background-color: var(--bgcolor-global); opacity:0.9;
   }
 }
 
 .grw-sidebar {
   .grw-navigation-resize-button {
+    $color-resize-button: var(--color-resize-button--,var(--color-global));
     $bgcolor-resize-button: white !default;
     $color-resize-button-hover: $color-reversal !default;
     $bgcolor-resize-button-hover: lighten($bgcolor-resize-button, 5%) !default;
@@ -191,25 +210,28 @@ ul.pagination {
   }
   div.grw-global-navigation {
     > div {
+      background-color: var(--bgcolor-sidebar);
     }
   }
   div.grw-contextual-navigation {
     > div {
-    }
-  }
-
-  .grw-sidebar-nav {
-    .btn {
-      @include button-variant(
-        $bgcolor-sidebar,
-        $bgcolor-sidebar,
-        darken($bgcolor-sidebar, 7.5%),
-        darken($bgcolor-sidebar, 10%),
-        $bgcolor-sidebar-nav-item-active,
-        $bgcolor-sidebar-nav-item-active
-      );
-    }
-  }
+      color: var(--color-sidebar-context);
+      background-color: var(--bgcolor-sidebar-context);
+    }
+  }
+
+  // .grw-sidebar-nav {
+  //   .btn {
+  //     @include button-variant(
+  //       $bgcolor-sidebar,
+  //       $bgcolor-sidebar,
+  //       darken($bgcolor-sidebar, 7.5%),
+  //       darken($bgcolor-sidebar, 10%),
+  //       $bgcolor-sidebar-nav-item-active,
+  //       $bgcolor-sidebar-nav-item-active
+  //     );
+  //   }
+  // }
   .grw-sidebar-nav-primary-container {
     .btn.active {
       i {
@@ -217,6 +239,8 @@ ul.pagination {
       }
       // fukidashi
       &:after {
+        border-right-color: var(--bgcolor-sidebar-context)
+        ;
       }
     }
   }
@@ -232,16 +256,20 @@ ul.pagination {
       }
 
       .custom-control-label::after {
+        background-color: var(--bgcolor-global);
       }
 
       .custom-control-input:not(:checked) + .custom-control-label::before {
+        color: var(--bgcolor-global);
       }
 
       .custom-control-input:checked + .custom-control-label::before {
+        color: var(--bgcolor-global);
         background-color: $primary;
         // border-color: $primary !important;
       }
       .custom-control-input:checked + .custom-control-label::after {
+        color: var(--bgcolor-global);
       }
     }
   }
@@ -284,6 +312,7 @@ ul.pagination {
  * Icon
  */
 .editor-container .navbar-editor svg {
+  fill: var(--color-editor-icons);
 }
 
 // page preview button in link form
@@ -310,6 +339,7 @@ ul.pagination {
   }
 
   .modal-content {
+    background-color: var(--bgcolor-global);
   }
 
   .modal-footer {
@@ -321,10 +351,13 @@ ul.pagination {
   .nav-item {
     &:hover,
     &:focus {
+      background-color: var(--color-link); opacity:0.9;
     }
     .nav-link {
       -webkit-appearance: none;
+      color: var(--color-link);
       svg {
+        fill: var(--color-link);
       }
 
       // Disabled state lightens text
@@ -354,6 +387,8 @@ ul.pagination {
  * cards
  */
 .card.well {
+  color: var(--color-global);
+  background-color: var(--bgcolor-card);
   border-color: $light;
   box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
 }
@@ -406,17 +441,21 @@ ul.pagination {
   }
 
   a {
+    color: var(--color-link-wiki);
 
     &:hover {
+      color: var(--color-link-wiki-hover);
     }
   }
 
   // table with handsontable modal button
   .editable-with-handsontable {
     button {
+      color: var(--color-link-wiki);
     }
 
     button:hover {
+      color: var(--color-link-wiki-hover);
     }
   }
 }
@@ -430,19 +469,26 @@ ul.pagination {
     .list-group-item {
       a {
         svg {
+          fill: var(--color-global);
         }
 
         @include hover() {
           svg {
+            fill: var(--color-global);
           }
         }
       }
 
       .page-list-meta {
+        color: var(--color-page-list-group-item-meta);
+        svg {
+          fill: var(--color-page-list-group-item-meta);
+        }
       }
 
       &.list-group-item-action {
         &.active {
+          background-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 76%));
           border-left-color: $primary;
         }
       }
@@ -455,16 +501,19 @@ ul.pagination {
  */
 .layout-root.editing {
   .main {
+    background-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 2%));
 
     .page-editor-editor-container {
       border-right-color: $border-color-theme;
 
       .navbar-editor {
+        background-color: var(--bgcolor-global); // same color with active tab
         border-bottom-color: $border-color-theme;
       }
     }
 
     .page-editor-preview-container {
+      background-color: var(--bgcolor-global);
     }
   }
 }
@@ -474,6 +523,8 @@ ul.pagination {
  */
 body.editing-sidebar {
   .page-editor-preview-body {
+    color: var(--color-sidebar-context);
+    background-color: var(--bgcolor-sidebar-context);
   }
 }
 
@@ -484,8 +535,10 @@ body.editing-sidebar {
   .desktop-preview,
   .tablet-preview,
   .mobile-preview {
+    background: var(--bgcolor-global);
   }
   .grid-edit-border-for-each-cols {
+    border: 2px solid var(--bgcolor-global);
   }
 }
 
@@ -493,6 +546,14 @@ body.editing-sidebar {
   background: var.$growi-blue;
 }
 
+.grid-preview-col-1 {
+  background: var(--info);
+}
+
+.grid-preview-col-2 {
+  background: var(--success);
+}
+
 .grid-preview-col-3 {
   background: var.$growi-green;
 }
@@ -501,8 +562,10 @@ body.editing-sidebar {
  * GROWI comment
  */
 .page-comment-meta .page-comment-revision svg {
+  fill: var(--color-link);
 
   &:hover {
+    fill: var(--color-link-hover);
   }
 }
 
@@ -512,13 +575,17 @@ body.editing-sidebar {
 .page-comments {
   .page-comment .page-comment-main,
   .page-comment-form .comment-form-main {
+    background-color: var(--bgcolor-global);
 
     &:before {
+      border-right-color: var(--bgcolor-global);
     }
 
     .nav.nav-tabs {
       > li > a.active {
         background: transparent;
+        border-bottom: solid 1px hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 4%));
+        border-bottom-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 4%));
       }
     }
   }
@@ -529,8 +596,10 @@ body.editing-sidebar {
  */
 .search-result-base {
   .grw-search-page-nav {
+    background-color: var(--bgcolor-subnav);
   }
   .search-control {
+    background-color: var(--bgcolor-global);
   }
   .page-list {
     .highlighted-keyword {
@@ -551,6 +620,7 @@ mark.rbt-highlight-text {
  * GROWI page content footer
  */
 .page-content-footer {
+  background-color: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) - 2%));
   border-top-color: $border-color-theme;
 }
 
@@ -569,6 +639,7 @@ mark.rbt-highlight-text {
   #themeOptions {
     .theme-option-container.active {
       .theme-option-name {
+        color: var(--color-global);
       }
       a {
         background-color: $color-theme-color-box;
@@ -582,6 +653,7 @@ mark.rbt-highlight-text {
  * HackMd
  */
 .bg-box {
+  background-color: var(--bgcolor-global);
 }
 
 .grw-fab {

+ 0 - 20
packages/preset-themes/src/styles/theme/_reboot-bootstrap-buttons.scss

@@ -1,21 +1 @@
-.btn-link {
-  color: var(--link-color);
-  svg {
-    fill: var(--link-color);
-  }
 
-  @include hover() {
-    color: var(--link-hover-color);
-    svg {
-      fill: var(--link-hover-color);
-    }
-  }
-
-  &:disabled,
-  &.disabled {
-    color: var(--btn-link-disabled-color);
-    svg {
-      fill: var(--btn-link-disabled-color);
-    }
-  }
-}

+ 2 - 1
packages/preset-themes/src/styles/theme/_reboot-bootstrap-dropdown.scss

@@ -10,6 +10,7 @@
 }
 
 .dropdown-item {
+  --bgcolor-dropdown-link-hover: hsl(var(--bgcolor-global-hs),calc(var(--bgcolor-global-l) + 15%));
   color: $dropdown-link-color;
   svg {
     fill: $dropdown-link-color;
@@ -21,7 +22,7 @@
       fill: $dropdown-link-hover-color;
     }
 
-    @include gradient-bg($dropdown-link-hover-bg);
+    @include gradient-bg(var(--dropdown-link-hover-bg));
   }
 
   &:active,

+ 0 - 92
packages/preset-themes/src/styles/theme/_reboot-bootstrap-theme-colors.scss

@@ -1,92 +0,0 @@
-@use '../bootstrap/init' as *;
-@use '../atoms/mixins/buttons' as mixins-buttons;
-
-@each $color, $value in $theme-colors {
-  @include bg-variant('.bg-#{$color}', $value);
-}
-
-@each $color, $value in $theme-colors {
-  .border-#{$color} {
-    border-color: $value !important;
-  }
-}
-
-@each $color, $value in $theme-colors {
-  @include text-emphasis-variant('.text-#{$color}', $value, true);
-}
-
-@each $color, $value in $theme-colors {
-  .btn-#{$color} {
-    @include button-variant($value, $value);
-    @include mixins-buttons.button-svg-icon-variant($value, $value);
-    box-shadow: none !important;
-  }
-}
-
-@each $color, $value in $theme-colors {
-  .btn-outline-#{$color} {
-    @include button-outline-variant($value, $color-hover: $value, $active-background: rgba($value, 0.1), $active-border: $value);
-    @include mixins-buttons.button-outline-svg-icon-variant($value, $color-hover: $value);
-
-    &:not(:disabled):not(.disabled):active,
-    &:not(:disabled):not(.disabled).active {
-      color: $value;
-      background-color: rgba($value, 0.1);
-      border-color: $value;
-    }
-
-    box-shadow: none !important;
-  }
-
-  // separate style: https://github.com/weseek/growi/pull/6804
-  .show > .btn-outline-#{$color}.dropdown-toggle {
-    color: $value;
-    background-color: rgba($value, 0.1);
-    border-color: $value;
-  }
-}
-
-@each $theme-color, $color in $theme-colors {
-  .custom-checkbox-#{$theme-color} {
-    .custom-control-label::before {
-      border-color: $input-border-color;
-      transition: 0.3s ease-in-out;
-    }
-    .custom-control-input:checked + .custom-control-label::before {
-      background-color: $color;
-      border-color: $color;
-    }
-    .custom-control-input:checked + .custom-control-label::after {
-      color: var(--bgcolor-global);
-    }
-    .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
-      color: var(--bgcolor-global);
-      background-color: $color;
-      border-color: $color;
-    }
-    .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
-      color: var(--bgcolor-global);
-      background-color: var(--bgcolor-global);
-      border-color: $input-focus-border-color;
-    }
-  }
-}
-
-@each $color, $value in $theme-colors {
-  .alert-#{$color} {
-    @include alert-variant(
-      theme-color-level($color, $alert-bg-level),
-      theme-color-level($color, $alert-border-level),
-      theme-color-level($color, $alert-color-level)
-    );
-  }
-}
-
-@each $color, $value in $theme-colors {
-  .badge-#{$color} {
-    @include badge-variant($value);
-  }
-  a.badge-#{$color} {
-    @include badge-variant($value);
-  }
-}

+ 14 - 14
packages/preset-themes/vite.themes.config.ts

@@ -7,21 +7,21 @@ export default defineConfig({
     manifest: true,
     rollupOptions: {
       input: [
-        '/src/styles/antarctic.scss',
-        '/src/styles/blackboard.scss',
-        '/src/styles/christmas.scss',
+        // '/src/styles/antarctic.scss',
+        // '/src/styles/blackboard.scss',
+        // '/src/styles/christmas.scss',
         '/src/styles/default.scss',
-        '/src/styles/fire-red.scss',
-        '/src/styles/future.scss',
-        '/src/styles/halloween.scss',
-        '/src/styles/hufflepuff.scss',
-        '/src/styles/island.scss',
-        '/src/styles/jade-green.scss',
-        '/src/styles/kibela.scss',
-        '/src/styles/mono-blue.scss',
-        '/src/styles/nature.scss',
-        '/src/styles/spring.scss',
-        '/src/styles/wood.scss',
+        // '/src/styles/fire-red.scss',
+        // '/src/styles/future.scss',
+        // '/src/styles/halloween.scss',
+        // '/src/styles/hufflepuff.scss',
+        // '/src/styles/island.scss',
+        // '/src/styles/jade-green.scss',
+        // '/src/styles/kibela.scss',
+        // '/src/styles/mono-blue.scss',
+        // '/src/styles/nature.scss',
+        // '/src/styles/spring.scss',
+        // '/src/styles/wood.scss',
       ],
     },
   },