mtrl 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/demo/build.ts +349 -0
  2. package/demo/index.html +110 -0
  3. package/demo/main.js +448 -0
  4. package/demo/styles.css +239 -0
  5. package/index.ts +18 -0
  6. package/package.json +14 -3
  7. package/server.ts +86 -0
  8. package/src/components/badge/api.ts +70 -63
  9. package/src/components/badge/badge.ts +16 -2
  10. package/src/components/badge/config.ts +66 -13
  11. package/src/components/badge/features.ts +51 -42
  12. package/src/components/badge/index.ts +27 -2
  13. package/src/components/badge/types.ts +62 -30
  14. package/src/components/bottom-app-bar/bottom-app-bar.ts +154 -0
  15. package/src/components/bottom-app-bar/config.ts +29 -0
  16. package/src/components/bottom-app-bar/index.ts +17 -0
  17. package/src/components/bottom-app-bar/types.ts +114 -0
  18. package/src/components/button/api.ts +5 -0
  19. package/src/components/button/button.ts +0 -1
  20. package/src/components/button/config.ts +6 -2
  21. package/src/components/button/index.ts +10 -2
  22. package/src/components/button/types.ts +20 -2
  23. package/src/components/card/card.ts +13 -25
  24. package/src/components/card/config.ts +83 -30
  25. package/src/components/card/content.ts +8 -10
  26. package/src/components/card/features.ts +4 -3
  27. package/src/components/card/index.ts +29 -2
  28. package/src/components/card/types.ts +33 -22
  29. package/src/components/checkbox/config.ts +3 -4
  30. package/src/components/checkbox/index.ts +1 -2
  31. package/src/components/checkbox/types.ts +12 -3
  32. package/src/components/chip/api.ts +170 -221
  33. package/src/components/chip/chip.ts +34 -302
  34. package/src/components/chip/config.ts +1 -2
  35. package/src/components/chip/index.ts +10 -2
  36. package/src/components/chip/types.ts +224 -35
  37. package/src/components/datepicker/api.ts +265 -0
  38. package/src/components/datepicker/config.ts +141 -0
  39. package/src/components/datepicker/datepicker.ts +341 -0
  40. package/src/components/datepicker/index.ts +12 -0
  41. package/src/components/datepicker/render.ts +450 -0
  42. package/src/components/datepicker/types.ts +397 -0
  43. package/src/components/datepicker/utils.ts +289 -0
  44. package/src/components/dialog/api.ts +55 -21
  45. package/src/components/dialog/config.ts +12 -9
  46. package/src/components/dialog/dialog.ts +6 -3
  47. package/src/components/dialog/features.ts +345 -151
  48. package/src/components/dialog/index.ts +38 -8
  49. package/src/components/dialog/types.ts +40 -14
  50. package/src/components/divider/config.ts +81 -0
  51. package/src/components/divider/divider.ts +37 -0
  52. package/src/components/divider/features.ts +207 -0
  53. package/src/components/divider/index.ts +9 -0
  54. package/src/components/divider/types.ts +55 -0
  55. package/src/components/extended-fab/api.ts +141 -0
  56. package/src/components/extended-fab/config.ts +112 -0
  57. package/src/components/extended-fab/extended-fab.ts +125 -0
  58. package/src/components/extended-fab/index.ts +9 -0
  59. package/src/components/extended-fab/types.ts +304 -0
  60. package/src/components/fab/api.ts +97 -0
  61. package/src/components/fab/config.ts +93 -0
  62. package/src/components/fab/fab.ts +67 -0
  63. package/src/components/fab/index.ts +9 -0
  64. package/src/components/fab/types.ts +251 -0
  65. package/src/components/list/config.ts +4 -5
  66. package/src/components/list/features.ts +6 -7
  67. package/src/components/list/index.ts +7 -9
  68. package/src/components/list/list-item.ts +12 -13
  69. package/src/components/list/types.ts +50 -5
  70. package/src/components/list/utils.ts +30 -3
  71. package/src/components/menu/features/items-manager.ts +9 -9
  72. package/src/components/menu/features/positioning.ts +7 -7
  73. package/src/components/menu/features/visibility.ts +7 -7
  74. package/src/components/menu/index.ts +7 -9
  75. package/src/components/menu/menu-item.ts +6 -6
  76. package/src/components/menu/menu.ts +22 -0
  77. package/src/components/menu/types.ts +29 -10
  78. package/src/components/menu/utils.ts +67 -0
  79. package/src/components/navigation/api.ts +78 -50
  80. package/src/components/navigation/config.ts +22 -10
  81. package/src/components/navigation/features/items.ts +284 -0
  82. package/src/components/navigation/index.ts +0 -6
  83. package/src/components/navigation/nav-item.ts +70 -33
  84. package/src/components/navigation/navigation.ts +53 -3
  85. package/src/components/navigation/types.ts +117 -70
  86. package/src/components/progress/api.ts +2 -3
  87. package/src/components/progress/config.ts +2 -3
  88. package/src/components/progress/index.ts +0 -1
  89. package/src/components/progress/progress.ts +1 -2
  90. package/src/components/progress/types.ts +186 -33
  91. package/src/components/radios/config.ts +1 -1
  92. package/src/components/radios/index.ts +0 -1
  93. package/src/components/radios/types.ts +0 -7
  94. package/src/components/search/api.ts +203 -0
  95. package/src/components/search/config.ts +86 -0
  96. package/src/components/search/features/index.ts +4 -0
  97. package/src/components/search/features/search.ts +717 -0
  98. package/src/components/search/features/states.ts +169 -0
  99. package/src/components/search/features/structure.ts +197 -0
  100. package/src/components/search/index.ts +7 -0
  101. package/src/components/search/search.ts +52 -0
  102. package/src/components/search/types.ts +175 -0
  103. package/src/components/segmented-button/config.ts +80 -0
  104. package/src/components/segmented-button/index.ts +4 -0
  105. package/src/components/segmented-button/segment.ts +154 -0
  106. package/src/components/segmented-button/segmented-button.ts +249 -0
  107. package/src/components/segmented-button/types.ts +254 -0
  108. package/src/components/slider/accessibility.md +5 -5
  109. package/src/components/slider/api.ts +41 -120
  110. package/src/components/slider/config.ts +51 -47
  111. package/src/components/slider/features/handlers.ts +495 -0
  112. package/src/components/slider/features/index.ts +1 -2
  113. package/src/components/slider/features/slider.ts +66 -84
  114. package/src/components/slider/features/states.ts +195 -0
  115. package/src/components/slider/features/structure.ts +136 -206
  116. package/src/components/slider/features/ui.ts +145 -206
  117. package/src/components/slider/index.ts +2 -11
  118. package/src/components/slider/slider.ts +9 -12
  119. package/src/components/slider/types.ts +67 -26
  120. package/src/components/snackbar/config.ts +2 -3
  121. package/src/components/snackbar/constants.ts +0 -32
  122. package/src/components/snackbar/index.ts +0 -1
  123. package/src/components/snackbar/position.ts +9 -1
  124. package/src/components/snackbar/types.ts +122 -46
  125. package/src/components/switch/config.ts +2 -3
  126. package/src/components/switch/index.ts +0 -1
  127. package/src/components/switch/types.ts +3 -2
  128. package/src/components/tabs/config.ts +3 -4
  129. package/src/components/tabs/features.ts +4 -2
  130. package/src/components/tabs/index.ts +0 -15
  131. package/src/components/tabs/indicator.ts +73 -13
  132. package/src/components/tabs/tab-api.ts +12 -4
  133. package/src/components/tabs/tab.ts +18 -6
  134. package/src/components/tabs/types.ts +23 -5
  135. package/src/components/textfield/config.ts +2 -3
  136. package/src/components/textfield/index.ts +0 -1
  137. package/src/components/textfield/types.ts +17 -3
  138. package/src/components/timepicker/README.md +277 -0
  139. package/src/components/timepicker/api.ts +632 -0
  140. package/src/components/timepicker/clockdial.ts +482 -0
  141. package/src/components/timepicker/config.ts +228 -0
  142. package/src/components/timepicker/index.ts +3 -0
  143. package/src/components/timepicker/render.ts +613 -0
  144. package/src/components/timepicker/timepicker.ts +117 -0
  145. package/src/components/timepicker/types.ts +336 -0
  146. package/src/components/timepicker/utils.ts +241 -0
  147. package/src/components/tooltip/api.ts +1 -1
  148. package/src/components/tooltip/config.ts +27 -6
  149. package/src/components/tooltip/index.ts +0 -1
  150. package/src/components/tooltip/types.ts +13 -3
  151. package/src/components/top-app-bar/config.ts +83 -0
  152. package/src/components/top-app-bar/index.ts +11 -0
  153. package/src/components/top-app-bar/top-app-bar.ts +316 -0
  154. package/src/components/top-app-bar/types.ts +140 -0
  155. package/src/core/build/_ripple.scss +6 -6
  156. package/src/core/build/ripple.ts +72 -95
  157. package/src/core/compose/features/icon.ts +3 -1
  158. package/src/core/compose/features/ripple.ts +4 -1
  159. package/src/core/compose/features/textlabel.ts +23 -2
  160. package/src/core/dom/create.ts +5 -0
  161. package/src/index.ts +9 -0
  162. package/src/styles/abstract/_theme.scss +9 -1
  163. package/src/styles/components/_badge.scss +182 -0
  164. package/src/styles/components/_bottom-app-bar.scss +103 -0
  165. package/src/{components/button/_styles.scss → styles/components/_button.scss} +0 -10
  166. package/src/{components/checkbox/_styles.scss → styles/components/_checkbox.scss} +0 -2
  167. package/src/styles/components/_datepicker.scss +358 -0
  168. package/src/styles/components/_dialog.scss +259 -0
  169. package/src/styles/components/_divider.scss +57 -0
  170. package/src/styles/components/_extended-fab.scss +267 -0
  171. package/src/styles/components/_fab.scss +225 -0
  172. package/src/{components/navigation/_styles.scss → styles/components/_navigation.scss} +1 -0
  173. package/src/styles/components/_search.scss +306 -0
  174. package/src/styles/components/_segmented-button.scss +117 -0
  175. package/src/{components/slider/_styles.scss → styles/components/_slider.scss} +83 -24
  176. package/src/{components/switch/_styles.scss → styles/components/_switch.scss} +0 -2
  177. package/src/{components/tabs/_styles.scss → styles/components/_tabs.scss} +95 -33
  178. package/src/{components/textfield/_styles.scss → styles/components/_textfield.scss} +70 -67
  179. package/src/styles/components/_timepicker.scss +451 -0
  180. package/src/styles/components/_top-app-bar.scss +225 -0
  181. package/src/styles/main.scss +98 -49
  182. package/src/styles/themes/_autumn.scss +21 -0
  183. package/src/styles/themes/_base-theme.scss +61 -0
  184. package/src/styles/themes/_baseline.scss +58 -0
  185. package/src/styles/themes/_bluekhaki.scss +125 -0
  186. package/src/styles/themes/_brownbeige.scss +125 -0
  187. package/src/styles/themes/_browngreen.scss +125 -0
  188. package/src/styles/themes/_forest.scss +6 -0
  189. package/src/styles/themes/_greenbeige.scss +125 -0
  190. package/src/styles/themes/_material.scss +125 -0
  191. package/src/styles/themes/_ocean.scss +6 -0
  192. package/src/styles/themes/_sageivory.scss +125 -0
  193. package/src/styles/themes/_spring.scss +6 -0
  194. package/src/styles/themes/_summer.scss +5 -0
  195. package/src/styles/themes/_sunset.scss +5 -0
  196. package/src/styles/themes/_tealcaramel.scss +125 -0
  197. package/src/styles/themes/_winter.scss +6 -0
  198. package/src/components/badge/_styles.scss +0 -174
  199. package/src/components/badge/constants.ts +0 -30
  200. package/src/components/button/constants.ts +0 -11
  201. package/src/components/card/constants.ts +0 -84
  202. package/src/components/dialog/_styles.scss +0 -213
  203. package/src/components/dialog/constants.ts +0 -32
  204. package/src/components/menu/constants.ts +0 -154
  205. package/src/components/navigation/constants.ts +0 -200
  206. package/src/components/navigation/features/items.js +0 -192
  207. package/src/components/progress/constants.ts +0 -29
  208. package/src/components/slider/features/appearance.ts +0 -94
  209. package/src/components/slider/features/disabled.ts +0 -68
  210. package/src/components/slider/features/events.ts +0 -164
  211. package/src/components/slider/features/interactions.ts +0 -396
  212. package/src/components/slider/features/keyboard.ts +0 -233
  213. package/src/components/switch/constants.ts +0 -80
  214. package/src/components/tabs/constants.ts +0 -89
  215. package/src/core/collection/adapters/mongodb.js +0 -232
  216. /package/src/{components/card/_styles.scss → styles/components/_card.scss} +0 -0
  217. /package/src/{components/carousel/_styles.scss → styles/components/_carousel.scss} +0 -0
  218. /package/src/{components/chip/_styles.scss → styles/components/_chip.scss} +0 -0
  219. /package/src/{components/list/_styles.scss → styles/components/_list.scss} +0 -0
  220. /package/src/{components/menu/_styles.scss → styles/components/_menu.scss} +0 -0
  221. /package/src/{components/progress/_styles.scss → styles/components/_progress.scss} +0 -0
  222. /package/src/{components/radios/_styles.scss → styles/components/_radios.scss} +0 -0
  223. /package/src/{components/sheet/_styles.scss → styles/components/_sheet.scss} +0 -0
  224. /package/src/{components/snackbar/_styles.scss → styles/components/_snackbar.scss} +0 -0
  225. /package/src/{components/tooltip/_styles.scss → styles/components/_tooltip.scss} +0 -0
  226. /package/src/styles/utilities/{_color.scss → _colors.scss} +0 -0
@@ -1,32 +1,17 @@
1
1
  // src/styles/main.scss
2
2
 
3
+ // Import Sass modules
4
+ @use 'sass:map';
5
+ @use 'sass:list' as sasslist;
6
+ @use 'sass:math';
7
+
3
8
  // Abstract layer
4
9
  @use 'abstract/base';
5
- @use 'abstract/variables';
6
- @use 'abstract/functions';
7
- @use 'abstract/mixins';
8
- @use 'abstract/theme';
9
-
10
- // Themes
11
- @use 'themes/index';
10
+ @use 'abstract/variables' as v;
11
+ @use 'abstract/functions' as f;
12
+ @use 'abstract/mixins' as m;
13
+ @use 'abstract/theme' as t;
12
14
 
13
- // Reset
14
- @use 'base/reset';
15
- @use 'base/typography';
16
-
17
- // Components
18
- @use '../components/button/styles';
19
- @use '../components/checkbox/styles';
20
- @use '../components/container/styles';
21
- @use '../components/list/styles';
22
- @use '../components/menu/styles';
23
- @use '../components/navigation/styles';
24
- @use '../components/snackbar/styles';
25
- @use '../components/switch/styles';
26
- @use '../components/textfield/styles';
27
-
28
-
29
- @use '../core/build/ripple/ripple';
30
15
 
31
16
  // Utilities
32
17
  @use 'utilities/spacing';
@@ -35,41 +20,105 @@
35
20
  @use 'utilities/flexbox';
36
21
  @use 'utilities/typography';
37
22
 
23
+ // Themes
24
+ @use 'themes/index';
25
+
26
+ // Reset
27
+ @use 'base/reset';
28
+ //@use 'base/typography';
29
+
30
+ // Components
31
+ @use './components/textfield' as textfield;
32
+ @use './components/badge' as badge;
33
+ @use './components/bottom-app-bar' as bottom-app-bar;
34
+ @use './components/menu' as menu;
35
+ @use './components/slider' as slider;
36
+ @use './components/switch' as switch;
37
+ @use './components/tabs' as tabs;
38
+ @use './components/top-app-bar' as top-app-bar;
39
+
40
+ @use '../components/styles/button' as button;
41
+ @use '../components/styles/fab' as fab;
42
+ @use '../components/styles/extended-fab' as extended-fab;
43
+ @use '../components/styles/segmented-button' as segmented-button;
44
+ @use '../components/styles/card' as card;
45
+ @use '../components/styles/carousel' as carousel;
46
+ @use '../components/styles/checkbox' as checkbox;
47
+ @use '../components/styles/chip' as chip;
48
+ @use '../components/styles/datepicker' as datepicker;
49
+ @use '../components/styles/dialog' as dialog;
50
+ @use '../components/styles/divider' as divider;
51
+
52
+ @use '../components/styles/progress' as progress;
53
+
54
+ @use '../components/styles/radios' as radios;
55
+ @use '../components/styles/timepicker' as timepicker;
56
+ @use '../components/styles/search' as search;
57
+
58
+ @use '../components/styles/snackbar' as snackbar;
59
+ @use '../components/styles/navigation' as navigation;
60
+ @use '../components/styles/list' as list;
61
+
62
+ @use '../core/build/ripple';
63
+
38
64
  // Initialize theme system
39
65
  :root {
40
66
  // Apply the base theme CSS variables
41
- @include theme.light-theme;
67
+ @include t.light-theme;
42
68
 
43
- // State layer variables
44
- @each $key, $value in theme.$mtrl-sys-state {
45
- --#{base.$prefix}-sys-state-#{$key}: #{$value};
46
- }
69
+ // State layer variables - accessing individual values
70
+ --#{base.$prefix}-sys-state-hover-state-layer-opacity: #{v.state('hover-state-layer-opacity')};
71
+ --#{base.$prefix}-sys-state-focus-state-layer-opacity: #{v.state('focus-state-layer-opacity')};
72
+ --#{base.$prefix}-sys-state-pressed-state-layer-opacity: #{v.state('pressed-state-layer-opacity')};
73
+ --#{base.$prefix}-sys-state-dragged-state-layer-opacity: #{v.state('dragged-state-layer-opacity')};
47
74
 
48
- // Motion variables
49
- @each $key, $value in theme.$mtrl-sys-motion {
50
- --#{base.$prefix}-sys-motion-#{$key}: #{$value};
51
- }
52
-
53
- // Shape variables
54
- @each $key, $value in theme.$mtrl-sys-shape {
55
- --#{base.$prefix}-sys-shape-#{$key}: #{$value};
56
- }
75
+ // Motion variables - accessing individual values
76
+ --#{base.$prefix}-sys-motion-duration-short1: #{v.motion('duration-short1')};
77
+ --#{base.$prefix}-sys-motion-duration-short2: #{v.motion('duration-short2')};
78
+ --#{base.$prefix}-sys-motion-duration-short3: #{v.motion('duration-short3')};
79
+ --#{base.$prefix}-sys-motion-duration-short4: #{v.motion('duration-short4')};
80
+ --#{base.$prefix}-sys-motion-duration-medium1: #{v.motion('duration-medium1')};
81
+ --#{base.$prefix}-sys-motion-duration-medium2: #{v.motion('duration-medium2')};
82
+ --#{base.$prefix}-sys-motion-duration-long1: #{v.motion('duration-long1')};
83
+ --#{base.$prefix}-sys-motion-duration-long2: #{v.motion('duration-long2')};
84
+ --#{base.$prefix}-sys-motion-easing-standard: #{v.motion('easing-standard')};
85
+ --#{base.$prefix}-sys-motion-easing-standard-accelerate: #{v.motion('easing-standard-accelerate')};
86
+ --#{base.$prefix}-sys-motion-easing-standard-decelerate: #{v.motion('easing-standard-decelerate')};
87
+ --#{base.$prefix}-sys-motion-easing-emphasized: #{v.motion('easing-emphasized')};
88
+ --#{base.$prefix}-sys-motion-easing-emphasized-accelerate: #{v.motion('easing-emphasized-accelerate')};
89
+ --#{base.$prefix}-sys-motion-easing-emphasized-decelerate: #{v.motion('easing-emphasized-decelerate')};
90
+
91
+ // Shape variables - accessing individual values
92
+ --#{base.$prefix}-sys-shape-none: #{v.shape('none')};
93
+ --#{base.$prefix}-sys-shape-extra-tiny: #{v.shape('extra-tiny')};
94
+ --#{base.$prefix}-sys-shape-tiny: #{v.shape('tiny')};
95
+ --#{base.$prefix}-sys-shape-extra-small: #{v.shape('extra-small')};
96
+ --#{base.$prefix}-sys-shape-small: #{v.shape('small')};
97
+ --#{base.$prefix}-sys-shape-medium: #{v.shape('medium')};
98
+ --#{base.$prefix}-sys-shape-large: #{v.shape('large')};
99
+ --#{base.$prefix}-sys-shape-extra-large: #{v.shape('extra-large')};
100
+ --#{base.$prefix}-sys-shape-full: #{v.shape('full')};
101
+ --#{base.$prefix}-sys-shape-pill: #{v.shape('pill')};
57
102
 
58
- // Typography
59
- @each $scale, $properties in variables.$typescale {
60
- --#{base.$prefix}-sys-typescale-#{$scale}-font-family-name: #{nth(map-get($properties, font-family), 1)};
61
- --#{base.$prefix}-sys-typescale-#{$scale}-font-family-fallback: #{if(length(map-get($properties, font-family)) > 1, nth(map-get($properties, font-family), 2), 'sans-serif')};
62
- --#{base.$prefix}-sys-typescale-#{$scale}-font-size: #{map-get($properties, font-size)};
63
- --#{base.$prefix}-sys-typescale-#{$scale}-line-height: #{map-get($properties, line-height)};
64
- --#{base.$prefix}-sys-typescale-#{$scale}-letter-spacing: #{map-get($properties, letter-spacing)};
65
- --#{base.$prefix}-sys-typescale-#{$scale}-font-weight: #{map-get($properties, font-weight)};
103
+ // Typography - extracting individual properties
104
+ @each $scale, $properties in v.$typescale {
105
+ $font-family: map.get($properties, 'font-family');
106
+ $primary-font: sasslist.nth($font-family, 1);
107
+ $fallback-font: if(sasslist.length($font-family) > 1, sasslist.nth($font-family, 2), 'sans-serif');
108
+
109
+ --#{base.$prefix}-sys-typescale-#{$scale}-font-family-name: #{$primary-font};
110
+ --#{base.$prefix}-sys-typescale-#{$scale}-font-family-fallback: #{$fallback-font};
111
+ --#{base.$prefix}-sys-typescale-#{$scale}-font-size: #{map.get($properties, 'font-size')};
112
+ --#{base.$prefix}-sys-typescale-#{$scale}-line-height: #{map.get($properties, 'line-height')};
113
+ --#{base.$prefix}-sys-typescale-#{$scale}-letter-spacing: #{map.get($properties, 'letter-spacing')};
114
+ --#{base.$prefix}-sys-typescale-#{$scale}-font-weight: #{map.get($properties, 'font-weight')};
66
115
  }
67
116
  }
68
117
 
69
118
  // Dark mode support
70
119
  @media (prefers-color-scheme: dark) {
71
120
  :root:not([data-theme]) {
72
- @include theme.dark-theme;
121
+ @include t.dark-theme;
73
122
  }
74
123
  }
75
124
 
@@ -86,7 +135,7 @@ body {
86
135
  -webkit-font-smoothing: antialiased;
87
136
  -moz-osx-font-smoothing: grayscale;
88
137
 
89
- @include mixins.motion-transition(background-color, color);
138
+ @include m.motion-transition(background-color, color);
90
139
  }
91
140
 
92
141
  // Ensure links have the correct contrast
@@ -114,7 +163,7 @@ a {
114
163
  html {
115
164
  scroll-behavior: smooth;
116
165
 
117
- @include mixins.reduced-motion {
166
+ @include m.reduced-motion {
118
167
  scroll-behavior: auto;
119
168
  }
120
169
  }
@@ -40,6 +40,24 @@
40
40
  --#{$prefix}-sys-color-outline: #85736C;
41
41
  --#{$prefix}-sys-color-outline-variant: #D7C1BA;
42
42
 
43
+ // Success colors
44
+ --#{$prefix}-sys-color-success: #85CFA9;
45
+ --#{$prefix}-sys-color-success-rgb: 133, 207, 169;
46
+ --#{$prefix}-sys-color-on-success: #00392D;
47
+ --#{$prefix}-sys-color-on-success-rgb: 0, 57, 45;
48
+
49
+ // Warning colors
50
+ --#{$prefix}-sys-color-warning: #FFB95C;
51
+ --#{$prefix}-sys-color-warning-rgb: 255, 185, 92;
52
+ --#{$prefix}-sys-color-on-warning: #3F2200;
53
+ --#{$prefix}-sys-color-on-warning-rgb: 63, 34, 0;
54
+
55
+ // Info colors
56
+ --#{$prefix}-sys-color-info: #99CBFF;
57
+ --#{$prefix}-sys-color-info-rgb: 153, 203, 255;
58
+ --#{$prefix}-sys-color-on-info: #003060;
59
+ --#{$prefix}-sys-color-on-info-rgb: 0, 48, 96;
60
+
43
61
  &[data-theme-mode="dark"] {
44
62
  // Key colors
45
63
  --#{$prefix}-sys-color-primary: #DDB995; // Softer brown
@@ -62,6 +80,9 @@
62
80
  --#{$prefix}-sys-color-quaternary-container: #644900;
63
81
  --#{$prefix}-sys-color-on-quaternary-container: #FFDF8A;
64
82
 
83
+ // Include status colors for dark theme
84
+ @include status-colors-dark();
85
+
65
86
  // Neutral colors
66
87
  --#{$prefix}-sys-color-surface: #201A17;
67
88
  --#{$prefix}-sys-color-surface-dim: #17120F;
@@ -8,6 +8,67 @@
8
8
  }
9
9
  }
10
10
 
11
+ // Common status colors that should be available in all themes
12
+ @mixin status-colors-light() {
13
+ // Error colors
14
+ --#{$prefix}-sys-color-error: #B3261E;
15
+ --#{$prefix}-sys-color-error-rgb: 179, 38, 30;
16
+ --#{$prefix}-sys-color-on-error: #FFFFFF;
17
+ --#{$prefix}-sys-color-on-error-rgb: 255, 255, 255;
18
+ --#{$prefix}-sys-color-error-container: #F9DEDC;
19
+ --#{$prefix}-sys-color-error-container-rgb: 249, 222, 220;
20
+ --#{$prefix}-sys-color-on-error-container: #410E0B;
21
+ --#{$prefix}-sys-color-on-error-container-rgb: 65, 14, 11;
22
+
23
+ // Success colors
24
+ --#{$prefix}-sys-color-success: #007B5A;
25
+ --#{$prefix}-sys-color-success-rgb: 0, 123, 90;
26
+ --#{$prefix}-sys-color-on-success: #FFFFFF;
27
+ --#{$prefix}-sys-color-on-success-rgb: 255, 255, 255;
28
+
29
+ // Warning colors
30
+ --#{$prefix}-sys-color-warning: #DD6D06;
31
+ --#{$prefix}-sys-color-warning-rgb: 221, 109, 6;
32
+ --#{$prefix}-sys-color-on-warning: #FFFFFF;
33
+ --#{$prefix}-sys-color-on-warning-rgb: 255, 255, 255;
34
+
35
+ // Info colors
36
+ --#{$prefix}-sys-color-info: #0061A4;
37
+ --#{$prefix}-sys-color-info-rgb: 0, 97, 164;
38
+ --#{$prefix}-sys-color-on-info: #FFFFFF;
39
+ --#{$prefix}-sys-color-on-info-rgb: 255, 255, 255;
40
+ }
41
+
42
+ @mixin status-colors-dark() {
43
+ // Error colors
44
+ --#{$prefix}-sys-color-error: #F2B8B5;
45
+ --#{$prefix}-sys-color-error-rgb: 242, 184, 181;
46
+ --#{$prefix}-sys-color-on-error: #601410;
47
+ --#{$prefix}-sys-color-on-error-rgb: 96, 20, 16;
48
+ --#{$prefix}-sys-color-error-container: #8C1D18;
49
+ --#{$prefix}-sys-color-error-container-rgb: 140, 29, 24;
50
+ --#{$prefix}-sys-color-on-error-container: #F9DEDC;
51
+ --#{$prefix}-sys-color-on-error-container-rgb: 249, 222, 220;
52
+
53
+ // Success colors
54
+ --#{$prefix}-sys-color-success: #85CFA9;
55
+ --#{$prefix}-sys-color-success-rgb: 133, 207, 169;
56
+ --#{$prefix}-sys-color-on-success: #00392D;
57
+ --#{$prefix}-sys-color-on-success-rgb: 0, 57, 45;
58
+
59
+ // Warning colors
60
+ --#{$prefix}-sys-color-warning: #FFB95C;
61
+ --#{$prefix}-sys-color-warning-rgb: 255, 185, 92;
62
+ --#{$prefix}-sys-color-on-warning: #3F2200;
63
+ --#{$prefix}-sys-color-on-warning-rgb: 63, 34, 0;
64
+
65
+ // Info colors
66
+ --#{$prefix}-sys-color-info: #99CBFF;
67
+ --#{$prefix}-sys-color-info-rgb: 153, 203, 255;
68
+ --#{$prefix}-sys-color-on-info: #003060;
69
+ --#{$prefix}-sys-color-on-info-rgb: 0, 48, 96;
70
+ }
71
+
11
72
  %theme-base {
12
73
  // Common properties for all themes
13
74
  --#{$prefix}-sys-typescale-label-large-font-family-name: "Roboto";
@@ -6,41 +6,70 @@
6
6
  @mixin baseline-light-variables {
7
7
  // Key colors
8
8
  --#{$prefix}-sys-color-primary: #6750A4;
9
+ --#{$prefix}-sys-color-primary-rgb: 103, 80, 164;
9
10
  --#{$prefix}-sys-color-on-primary: #FFFFFF;
11
+ --#{$prefix}-sys-color-on-primary-rgb: 255, 255, 255;
10
12
  --#{$prefix}-sys-color-primary-container: #EADDFF;
13
+ --#{$prefix}-sys-color-primary-container-rgb: 234, 221, 255;
11
14
  --#{$prefix}-sys-color-on-primary-container: #21005D;
15
+ --#{$prefix}-sys-color-on-primary-container-rgb: 33, 0, 93;
12
16
 
13
17
  --#{$prefix}-sys-color-secondary: #625B71;
18
+ --#{$prefix}-sys-color-secondary-rgb: 98, 91, 113;
14
19
  --#{$prefix}-sys-color-on-secondary: #FFFFFF;
20
+ --#{$prefix}-sys-color-on-secondary-rgb: 255, 255, 255;
15
21
  --#{$prefix}-sys-color-secondary-container: #E8DEF8;
22
+ --#{$prefix}-sys-color-secondary-container-rgb: 232, 222, 248;
16
23
  --#{$prefix}-sys-color-on-secondary-container: #1D192B;
24
+ --#{$prefix}-sys-color-on-secondary-container-rgb: 29, 25, 43;
17
25
 
18
26
  --#{$prefix}-sys-color-tertiary: #7D5260;
27
+ --#{$prefix}-sys-color-tertiary-rgb: 125, 82, 96;
19
28
  --#{$prefix}-sys-color-on-tertiary: #FFFFFF;
29
+ --#{$prefix}-sys-color-on-tertiary-rgb: 255, 255, 255;
20
30
  --#{$prefix}-sys-color-tertiary-container: #FFD8E4;
31
+ --#{$prefix}-sys-color-tertiary-container-rgb: 255, 216, 228;
21
32
  --#{$prefix}-sys-color-on-tertiary-container: #31111D;
33
+ --#{$prefix}-sys-color-on-tertiary-container-rgb: 49, 17, 29;
22
34
 
23
35
  // Neutral colors
24
36
  --#{$prefix}-sys-color-surface: #FFFBFE;
37
+ --#{$prefix}-sys-color-surface-rgb: 255, 251, 254;
25
38
  --#{$prefix}-sys-color-surface-dim: #DED8E1;
39
+ --#{$prefix}-sys-color-surface-dim-rgb: 222, 216, 225;
26
40
  --#{$prefix}-sys-color-surface-bright: #FFF8F7;
41
+ --#{$prefix}-sys-color-surface-bright-rgb: 255, 248, 247;
27
42
  --#{$prefix}-sys-color-surface-container-lowest: #FFFFFF;
43
+ --#{$prefix}-sys-color-surface-container-lowest-rgb: 255, 255, 255;
28
44
  --#{$prefix}-sys-color-surface-container-low: #F7F2FA;
45
+ --#{$prefix}-sys-color-surface-container-low-rgb: 247, 242, 250;
29
46
  --#{$prefix}-sys-color-surface-container: #F3EDF7;
47
+ --#{$prefix}-sys-color-surface-container-rgb: 243, 237, 247;
30
48
  --#{$prefix}-sys-color-surface-container-high: #ECE6F0;
49
+ --#{$prefix}-sys-color-surface-container-high-rgb: 236, 230, 240;
31
50
  --#{$prefix}-sys-color-surface-container-highest: #E6E0E9;
51
+ --#{$prefix}-sys-color-surface-container-highest-rgb: 230, 224, 233;
32
52
 
33
53
  --#{$prefix}-sys-color-on-surface: #1C1B1F;
54
+ --#{$prefix}-sys-color-on-surface-rgb: 28, 27, 31;
34
55
  --#{$prefix}-sys-color-on-surface-variant: #49454F;
56
+ --#{$prefix}-sys-color-on-surface-variant-rgb: 73, 69, 79;
35
57
 
36
58
  // Additional colors
37
59
  --#{$prefix}-sys-color-outline: #79747E;
60
+ --#{$prefix}-sys-color-outline-rgb: 121, 116, 126;
38
61
  --#{$prefix}-sys-color-outline-variant: #CAC4D0;
62
+ --#{$prefix}-sys-color-outline-variant-rgb: 202, 196, 208;
39
63
  --#{$prefix}-sys-color-shadow: #000000;
64
+ --#{$prefix}-sys-color-shadow-rgb: 0, 0, 0;
40
65
  --#{$prefix}-sys-color-scrim: #000000;
66
+ --#{$prefix}-sys-color-scrim-rgb: 0, 0, 0;
41
67
  --#{$prefix}-sys-color-inverse-surface: #313033;
68
+ --#{$prefix}-sys-color-inverse-surface-rgb: 49, 48, 51;
42
69
  --#{$prefix}-sys-color-inverse-on-surface: #F4EFF4;
70
+ --#{$prefix}-sys-color-inverse-on-surface-rgb: 244, 239, 244;
43
71
  --#{$prefix}-sys-color-inverse-primary: #D0BCFF;
72
+ --#{$prefix}-sys-color-inverse-primary-rgb: 208, 188, 255;
44
73
 
45
74
  // State layers
46
75
  --#{$prefix}-sys-state-hover-state-layer-opacity: 0.08;
@@ -53,41 +82,70 @@
53
82
  @mixin baseline-dark-variables {
54
83
  // Key colors
55
84
  --#{$prefix}-sys-color-primary: #D0BCFF;
85
+ --#{$prefix}-sys-color-primary-rgb: 208, 188, 255;
56
86
  --#{$prefix}-sys-color-on-primary: #381E72;
87
+ --#{$prefix}-sys-color-on-primary-rgb: 56, 30, 114;
57
88
  --#{$prefix}-sys-color-primary-container: #4F378B;
89
+ --#{$prefix}-sys-color-primary-container-rgb: 79, 55, 139;
58
90
  --#{$prefix}-sys-color-on-primary-container: #EADDFF;
91
+ --#{$prefix}-sys-color-on-primary-container-rgb: 234, 221, 255;
59
92
 
60
93
  --#{$prefix}-sys-color-secondary: #CCC2DC;
94
+ --#{$prefix}-sys-color-secondary-rgb: 204, 194, 220;
61
95
  --#{$prefix}-sys-color-on-secondary: #332D41;
96
+ --#{$prefix}-sys-color-on-secondary-rgb: 51, 45, 65;
62
97
  --#{$prefix}-sys-color-secondary-container: #4A4458;
98
+ --#{$prefix}-sys-color-secondary-container-rgb: 74, 68, 88;
63
99
  --#{$prefix}-sys-color-on-secondary-container: #E8DEF8;
100
+ --#{$prefix}-sys-color-on-secondary-container-rgb: 232, 222, 248;
64
101
 
65
102
  --#{$prefix}-sys-color-tertiary: #EFB8C8;
103
+ --#{$prefix}-sys-color-tertiary-rgb: 239, 184, 200;
66
104
  --#{$prefix}-sys-color-on-tertiary: #492532;
105
+ --#{$prefix}-sys-color-on-tertiary-rgb: 73, 37, 50;
67
106
  --#{$prefix}-sys-color-tertiary-container: #633B48;
107
+ --#{$prefix}-sys-color-tertiary-container-rgb: 99, 59, 72;
68
108
  --#{$prefix}-sys-color-on-tertiary-container: #FFD8E4;
109
+ --#{$prefix}-sys-color-on-tertiary-container-rgb: 255, 216, 228;
69
110
 
70
111
  // Neutral colors
71
112
  --#{$prefix}-sys-color-surface: #1C1B1F;
113
+ --#{$prefix}-sys-color-surface-rgb: 28, 27, 31;
72
114
  --#{$prefix}-sys-color-surface-dim: #141218;
115
+ --#{$prefix}-sys-color-surface-dim-rgb: 20, 18, 24;
73
116
  --#{$prefix}-sys-color-surface-bright: #3B383D;
117
+ --#{$prefix}-sys-color-surface-bright-rgb: 59, 56, 61;
74
118
  --#{$prefix}-sys-color-surface-container-lowest: #0F0D13;
119
+ --#{$prefix}-sys-color-surface-container-lowest-rgb: 15, 13, 19;
75
120
  --#{$prefix}-sys-color-surface-container-low: #1D1B20;
121
+ --#{$prefix}-sys-color-surface-container-low-rgb: 29, 27, 32;
76
122
  --#{$prefix}-sys-color-surface-container: #211F26;
123
+ --#{$prefix}-sys-color-surface-container-rgb: 33, 31, 38;
77
124
  --#{$prefix}-sys-color-surface-container-high: #2B2930;
125
+ --#{$prefix}-sys-color-surface-container-high-rgb: 43, 41, 48;
78
126
  --#{$prefix}-sys-color-surface-container-highest: #36343B;
127
+ --#{$prefix}-sys-color-surface-container-highest-rgb: 54, 52, 59;
79
128
 
80
129
  --#{$prefix}-sys-color-on-surface: #E6E1E5;
130
+ --#{$prefix}-sys-color-on-surface-rgb: 230, 225, 229;
81
131
  --#{$prefix}-sys-color-on-surface-variant: #CAC4D0;
132
+ --#{$prefix}-sys-color-on-surface-variant-rgb: 202, 196, 208;
82
133
 
83
134
  // Additional colors
84
135
  --#{$prefix}-sys-color-outline: #938F99;
136
+ --#{$prefix}-sys-color-outline-rgb: 147, 143, 153;
85
137
  --#{$prefix}-sys-color-outline-variant: #444746;
138
+ --#{$prefix}-sys-color-outline-variant-rgb: 68, 71, 70;
86
139
  --#{$prefix}-sys-color-shadow: #000000;
140
+ --#{$prefix}-sys-color-shadow-rgb: 0, 0, 0;
87
141
  --#{$prefix}-sys-color-scrim: #000000;
142
+ --#{$prefix}-sys-color-scrim-rgb: 0, 0, 0;
88
143
  --#{$prefix}-sys-color-inverse-surface: #E6E1E5;
144
+ --#{$prefix}-sys-color-inverse-surface-rgb: 230, 225, 229;
89
145
  --#{$prefix}-sys-color-inverse-on-surface: #313033;
146
+ --#{$prefix}-sys-color-inverse-on-surface-rgb: 49, 48, 51;
90
147
  --#{$prefix}-sys-color-inverse-primary: #6750A4;
148
+ --#{$prefix}-sys-color-inverse-primary-rgb: 103, 80, 164;
91
149
  }
92
150
 
93
151
  // Apply baseline light theme to :root by default
@@ -0,0 +1,125 @@
1
+ // src/styles/themes/_bluekhaki.scss
2
+ @use '../abstract/base' as *;
3
+ @use 'base-theme' as *;
4
+
5
+ @include create-theme('bluekhaki') {
6
+ // Key colors based on blue and khaki combination
7
+ --#{$prefix}-sys-color-primary: #29375D; // Deep blue as primary
8
+ --#{$prefix}-sys-color-primary-rgb: 41, 55, 93;
9
+ --#{$prefix}-sys-color-on-primary: #FFFFFF;
10
+ --#{$prefix}-sys-color-on-primary-rgb: 255, 255, 255;
11
+ --#{$prefix}-sys-color-primary-container: #D1E4FF;
12
+ --#{$prefix}-sys-color-primary-container-rgb: 209, 228, 255;
13
+ --#{$prefix}-sys-color-on-primary-container: #00174A;
14
+ --#{$prefix}-sys-color-on-primary-container-rgb: 0, 23, 74;
15
+
16
+ --#{$prefix}-sys-color-secondary: #B5A27D; // Khaki as secondary
17
+ --#{$prefix}-sys-color-secondary-rgb: 181, 162, 125;
18
+ --#{$prefix}-sys-color-on-secondary: #FFFFFF;
19
+ --#{$prefix}-sys-color-on-secondary-rgb: 255, 255, 255;
20
+ --#{$prefix}-sys-color-secondary-container: #F7EEDD;
21
+ --#{$prefix}-sys-color-secondary-container-rgb: 247, 238, 221;
22
+ --#{$prefix}-sys-color-on-secondary-container: #3D341D;
23
+ --#{$prefix}-sys-color-on-secondary-container-rgb: 61, 52, 29;
24
+
25
+ --#{$prefix}-sys-color-tertiary: #4F6E8F; // Muted blue as tertiary
26
+ --#{$prefix}-sys-color-tertiary-rgb: 79, 110, 143;
27
+ --#{$prefix}-sys-color-on-tertiary: #FFFFFF;
28
+ --#{$prefix}-sys-color-on-tertiary-rgb: 255, 255, 255;
29
+ --#{$prefix}-sys-color-tertiary-container: #D5E4F7;
30
+ --#{$prefix}-sys-color-tertiary-container-rgb: 213, 228, 247;
31
+ --#{$prefix}-sys-color-on-tertiary-container: #0D2845;
32
+ --#{$prefix}-sys-color-on-tertiary-container-rgb: 13, 40, 69;
33
+
34
+ // Neutral colors with subtle blue undertones
35
+ --#{$prefix}-sys-color-surface: #FAFCFF;
36
+ --#{$prefix}-sys-color-surface-rgb: 250, 252, 255;
37
+ --#{$prefix}-sys-color-surface-dim: #DCE3EF;
38
+ --#{$prefix}-sys-color-surface-dim-rgb: 220, 227, 239;
39
+ --#{$prefix}-sys-color-surface-bright: #FAFCFF;
40
+ --#{$prefix}-sys-color-surface-bright-rgb: 250, 252, 255;
41
+ --#{$prefix}-sys-color-surface-container-lowest: #FFFFFF;
42
+ --#{$prefix}-sys-color-surface-container-lowest-rgb: 255, 255, 255;
43
+ --#{$prefix}-sys-color-surface-container-low: #F5F7FA;
44
+ --#{$prefix}-sys-color-surface-container-low-rgb: 245, 247, 250;
45
+ --#{$prefix}-sys-color-surface-container: #EFF2F6;
46
+ --#{$prefix}-sys-color-surface-container-rgb: 239, 242, 246;
47
+ --#{$prefix}-sys-color-surface-container-high: #E9ECF0;
48
+ --#{$prefix}-sys-color-surface-container-high-rgb: 233, 236, 240;
49
+ --#{$prefix}-sys-color-surface-container-highest: #E2E6EA;
50
+ --#{$prefix}-sys-color-surface-container-highest-rgb: 226, 230, 234;
51
+
52
+ --#{$prefix}-sys-color-on-surface: #191C1F;
53
+ --#{$prefix}-sys-color-on-surface-rgb: 25, 28, 31;
54
+ --#{$prefix}-sys-color-on-surface-variant: #42474E;
55
+ --#{$prefix}-sys-color-on-surface-variant-rgb: 66, 71, 78;
56
+
57
+ --#{$prefix}-sys-color-outline: #73787F;
58
+ --#{$prefix}-sys-color-outline-rgb: 115, 120, 127;
59
+ --#{$prefix}-sys-color-outline-variant: #C4C8CF;
60
+ --#{$prefix}-sys-color-outline-variant-rgb: 196, 200, 207;
61
+
62
+ // Include status colors for light theme
63
+ @include status-colors-light();
64
+
65
+ &[data-theme-mode="dark"] {
66
+ // Key colors for dark mode
67
+ --#{$prefix}-sys-color-primary: #A6C8FF; // Lighter blue
68
+ --#{$prefix}-sys-color-primary-rgb: 166, 200, 255;
69
+ --#{$prefix}-sys-color-on-primary: #002E6F;
70
+ --#{$prefix}-sys-color-on-primary-rgb: 0, 46, 111;
71
+ --#{$prefix}-sys-color-primary-container: #1A4180;
72
+ --#{$prefix}-sys-color-primary-container-rgb: 26, 65, 128;
73
+ --#{$prefix}-sys-color-on-primary-container: #D1E4FF;
74
+ --#{$prefix}-sys-color-on-primary-container-rgb: 209, 228, 255;
75
+
76
+ --#{$prefix}-sys-color-secondary: #DBC497; // Lighter khaki
77
+ --#{$prefix}-sys-color-secondary-rgb: 219, 196, 151;
78
+ --#{$prefix}-sys-color-on-secondary: #3D341D;
79
+ --#{$prefix}-sys-color-on-secondary-rgb: 61, 52, 29;
80
+ --#{$prefix}-sys-color-secondary-container: #554A30;
81
+ --#{$prefix}-sys-color-secondary-container-rgb: 85, 74, 48;
82
+ --#{$prefix}-sys-color-on-secondary-container: #F7EEDD;
83
+ --#{$prefix}-sys-color-on-secondary-container-rgb: 247, 238, 221;
84
+
85
+ --#{$prefix}-sys-color-tertiary: #B1C8EB; // Lighter muted blue
86
+ --#{$prefix}-sys-color-tertiary-rgb: 177, 200, 235;
87
+ --#{$prefix}-sys-color-on-tertiary: #1E3651;
88
+ --#{$prefix}-sys-color-on-tertiary-rgb: 30, 54, 81;
89
+ --#{$prefix}-sys-color-tertiary-container: #354B67;
90
+ --#{$prefix}-sys-color-tertiary-container-rgb: 53, 75, 103;
91
+ --#{$prefix}-sys-color-on-tertiary-container: #D5E4F7;
92
+ --#{$prefix}-sys-color-on-tertiary-container-rgb: 213, 228, 247;
93
+
94
+ // Neutral colors for dark mode
95
+ --#{$prefix}-sys-color-surface: #121518;
96
+ --#{$prefix}-sys-color-surface-rgb: 18, 21, 24;
97
+ --#{$prefix}-sys-color-surface-dim: #0E1115;
98
+ --#{$prefix}-sys-color-surface-dim-rgb: 14, 17, 21;
99
+ --#{$prefix}-sys-color-surface-bright: #2E3237;
100
+ --#{$prefix}-sys-color-surface-bright-rgb: 46, 50, 55;
101
+ --#{$prefix}-sys-color-surface-container-lowest: #0A0D10;
102
+ --#{$prefix}-sys-color-surface-container-lowest-rgb: 10, 13, 16;
103
+ --#{$prefix}-sys-color-surface-container-low: #171A1D;
104
+ --#{$prefix}-sys-color-surface-container-low-rgb: 23, 26, 29;
105
+ --#{$prefix}-sys-color-surface-container: #1B1E21;
106
+ --#{$prefix}-sys-color-surface-container-rgb: 27, 30, 33;
107
+ --#{$prefix}-sys-color-surface-container-high: #252829;
108
+ --#{$prefix}-sys-color-surface-container-high-rgb: 37, 40, 41;
109
+ --#{$prefix}-sys-color-surface-container-highest: #303234;
110
+ --#{$prefix}-sys-color-surface-container-highest-rgb: 48, 50, 52;
111
+
112
+ --#{$prefix}-sys-color-on-surface: #E2E2E5;
113
+ --#{$prefix}-sys-color-on-surface-rgb: 226, 226, 229;
114
+ --#{$prefix}-sys-color-on-surface-variant: #C3C7CD;
115
+ --#{$prefix}-sys-color-on-surface-variant-rgb: 195, 199, 205;
116
+
117
+ --#{$prefix}-sys-color-outline: #8D9297;
118
+ --#{$prefix}-sys-color-outline-rgb: 141, 146, 151;
119
+ --#{$prefix}-sys-color-outline-variant: #42474E;
120
+ --#{$prefix}-sys-color-outline-variant-rgb: 66, 71, 78;
121
+
122
+ // Include status colors for dark theme
123
+ @include status-colors-dark();
124
+ }
125
+ }