@semanticus/semanticus-css 2.2.0 → 3.1.0

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 (150) hide show
  1. package/README.md +23 -22
  2. package/dist/semanticus-no-utilities.css +1 -1
  3. package/dist/semanticus-semantics.css +1 -1
  4. package/dist/semanticus-utilities.css +1 -1
  5. package/dist/semanticus.css +2 -2
  6. package/dist/semanticus.palette.amber.css +1 -1
  7. package/dist/semanticus.palette.azure.css +1 -1
  8. package/dist/semanticus.palette.blue.css +1 -1
  9. package/dist/semanticus.palette.cyan.css +1 -1
  10. package/dist/semanticus.palette.fuchsia.css +1 -1
  11. package/dist/semanticus.palette.green.css +1 -1
  12. package/dist/semanticus.palette.grey.css +1 -1
  13. package/dist/semanticus.palette.indigo.css +1 -1
  14. package/dist/semanticus.palette.jade.css +1 -1
  15. package/dist/semanticus.palette.lime.css +1 -1
  16. package/dist/semanticus.palette.orange.css +1 -1
  17. package/dist/semanticus.palette.pink.css +1 -1
  18. package/dist/semanticus.palette.pumpkin.css +1 -1
  19. package/dist/semanticus.palette.purple.css +1 -1
  20. package/dist/semanticus.palette.red.css +1 -1
  21. package/dist/semanticus.palette.sand.css +1 -1
  22. package/dist/semanticus.palette.slate.css +1 -1
  23. package/dist/semanticus.palette.violet.css +1 -1
  24. package/dist/semanticus.palette.yellow.css +1 -1
  25. package/dist/semanticus.palette.zinc.css +1 -1
  26. package/dist/semanticus.size.pico.css +1 -1
  27. package/package.json +1 -1
  28. package/src/components/_card.css +55 -46
  29. package/src/components/_icons.css +2 -2
  30. package/src/components/_pane.css +15 -8
  31. package/src/components/_sidebar.css +6 -6
  32. package/src/components/_variables.css +28 -0
  33. package/src/components/modules.css +2 -0
  34. package/src/index.css +1 -1
  35. package/src/palettes/amber.css +22 -26
  36. package/src/palettes/azure.css +22 -26
  37. package/src/palettes/blue.css +22 -26
  38. package/src/palettes/cyan.css +22 -26
  39. package/src/palettes/fuchsia.css +25 -26
  40. package/src/palettes/green.css +22 -26
  41. package/src/palettes/grey.css +22 -26
  42. package/src/palettes/indigo.css +22 -26
  43. package/src/palettes/jade.css +22 -26
  44. package/src/palettes/lime.css +22 -26
  45. package/src/palettes/orange.css +22 -26
  46. package/src/palettes/pink.css +22 -26
  47. package/src/palettes/pumpkin.css +25 -26
  48. package/src/palettes/purple.css +22 -26
  49. package/src/palettes/red.css +22 -26
  50. package/src/palettes/sand.css +22 -26
  51. package/src/palettes/slate.css +22 -26
  52. package/src/palettes/violet.css +22 -26
  53. package/src/palettes/yellow.css +22 -26
  54. package/src/palettes/zinc.css +22 -26
  55. package/src/semantics/attributes/_aria-busy.css +1 -10
  56. package/src/semantics/attributes/_aria-disabled.css +2 -23
  57. package/src/semantics/attributes/_disabled.css +3 -0
  58. package/src/semantics/attributes/_popover.css +4 -3
  59. package/src/semantics/attributes/_role-group-search.css +135 -0
  60. package/src/semantics/attributes/_role-list.css +23 -0
  61. package/src/semantics/attributes/_role-status-alert.css +28 -22
  62. package/src/semantics/attributes/_role-tooltip.css +11 -8
  63. package/src/semantics/elements/_address.css +2 -2
  64. package/src/semantics/elements/_aside.css +4 -3
  65. package/src/semantics/elements/_blockquote.css +6 -6
  66. package/src/semantics/elements/_body.css +0 -2
  67. package/src/semantics/elements/_buttons.css +100 -0
  68. package/src/semantics/elements/_code.css +18 -8
  69. package/src/semantics/elements/_del.css +1 -1
  70. package/src/semantics/elements/_details.css +147 -162
  71. package/src/semantics/elements/_dialog.css +24 -17
  72. package/src/semantics/elements/_fieldset.css +27 -0
  73. package/src/semantics/elements/_figure.css +1 -1
  74. package/src/semantics/elements/_footer.css +0 -1
  75. package/src/semantics/elements/_header.css +0 -1
  76. package/src/semantics/elements/_headings.css +86 -9
  77. package/src/semantics/elements/_hgroup.css +2 -2
  78. package/src/semantics/elements/_hr.css +2 -2
  79. package/src/semantics/elements/_inputs.css +14 -0
  80. package/src/semantics/elements/_ins.css +1 -1
  81. package/src/semantics/elements/_label.css +4 -0
  82. package/src/semantics/elements/_links.css +34 -41
  83. package/src/semantics/elements/_lists.css +10 -8
  84. package/src/semantics/elements/_mark.css +2 -2
  85. package/src/semantics/elements/_nav.css +65 -35
  86. package/src/semantics/elements/_p.css +2 -2
  87. package/src/semantics/elements/_progress.css +18 -11
  88. package/src/semantics/elements/{_document.css → _root.css} +12 -9
  89. package/src/semantics/elements/_section.css +0 -1
  90. package/src/semantics/elements/_small.css +27 -0
  91. package/src/semantics/elements/_table.css +20 -6
  92. package/src/semantics/elements/inputs/_checkbox-radio.css +30 -0
  93. package/src/semantics/elements/inputs/_checkbox.css +19 -0
  94. package/src/semantics/elements/{_type-color.css → inputs/_color.css} +5 -3
  95. package/src/semantics/elements/inputs/_common.css +87 -0
  96. package/src/semantics/elements/inputs/_date.css +53 -0
  97. package/src/semantics/elements/inputs/_file.css +35 -0
  98. package/src/semantics/elements/inputs/_input.css +47 -0
  99. package/src/semantics/elements/inputs/_radio.css +11 -0
  100. package/src/semantics/elements/inputs/_range.css +69 -0
  101. package/src/semantics/elements/inputs/_search.css +48 -0
  102. package/src/semantics/elements/inputs/_select.css +32 -0
  103. package/src/semantics/elements/inputs/_switch.css +46 -0
  104. package/src/semantics/elements/inputs/_textarea.css +30 -0
  105. package/src/semantics/modules.css +9 -13
  106. package/src/sizes/pico.css +24 -23
  107. package/src/utilities/_grid.css +917 -179
  108. package/src/utilities/_variables.css +21 -14
  109. package/src/utilities/borders/_border-radius.css +9 -9
  110. package/src/utilities/borders/_border-style.css +10 -10
  111. package/src/utilities/colors/_bg-colors.css +22 -38
  112. package/src/utilities/colors/_border-colors.css +20 -26
  113. package/src/utilities/colors/_subtle-colors.css +55 -61
  114. package/src/utilities/colors/_text-bg-colors.css +35 -35
  115. package/src/utilities/colors/_text-colors.css +24 -46
  116. package/src/utilities/effects/_focus-ring.css +14 -11
  117. package/src/utilities/layout/_misc.css +4 -3
  118. package/src/utilities/sizing/_width.css +48 -0
  119. package/src/utilities/spacing/_gap.css +0 -43
  120. package/src/utilities/spacing/_margin.css +0 -1
  121. package/src/utilities/spacing/_padding.css +0 -1
  122. package/src/utilities/typography/_font-sizes.css +6 -6
  123. package/src/variables/_all.css +3 -4
  124. package/src/variables/_theme.css +394 -237
  125. package/src/variants/_intent.css +8 -0
  126. package/src/variants/_variables.css +109 -9
  127. package/src/variants/intent/_common.css +33 -0
  128. package/src/variants/intent/_contrast.css +30 -31
  129. package/src/variants/intent/_danger.css +7 -30
  130. package/src/variants/intent/_info.css +7 -30
  131. package/src/variants/intent/_primary.css +7 -30
  132. package/src/variants/intent/_secondary.css +7 -30
  133. package/src/variants/intent/_success.css +7 -30
  134. package/src/variants/intent/_warning.css +7 -30
  135. package/src/variants/modifiers/_ghost.css +52 -152
  136. package/src/variants/modifiers/_striped.css +6 -5
  137. package/src/variants/modifiers/_subtle.css +55 -113
  138. package/src/variants/modules.css +1 -7
  139. package/src/semantics/attributes/_role-group.css +0 -126
  140. package/src/semantics/attributes/_role-search.css +0 -14
  141. package/src/semantics/elements/_article.css +0 -3
  142. package/src/semantics/elements/_button.css +0 -124
  143. package/src/semantics/elements/_input.css +0 -302
  144. package/src/semantics/elements/_main.css +0 -3
  145. package/src/semantics/elements/_type-checkbox-radio.css +0 -139
  146. package/src/semantics/elements/_type-date.css +0 -37
  147. package/src/semantics/elements/_type-file.css +0 -23
  148. package/src/semantics/elements/_type-range.css +0 -87
  149. package/src/semantics/elements/_type-search.css +0 -30
  150. package/src/variables/_elements.css +0 -195
@@ -10,260 +10,398 @@
10
10
  color-scheme: dark;
11
11
  }
12
12
 
13
- /* === COLORS === */
14
-
15
- /* Slate shades */
16
- --color-slate-950: #0e1118;
17
- --color-slate-900: #181c25;
18
- --color-slate-850: #202632;
19
- --color-slate-800: #2a3140;
20
- --color-slate-700: #3d475c;
21
- --color-slate-750: #333c4e;
22
- --color-slate-650: #48536b;
23
- --color-slate-600: #525f7a;
24
- --color-slate-550: #5d6b89;
25
- --color-slate-350: #909ebe;
26
- --color-slate-300: #a0acc7;
27
- --color-slate-250: #b0b9d0;
28
- --color-slate-200: #bfc7d9;
29
- --color-slate-150: #cfd5e2;
30
- --color-slate-100: #dfe3eb;
31
- --color-slate-50: #eff1f4;
32
-
33
- /* Zinc shades */
34
- --color-zinc-950: #0f1114;
35
- --color-zinc-900: #191c20;
36
- --color-zinc-850: #23262c;
37
- --color-zinc-750: #373c44;
38
- --color-zinc-700: #424751;
39
- --color-zinc-650: #4d535e;
40
- --color-zinc-600: #5c6370;
41
- --color-zinc-550: #646b79;
42
- --color-zinc-500: #6f7887;
43
- --color-zinc-450: #7b8495;
44
- --color-zinc-400: #8891a4;
45
- --color-zinc-350: #969eaf;
46
- --color-zinc-300: #a4acba;
47
- --color-zinc-250: #b3b9c5;
48
- --color-zinc-200: #c2c7d0;
49
- --color-zinc-100: #e0e3e7;
50
- --color-zinc-50: #f0f1f3;
51
-
52
- /* === GLOBAL SYSTEM TOKENS === */
53
-
54
- --color-background: light-dark(white, color-mix(in srgb, var(--color-slate-950), var(--color-slate-900)));
55
- --color-background-opacity: 100%;
56
- --color-text: light-dark(var(--color-zinc-750), var(--color-zinc-200));
57
- --color-text-opacity: 100%;
58
- --color-text-muted: color-mix(in srgb, var(--color-text), transparent 40%);
59
- --color-border: light-dark(var(--color-slate-100), var(--color-slate-800));
60
- --color-border-opacity: 100%;
61
-
62
- /* Spacing - shared base unit */
63
- --base-spacing: 0.75rem;
64
- --spacing: var(--base-spacing);
65
-
66
- /* Font Families */
67
- --font-family-emoji: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
68
- --font-family-sans-serif: system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, "Helvetica Neue", sans-serif, var(--font-family-emoji);
69
- --font-family-monospace: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace, var(--font-family-emoji);
70
- --font-family: var(--font-family-sans-serif);
13
+ /* ===== PRIVATE HELPER VARIABLES ===== */
14
+
15
+ /* --- Color Slate --- */
16
+ --_color-slate-950: #0e1118;
17
+ --_color-slate-900: #181c25;
18
+ --_color-slate-850: #202632;
19
+ --_color-slate-800: #2a3140;
20
+ --_color-slate-700: #3d475c;
21
+ --_color-slate-750: #333c4e;
22
+ --_color-slate-650: #48536b;
23
+ --_color-slate-600: #525f7a;
24
+ --_color-slate-550: #5d6b89;
25
+ --_color-slate-350: #909ebe;
26
+ --_color-slate-300: #a0acc7;
27
+ --_color-slate-250: #b0b9d0;
28
+ --_color-slate-200: #bfc7d9;
29
+ --_color-slate-150: #cfd5e2;
30
+ --_color-slate-100: #dfe3eb;
31
+ --_color-slate-50: #eff1f4;
32
+
33
+ /* --- Color Zinc --- */
34
+ --_color-zinc-950: #0f1114;
35
+ --_color-zinc-900: #191c20;
36
+ --_color-zinc-850: #23262c;
37
+ --_color-zinc-750: #373c44;
38
+ --_color-zinc-700: #424751;
39
+ --_color-zinc-650: #4d535e;
40
+ --_color-zinc-600: #5c6370;
41
+ --_color-zinc-550: #646b79;
42
+ --_color-zinc-500: #6f7887;
43
+ --_color-zinc-450: #7b8495;
44
+ --_color-zinc-400: #8891a4;
45
+ --_color-zinc-350: #969eaf;
46
+ --_color-zinc-300: #a4acba;
47
+ --_color-zinc-250: #b3b9c5;
48
+ --_color-zinc-200: #c2c7d0;
49
+ --_color-zinc-100: #e0e3e7;
50
+ --_color-zinc-50: #f0f1f3;
51
+
52
+ /* --- Color Jade --- */
53
+ --_color-jade-250: #00cc88;
54
+ --_color-jade-450: #029764;
55
+
56
+ /* --- Color Red --- */
57
+ --_color-red-250: #f5a390;
58
+ --_color-red-450: #ee402e;
59
+
60
+ /* Scale factor that changes according to a given breakpoint, helping make `--spacing` responsive */
61
+ --_spacing-scale: 1;
62
+
63
+ /* ===== TIER 1: SYSTEM TOKENS ===== */
64
+
65
+ /* --- Background Color --- */
66
+ --background-color: light-dark(
67
+ white,
68
+ color-mix(in srgb, var(--_color-slate-950), var(--_color-slate-900))
69
+ );
70
+
71
+ /* --- Color --- */
72
+ --color: light-dark(var(--_color-zinc-750), var(--_color-zinc-200));
71
73
 
72
- /* Typography - base defaults */
74
+ /* --- Typography --- */
75
+ --typography-margin-block: 1rem;
76
+ --typography-color: var(--color);
77
+ --color-muted: color-mix(in srgb, var(--typography-color), transparent 40%);
73
78
  --line-height: 1.5;
74
79
  --font-weight: 400;
75
80
  --font-size: 97%;
76
81
  --text-underline-offset: 0.1rem;
77
- --typography-spacing-vertical: 1rem;
82
+ --font-family-emoji:
83
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
84
+ --font-family-sans-serif:
85
+ system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial,
86
+ "Helvetica Neue", sans-serif, var(--font-family-emoji);
87
+ --font-family-monospace:
88
+ ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono",
89
+ monospace, var(--font-family-emoji);
90
+ --font-family: var(--font-family-sans-serif);
91
+
92
+ /* --- Border --- */
93
+ --border-color: light-dark(var(--_color-slate-100), var(--_color-slate-800));
94
+ --border-radius: 0.25rem;
95
+ --border-width: 0.0625rem;
96
+
97
+ /* --- Outline --- */
98
+ --outline-width: 1px;
78
99
 
79
- /* Borders & Effects */
80
- --radius: 0.25rem;
81
- --border-size: 0.0625rem;
82
- --outline-size: 0.125rem;
100
+ /* --- Opacity --- */
101
+ --opacity-disabled: 0.5;
102
+
103
+ /* --- Transition --- */
83
104
  --transition: 0.2s ease-in-out;
84
105
 
85
- --shadow:
86
- 0.0145rem 0.029rem 0.174rem light-dark(rgb(129 145 181 / 0.01698), rgb(7 9 12 / 0.01698)),
87
- 0.0335rem 0.067rem 0.402rem light-dark(rgb(129 145 181 / 0.024), rgb(7 9 12 / 0.024)),
88
- 0.0625rem 0.125rem 0.75rem light-dark(rgb(129 145 181 / 0.03), rgb(7 9 12 / 0.03)),
89
- 0.1125rem 0.225rem 1.35rem light-dark(rgb(129 145 181 / 0.036), rgb(7 9 12 / 0.036)),
90
- 0.2085rem 0.417rem 2.502rem light-dark(rgb(129 145 181 / 0.04302), rgb(7 9 12 / 0.04302)),
106
+ /* --- Exceptions --- */
107
+
108
+ /* Responsive value used for margins and padding throughout the page */
109
+ --spacing: calc(0.75rem * var(--_spacing-scale));
110
+
111
+ /* Internal helper used to derive colors representing the hover state */
112
+ --color-hover-shade: light-dark(
113
+ var(--_color-zinc-700),
114
+ var(--_color-zinc-300)
115
+ );
116
+
117
+ /* ===== TIER 2: VARIANT TOKENS ===== */
118
+
119
+ /* --- Primary Intent --- */
120
+ --primary-background-color-hover: color-mix(
121
+ in srgb,
122
+ var(--primary-background-color),
123
+ var(--color-hover-shade) 30%
124
+ );
125
+ --primary-color-hover: color-mix(
126
+ in srgb,
127
+ var(--primary-color),
128
+ var(--color-hover-shade) 30%
129
+ );
130
+ --primary-outline-color: color-mix(
131
+ in srgb,
132
+ var(--primary-color),
133
+ light-dark(white, black) 30%
134
+ );
135
+
136
+ /* --- Secondary Intent --- */
137
+ --secondary-background-color: var(--_color-slate-550);
138
+ --secondary-background-color-hover: color-mix(
139
+ in srgb,
140
+ var(--secondary-background-color),
141
+ var(--color-hover-shade) 30%
142
+ );
143
+ --secondary-color: light-dark(
144
+ var(--_color-slate-550),
145
+ var(--_color-zinc-350)
146
+ );
147
+ --secondary-color-hover: color-mix(
148
+ in srgb,
149
+ var(--secondary-color),
150
+ var(--color-hover-shade) 30%
151
+ );
152
+ --secondary-outline-color: color-mix(
153
+ in srgb,
154
+ var(--secondary-color) 70%,
155
+ light-dark(white, black)
156
+ );
157
+
158
+ /* --- Success Intent --- */
159
+ --success-background-color: var(--_color-jade-450);
160
+ --success-background-color-hover: color-mix(
161
+ in srgb,
162
+ var(--success-background-color),
163
+ var(--color-hover-shade) 30%
164
+ );
165
+ --success-color: light-dark(var(--_color-jade-450), var(--_color-jade-250));
166
+ --success-color-hover: color-mix(
167
+ in srgb,
168
+ var(--success-color),
169
+ var(--color-hover-shade) 30%
170
+ );
171
+ --success-outline-color: color-mix(
172
+ in srgb,
173
+ var(--success-color) 70%,
174
+ light-dark(white, black)
175
+ );
176
+
177
+ /* --- Danger Intent --- */
178
+ --danger-background-color: var(--_color-red-450);
179
+ --danger-background-color-hover: color-mix(
180
+ in srgb,
181
+ var(--danger-background-color),
182
+ var(--color-hover-shade) 30%
183
+ );
184
+ --danger-color: light-dark(var(--_color-red-450), var(--_color-red-250));
185
+ --danger-color-hover: color-mix(
186
+ in srgb,
187
+ var(--danger-color),
188
+ var(--color-hover-shade) 30%
189
+ );
190
+ --danger-outline-color: color-mix(
191
+ in srgb,
192
+ var(--danger-color) 70%,
193
+ light-dark(white, black)
194
+ );
195
+
196
+ /* ===== TIER 3: COMPONENT TOKENS ===== */
197
+
198
+ /* --- Building Blocks --- */
199
+ /* All purpose shadow, used by dialog, dropdown and toast components */
200
+ --menu-box-shadow:
201
+ 0.0145rem 0.029rem 0.174rem
202
+ light-dark(rgb(129 145 181 / 0.01698), rgb(7 9 12 / 0.01698)),
203
+ 0.0335rem 0.067rem 0.402rem
204
+ light-dark(rgb(129 145 181 / 0.024), rgb(7 9 12 / 0.024)),
205
+ 0.0625rem 0.125rem 0.75rem
206
+ light-dark(rgb(129 145 181 / 0.03), rgb(7 9 12 / 0.03)),
207
+ 0.1125rem 0.225rem 1.35rem
208
+ light-dark(rgb(129 145 181 / 0.036), rgb(7 9 12 / 0.036)),
209
+ 0.2085rem 0.417rem 2.502rem
210
+ light-dark(rgb(129 145 181 / 0.04302), rgb(7 9 12 / 0.04302)),
91
211
  0.5rem 1rem 6rem light-dark(rgb(129 145 181 / 0.06), rgb(7 9 12 / 0.06)),
92
212
  0 0 0 0.0625rem light-dark(rgb(129 145 181 / 0.015), rgb(7 9 12 / 0.015));
93
213
 
94
- /* Intent Colors */
95
-
96
- /* helpers to add/remove shade to hover states */
97
- --color-hover-effect: light-dark(var(--color-zinc-700), var(--color-zinc-300));
98
- --color-focus-effect: light-dark(var(--color-zinc-300), var(--color-slate-700));
99
-
100
- /* Primary colors - rest of the variables are defined by the palette that gets imported by the _all.css file */
101
- --color-primary-text-hover: color-mix(in srgb, var(--color-primary-text) 70%, var(--color-hover-effect));
102
- --color-primary-fill-hover: color-mix(in srgb, var(--color-primary-fill) 70%, var(--color-hover-effect));
103
- --color-primary-focus-ring: color-mix(in srgb, var(--color-primary-text) 70%, var(--color-focus-effect));
104
-
105
- /* Secondary colors */
106
- --color-secondary-text: light-dark(var(--color-slate-550), var(--color-zinc-350));
107
- --color-secondary-fill: var(--color-slate-550);
108
- --color-secondary-on-fill: white;
109
- --color-secondary-text-hover: color-mix(in srgb, var(--color-secondary-text) 70%, var(--color-hover-effect));
110
- --color-secondary-fill-hover: color-mix(in srgb, var(--color-secondary-fill) 70%, var(--color-hover-effect));
111
- --color-secondary-focus-ring: color-mix(in srgb, var(--color-secondary-text) 70%, var(--color-focus-effect));
112
-
113
- /* Contrast colors */
114
- --color-contrast-text: light-dark(var(--color-slate-900), var(--color-slate-100));
115
- --color-contrast-fill: light-dark(var(--color-slate-900), var(--color-slate-50));
116
- --color-contrast-on-fill: light-dark(white, var(--color-zinc-900));
117
- --color-contrast-text-hover: color-mix(in srgb, var(--color-contrast-text) 70%, var(--color-hover-effect));
118
- --color-contrast-fill-hover: color-mix(in srgb, var(--color-contrast-fill) 70%, var(--color-hover-effect));
119
- --color-contrast-focus-ring: color-mix(in srgb, var(--color-contrast-text) 70%, var(--color-focus-effect));
120
-
121
- /* Success colors */
122
- --color-jade-450: #029764;
123
- --color-jade-250: #00cc88;
124
- --color-success-text: light-dark(var(--color-jade-450), var(--color-jade-250));
125
- --color-success-fill: var(--color-jade-450);
126
- --color-success-on-fill: white;
127
- --color-success-text-hover: color-mix(in srgb, var(--color-success-text) 70%, var(--color-hover-effect));
128
- --color-success-fill-hover: color-mix(in srgb, var(--color-success-fill) 70%, var(--color-hover-effect));
129
- --color-success-focus-ring: color-mix(in srgb, var(--color-success-text) 70%, var(--color-focus-effect));
130
-
131
- /* Info colors */
132
- --color-azure-450: #018cd4;
133
- --color-azure-250: #79c0ff;
134
- --color-info-text: light-dark(var(--color-azure-450), var(--color-azure-250));
135
- --color-info-fill: var(--color-azure-450);
136
- --color-info-on-fill: white;
137
- --color-info-text-hover: color-mix(in srgb, var(--color-info-text) 70%, var(--color-hover-effect));
138
- --color-info-fill-hover: color-mix(in srgb, var(--color-info-fill) 70%, var(--color-hover-effect));
139
- --color-info-focus-ring: color-mix(in srgb, var(--color-info-text) 70%, var(--color-focus-effect));
140
-
141
- /* Warning colors */
142
- --color-amber-350: #c79400;
143
- --color-amber-250: #e8ae01;
144
- --color-warning-text: light-dark(var(--color-amber-350), var(--color-amber-250));
145
- --color-warning-fill: var(--color-amber-350);
146
- --color-warning-on-fill: white;
147
- --color-warning-text-hover: color-mix(in srgb, var(--color-warning-text) 70%, var(--color-hover-effect));
148
- --color-warning-fill-hover: color-mix(in srgb, var(--color-warning-fill) 70%, var(--color-hover-effect));
149
- --color-warning-focus-ring: color-mix(in srgb, var(--color-warning-text) 70%, var(--color-focus-effect));
150
-
151
- /* Danger colors */
152
- --color-red-450: #ee402e;
153
- --color-red-250: #f5a390;
154
- --color-danger-text: light-dark(var(--color-red-450), var(--color-red-250));
155
- --color-danger-fill: var(--color-red-450);
156
- --color-danger-on-fill: white;
157
- --color-danger-text-hover: color-mix(in srgb, var(--color-danger-text) 70%, var(--color-hover-effect));
158
- --color-danger-fill-hover: color-mix(in srgb, var(--color-danger-fill) 70%, var(--color-hover-effect));
159
- --color-danger-focus-ring: color-mix(in srgb, var(--color-danger-text) 70%, var(--color-focus-effect));
160
-
161
- /* === COMPONENT TOKENS === */
162
-
163
- --a-decoration: underline;
164
-
165
- /* === Typography tokens === */
166
- --h1-size: 2rem;
167
- --h2-size: 1.75rem;
168
- --h3-size: 1.5rem;
169
- --h4-size: 1.25rem;
170
- --h5-size: 1.125rem;
171
- --h6-size: 1rem;
172
-
173
- /* === Button tokens === */
174
- --button-shadow: 0 0 0 rgb(0 0 0 / 0);
175
- --button-shadow-hover: 0 0 0 rgb(0 0 0 / 0);
176
-
177
- /* === Code tokens === */
178
- --code-fill: light-dark(
179
- color-mix(in srgb, var(--color-slate-50) 75%, white),
180
- color-mix(in srgb, var(--color-slate-900) 75%, var(--color-slate-850))
214
+ /* All overlay background, used by dialog */
215
+ --backdrop-background-color: light-dark(
216
+ oklch(
217
+ from color-mix(in srgb, var(--_color-zinc-100), var(--_color-zinc-50)) l c
218
+ h / 0.75
219
+ ),
220
+ oklch(from color-mix(in srgb, black, var(--_color-zinc-950)) l c h / 0.75)
181
221
  );
182
- --code-text: light-dark(var(--color-zinc-550), var(--color-zinc-400));
183
- --kbd-fill: var(--color-text);
184
- --kbd-text: var(--color-background);
185
-
186
- /* === Input / Form tokens === */
187
- --input-spacing-vertical: 0.5rem;
188
- --input-spacing-horizontal: 0.7rem;
189
- --input-fill: light-dark(
190
- color-mix(in srgb, var(--color-slate-50) 25%, white),
191
- color-mix(in srgb, var(--color-slate-900), var(--color-slate-850))
222
+
223
+ /* Focus ring used across interactive elements, typically used in combination with --outline-width */
224
+ /* each component decides to which css property they should be applied */
225
+ --focus-ring-width: 0.125rem;
226
+
227
+ /* --- Buttons --- */
228
+ /* Affects button, input[type="button"], input[type="submit"], input[type="reset"], and elements with role="button" */
229
+ --buttons-background-color-hover: var(--primary-background-color-hover);
230
+ --buttons-background-color: var(--primary-background-color);
231
+ --buttons-color-hover: white;
232
+ --buttons-color: white;
233
+ --buttons-padding-block: var(--inputs-padding-block);
234
+ --buttons-padding-inline: var(--inputs-padding-inline);
235
+
236
+ /* --- Code --- */
237
+ --code-background-color: light-dark(
238
+ color-mix(in srgb, var(--_color-slate-50) 75%, white),
239
+ color-mix(in srgb, var(--_color-slate-900) 75%, var(--_color-slate-850))
192
240
  );
193
- --input-fill-selected: light-dark(var(--color-slate-100), var(--color-slate-800));
194
- --input-fill-active: light-dark(
195
- white,
196
- color-mix(in srgb, var(--color-slate-900) 75%, var(--color-slate-850))
241
+ --code-color: light-dark(var(--_color-zinc-550), var(--_color-zinc-400));
242
+ --kbd-background-color: var(--color);
243
+ --kbd-color: var(--background-color);
244
+ --kbd-font-weight: bolder;
245
+
246
+ /* --- Details --- */
247
+ /* Affects accordions and dropdowns */
248
+ --details-summary-background-color: var(--inputs-background-color);
249
+ --details-summary-color: var(--color);
250
+ --details-summary-color-open: var(--color-muted);
251
+
252
+ /* --- Dropdown styling applied to the summary element --- */
253
+ --details-dropdown-color: var(--inputs-placeholder-color);
254
+ --details-dropdown-border-color: var(--inputs-border-color);
255
+ --details-dropdown-padding-block: var(--inputs-padding-block);
256
+ --details-dropdown-padding-inline: var(--inputs-padding-inline);
257
+
258
+ /* --- Menu styling applied to the ul[role="menu"] element --- */
259
+ --details-menu-background-color: light-dark(white, var(--_color-slate-900));
260
+ --details-menu-border-color: light-dark(
261
+ var(--_color-slate-50),
262
+ var(--_color-slate-850)
263
+ );
264
+ --details-menu-color: var(--color);
265
+ --details-menu-background-color-hover: light-dark(
266
+ var(--_color-slate-50),
267
+ var(--_color-slate-850)
268
+ );
269
+
270
+ /* --- Dialog --- */
271
+ --dialog-border-color: var(--border-color);
272
+ --dialog-background-color: var(--background-color);
273
+
274
+ /* Shade styling, applied to header & footer elements */
275
+ --dialog-marginals-background-color: light-dark(
276
+ color-mix(in srgb, var(--_color-slate-50) 25%, white),
277
+ color-mix(in srgb, var(--_color-slate-50), transparent 95%)
278
+ );
279
+ --dialog-marginals-border-color: color-mix(
280
+ in srgb,
281
+ light-dark(var(--_color-slate-900), var(--_color-zinc-350)),
282
+ transparent 90%
197
283
  );
198
- --input-border: light-dark(var(--color-slate-150), var(--color-slate-800));
199
- --input-text: light-dark(var(--color-zinc-850), var(--color-zinc-100));
200
- --input-placeholder-text: var(--color-text-muted);
201
- --input-border-focus: var(--color-primary-fill);
202
- --input-opacity-disabled: 0.5;
203
-
204
- /* === Switch tokens === */
205
- --switch-fill: light-dark(var(--color-slate-200), var(--color-slate-750));
206
- --switch-fill-checked: var(--color-primary-fill);
207
- --switch-thumb-fill: white;
208
-
209
- /* === Range tokens === */
210
- --range-track-border: light-dark(var(--color-slate-100), var(--color-slate-850));
211
- --range-track-border-active: light-dark(var(--color-slate-200), var(--color-slate-800));
212
- --range-thumb-border: var(--color-background);
213
- --range-thumb-fill: var(--color-secondary-fill);
214
- --range-thumb-fill-active: var(--color-primary-fill);
215
-
216
- /* === Details / Accordion tokens === */
217
- --details-summary-text: var(--color-text);
218
- --details-summary-text-hover: var(--color-primary-text-hover);
219
- --details-summary-text-open: var(--color-text-muted);
220
-
221
- /* === Dialog / Alert tokens === */
222
- --dialog-fill: light-dark(var(--color-background), var(--color-slate-900));
223
- --dialog-border: var(--color-border);
224
- --dialog-shadow: var(--shadow);
225
- --dialog-section-fill: light-dark(
226
- color-mix(in srgb, var(--color-slate-50) 25%, white),
227
- color-mix(in srgb, var(--color-slate-50), transparent 95%)
284
+
285
+ /* --- Group --- */
286
+ /* Affects elements with role="group" and its children */
287
+ --group-buttons-padding-inline: 1rem;
288
+
289
+ /* --- Headings --- */
290
+ --heading-font-weight: 700;
291
+ --h1-font-size: 2rem;
292
+ --h1-margin-top: 3rem;
293
+ --h1-line-height: 1.125;
294
+ --h2-font-size: 1.75rem;
295
+ --h2-margin-top: 2.625rem;
296
+ --h2-line-height: 1.15;
297
+ --h3-font-size: 1.5rem;
298
+ --h3-margin-top: 2.25rem;
299
+ --h3-line-height: 1.175;
300
+ --h4-font-size: 1.25rem;
301
+ --h4-margin-top: 1.874rem;
302
+ --h4-line-height: 1.2;
303
+ --h5-font-size: 1.125rem;
304
+ --h5-margin-top: 1.6875rem;
305
+ --h5-line-height: 1.225;
306
+ --h6-font-size: 1rem;
307
+ --h6-margin-top: 1.5rem;
308
+ --h6-line-height: 1.25;
309
+
310
+ /* --- Icons --- */
311
+ --icons-background-position-gap: 0.75rem;
312
+ --icons-width: 1em;
313
+
314
+ /* --- Inputs --- */
315
+ /* Affects input, select, textarea and details elements */
316
+ --inputs-accent-color: var(--primary-background-color);
317
+ --inputs-accent-color-muted: light-dark(
318
+ var(--_color-slate-200),
319
+ var(--_color-slate-750)
228
320
  );
229
- --dialog-section-border: color-mix(in srgb, light-dark(var(--color-slate-900), var(--color-zinc-350)), transparent 90%);
230
- --dialog-overlay: light-dark(
231
- oklch(from color-mix(in srgb, var(--color-zinc-100), var(--color-zinc-50)) l c h / 0.75),
232
- oklch(from color-mix(in srgb, black, var(--color-zinc-950)) l c h / 0.75)
321
+ --inputs-padding-block: 0.5rem;
322
+ --inputs-padding-inline: 0.7rem;
323
+ --inputs-background-color: light-dark(
324
+ color-mix(in srgb, var(--_color-slate-50) 25%, white),
325
+ color-mix(in srgb, var(--_color-slate-900), var(--_color-slate-850))
233
326
  );
327
+ --inputs-background-color-focus: light-dark(
328
+ white,
329
+ color-mix(in srgb, var(--_color-slate-900) 75%, var(--_color-slate-850))
330
+ );
331
+ --inputs-border-color: light-dark(
332
+ var(--_color-slate-150),
333
+ var(--_color-slate-800)
334
+ );
335
+ --inputs-color: light-dark(var(--_color-zinc-850), var(--_color-zinc-100));
336
+ --inputs-placeholder-color: var(--color-muted);
337
+
338
+ /* --- Input Checkbox --- */
339
+ --input-checkbox-border-width: 0.125rem;
234
340
 
235
- /* === Menu / Dropdown tokens === */
236
- --menu-fill: light-dark(white, var(--color-slate-900));
237
- --menu-border: light-dark(var(--color-slate-50), var(--color-slate-850));
238
- --menu-shadow: var(--shadow);
239
- --menu-text: var(--color-text);
240
- --menu-fill-hover: light-dark(var(--color-slate-50), var(--color-slate-850));
341
+ /* --- Input Radio --- */
342
+ --input-radio-background-color: white;
241
343
 
242
- /* === Loading tokens === */
243
- --loading-spinner-opacity: 0.5;
344
+ /* --- Input Range --- */
345
+ --input-range-thumb-size: 1.25rem;
346
+ --input-range-thumb-margin-top: -0.4375rem;
347
+ --input-range-thumb-border-color: var(--background-color);
348
+ --input-range-thumb-border-width: var(--focus-ring-width);
349
+ --input-range-track-background-color: var(--inputs-border-color);
350
+ --input-range-track-height: 0.375rem;
244
351
 
245
- /* === Progress tokens === */
246
- --progress-track-fill: light-dark(var(--color-slate-100), var(--color-slate-850));
247
- --progress-fill: var(--color-primary-fill);
352
+ /* --- Input Search --- */
353
+ --input-search-border-radius: 5rem;
248
354
 
249
- /* === Tooltip tokens === */
250
- --tooltip-fill: var(--color-contrast-fill);
251
- --tooltip-text: var(--color-contrast-on-fill);
355
+ /* --- Input Switch --- */
356
+ --input-switch-thumb-background-color: white;
357
+ --input-switch-border-width: 0.1875rem;
358
+ --input-switch-border-radius: 1.25em;
252
359
 
253
- /* Group Shadows */
254
- --group-shadow: 0 0 0 rgba(0, 0, 0, 0);
255
- --group-shadow-focus-button: 0 0 0 var(--outline-size) var(--color-primary-focus-ring);
256
- --group-shadow-focus-input: 0 0 0 0.0625rem var(--input-border);
360
+ /* --- Links (anchor and role="link") --- */
361
+ --links-color: var(--primary-color);
362
+ --links-color-hover: var(--primary-color-hover);
363
+ --links-text-decoration: underline;
257
364
 
258
- /* Navigation */
365
+ /* --- Lists (ul, ol and role="list") --- */
366
+ --lists-marker-color: var(--primary-color);
367
+
368
+ /* --- Mark --- */
369
+ --mark-background-color: light-dark(#c79400, #e8ae01);
370
+
371
+ /* --- Navigation --- */
259
372
  --nav-link-gap: calc(var(--spacing) * 0.5);
260
373
  --nav-breadcrumb-divider: ">";
261
374
 
262
- /* Sidebar */
375
+ /* --- Progress Bar --- */
376
+ --progress-accent-color: var(--primary-background-color);
377
+ --progress-track-background-color: light-dark(
378
+ var(--_color-slate-100),
379
+ var(--_color-slate-850)
380
+ );
381
+
382
+ /* --- Selection of text --- */
383
+ --selection-background-color: color-mix(
384
+ in srgb,
385
+ var(--primary-color),
386
+ white 75%
387
+ );
388
+
389
+ /* --- Sidebar --- */
263
390
  --sidebar-size: 25%;
391
+
392
+ /* --- Small --- */
393
+ --small-font-size: 80%;
394
+
395
+ /* --- Table --- */
396
+ --table-header-font-weight: 600;
397
+ --table-header-border-width: 0.1875rem;
398
+
399
+ /* --- Tooltip --- */
400
+ --tooltip-background-color: var(--contrast-background-color);
401
+ --tooltip-color: light-dark(white, var(--_color-zinc-900));
264
402
  }
265
403
 
266
- /* === ICONS === */
404
+ /* ===== ICONS ===== */
267
405
  body {
268
406
  --icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
269
407
  --icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
@@ -276,9 +414,23 @@ body {
276
414
  --icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");
277
415
  --icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(43, 122, 76)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
278
416
 
417
+ @container style(--theme: light) {
418
+ [data-theme="contrast"] {
419
+ --theme: dark;
420
+
421
+ color-scheme: dark;
422
+ }
423
+ }
424
+
279
425
  @container style(--theme: dark) {
280
426
  --icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(110, 213, 157)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
281
427
  --icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(243, 143, 121)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
428
+
429
+ [data-theme="contrast"] {
430
+ --theme: light;
431
+
432
+ color-scheme: light;
433
+ }
282
434
  }
283
435
  }
284
436
 
@@ -294,43 +446,48 @@ body {
294
446
  color-scheme: dark;
295
447
  }
296
448
 
297
- /* === RESPONSIVE ADJUSTMENTS === */
449
+ /* ===== RESPONSIVE ADJUSTMENTS ===== */
298
450
  @media (--breakpoint-sm) {
299
- :root, :host {
451
+ :root,
452
+ :host {
300
453
  --font-size: 98%;
301
454
  --sidebar-size: max(25%, 150px);
302
- --spacing: calc(var(--base-spacing) * 1.1);
455
+ --_spacing-scale: 1.1;
303
456
  }
304
457
  }
305
458
 
306
459
  @media (--breakpoint-md) {
307
- :root, :host {
460
+ :root,
461
+ :host {
308
462
  --font-size: 99%;
309
463
  --sidebar-size: max(22%, 180px);
310
- --spacing: calc(var(--base-spacing) * 1.2);
464
+ --_spacing-scale: 1.2;
311
465
  }
312
466
  }
313
467
 
314
468
  @media (--breakpoint-lg) {
315
- :root, :host {
469
+ :root,
470
+ :host {
316
471
  --font-size: 100%;
317
472
  --sidebar-size: max(20%, 200px);
318
- --spacing: calc(var(--base-spacing) * 1.3);
473
+ --_spacing-scale: 1.3;
319
474
  }
320
475
  }
321
476
 
322
477
  @media (--breakpoint-xl) {
323
- :root, :host {
478
+ :root,
479
+ :host {
324
480
  --font-size: 101%;
325
481
  --sidebar-size: max(18%, 220px);
326
- --spacing: calc(var(--base-spacing) * 1.4);
482
+ --_spacing-scale: 1.4;
327
483
  }
328
484
  }
329
485
 
330
486
  @media (--breakpoint-xxl) {
331
- :root, :host {
487
+ :root,
488
+ :host {
332
489
  --font-size: 102%;
333
490
  --sidebar-size: clamp(240px, 16%, 300px);
334
- --spacing: calc(var(--base-spacing) * 1.5);
491
+ --_spacing-scale: 1.5;
335
492
  }
336
493
  }