@semanticus/semanticus-css 0.5.1 → 0.8.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 (84) hide show
  1. package/README.md +8 -10
  2. package/dist/semanticus-semantics.css +11 -1
  3. package/dist/semanticus.css +13 -1
  4. package/dist/semanticus.palette.amber.css +1 -1
  5. package/dist/semanticus.palette.blue.css +1 -1
  6. package/dist/semanticus.palette.cyan.css +1 -1
  7. package/dist/semanticus.palette.fuchsia.css +1 -1
  8. package/dist/semanticus.palette.green.css +1 -1
  9. package/dist/semanticus.palette.grey.css +1 -1
  10. package/dist/semanticus.palette.indigo.css +1 -1
  11. package/dist/semanticus.palette.jade.css +1 -1
  12. package/dist/semanticus.palette.lime.css +1 -1
  13. package/dist/semanticus.palette.orange.css +1 -1
  14. package/dist/semanticus.palette.pink.css +1 -1
  15. package/dist/semanticus.palette.pumpkin.css +1 -1
  16. package/dist/semanticus.palette.purple.css +1 -1
  17. package/dist/semanticus.palette.red.css +1 -1
  18. package/dist/semanticus.palette.sand.css +1 -1
  19. package/dist/semanticus.palette.slate.css +1 -1
  20. package/dist/semanticus.palette.violet.css +1 -1
  21. package/dist/semanticus.palette.yellow.css +1 -1
  22. package/dist/semanticus.palette.zinc.css +1 -1
  23. package/dist/semanticus.size.pico.css +1 -0
  24. package/package.json +3 -7
  25. package/src/index.css +11 -4
  26. package/src/palettes/amber.css +3 -3
  27. package/src/palettes/blue.css +3 -3
  28. package/src/palettes/cyan.css +3 -3
  29. package/src/palettes/fuchsia.css +3 -3
  30. package/src/palettes/green.css +3 -3
  31. package/src/palettes/grey.css +3 -3
  32. package/src/palettes/indigo.css +3 -3
  33. package/src/palettes/jade.css +3 -3
  34. package/src/palettes/lime.css +3 -3
  35. package/src/palettes/orange.css +3 -3
  36. package/src/palettes/pink.css +3 -3
  37. package/src/palettes/pumpkin.css +3 -3
  38. package/src/palettes/purple.css +3 -3
  39. package/src/palettes/red.css +3 -3
  40. package/src/palettes/sand.css +3 -3
  41. package/src/palettes/slate.css +3 -3
  42. package/src/palettes/violet.css +3 -3
  43. package/src/palettes/yellow.css +3 -3
  44. package/src/palettes/zinc.css +3 -3
  45. package/src/semantics/_aside.css +2 -2
  46. package/src/semantics/_details.css +1 -1
  47. package/src/semantics/_input.css +2 -2
  48. package/src/semantics/_links.css +1 -1
  49. package/src/semantics/_progress.css +1 -1
  50. package/src/semantics/_typography.css +18 -9
  51. package/src/semantics/index.css +9 -4
  52. package/src/sizes/pico.css +95 -0
  53. package/src/utilities/_variables.css +19 -214
  54. package/src/utilities/borders/_border-radius.css +24 -0
  55. package/src/utilities/borders/_border-width.css +8 -0
  56. package/src/utilities/colors/_background-colors.css +90 -51
  57. package/src/utilities/colors/_border-colors.css +14 -14
  58. package/src/utilities/colors/_text-colors.css +172 -82
  59. package/src/utilities/effects/_shadows.css +10 -10
  60. package/src/utilities/layout/_flexbox.css +16 -1
  61. package/src/utilities/layout/_misc.css +2 -2
  62. package/src/utilities/modules.css +6 -0
  63. package/src/utilities/spacing/_gap.css +63 -0
  64. package/src/utilities/spacing/_margin.css +145 -0
  65. package/src/utilities/spacing/_padding.css +145 -0
  66. package/src/utilities/typography/_font-sizes.css +0 -15
  67. package/src/variables/_all.css +15 -754
  68. package/src/variables/_breakpoints.css +10 -0
  69. package/src/variables/_colors.css +366 -0
  70. package/src/variables/_components.css +318 -0
  71. package/src/variables/_elements.css +199 -0
  72. package/src/variables/_icons.css +43 -0
  73. package/src/variables/{_shared.css → _layout.css} +71 -64
  74. package/src/variants/_contrast.css +1 -1
  75. package/src/variants/_ghost.css +8 -8
  76. package/src/variants/_secondary.css +1 -1
  77. package/src/variants/modules.css +0 -1
  78. package/dist/semanticus-utilities.css +0 -7
  79. package/dist/semanticus-variants.css +0 -1
  80. package/dist/semanticus.size.slim.css +0 -1
  81. package/src/sizes/slim.css +0 -41
  82. package/src/utilities/index.css +0 -14
  83. package/src/variants/_frame.css +0 -15
  84. package/src/variants/index.css +0 -9
@@ -0,0 +1,10 @@
1
+ /* ==========================================================================
2
+ Responsive Breakpoints (custom media queries)
3
+ Used consistently across semantics, variants, and utilities.
4
+ ========================================================================== */
5
+
6
+ @custom-media --breakpoint-sm (min-width: 576px);
7
+ @custom-media --breakpoint-md (min-width: 768px);
8
+ @custom-media --breakpoint-lg (min-width: 1024px);
9
+ @custom-media --breakpoint-xl (min-width: 1280px);
10
+ @custom-media --breakpoint-xxl (min-width: 1536px);
@@ -0,0 +1,366 @@
1
+ /* ==========================================================================
2
+ Color Variables
3
+ ==========================================================================
4
+
5
+ Semantic color system with RGB values for opacity manipulation,
6
+ theme-aware variables for light/dark modes, and component color roles.
7
+
8
+ Naming convention:
9
+ --color-{role} Text color for links, buttons, inline elements
10
+ --color-{role}-bg Background fill
11
+ --color-{role}-border Border color
12
+ --color-{role}-underline Semi-transparent underline for links
13
+ --color-{role}-hover Text color on hover
14
+ --color-{role}-hover-bg Background on hover
15
+ --color-{role}-focus Focus ring / outline color
16
+ --color-{role}-inverse Text on top of filled backgrounds
17
+
18
+ Roles: primary (brand CTA), secondary (neutral actions), contrast (high-emphasis)
19
+ ========================================================================== */
20
+
21
+ /* ==========================================================================
22
+ Light Theme (Default)
23
+ ========================================================================== */
24
+
25
+ [data-theme="light"],
26
+ :root:not([data-theme="dark"]),
27
+ :host(:not([data-theme="dark"])) {
28
+ color-scheme: light;
29
+
30
+ /* RGB channels */
31
+ --color-primary-rgb: 1, 114, 173;
32
+ --color-secondary-rgb: 93, 107, 137;
33
+ --color-contrast-rgb: 24, 28, 37;
34
+ --color-success-rgb: 43, 122, 76;
35
+ --color-info-rgb: 4, 120, 120;
36
+ --color-warning-rgb: 255, 191, 0;
37
+ --color-danger-rgb: 197, 47, 33;
38
+
39
+ /* Body & emphasis RGB */
40
+ --color-body-rgb: 55, 60, 68;
41
+ --color-text-rgb: 55, 60, 68;
42
+ --color-body-bg-rgb: 255, 255, 255;
43
+ --color-emphasis-rgb: 24, 28, 37;
44
+
45
+ /* Secondary surfaces */
46
+ --color-secondary-bg-rgb: 233, 236, 239;
47
+
48
+ /* Link RGB */
49
+ --color-link-rgb: 1, 114, 173;
50
+
51
+ /* Emphasis colors (RGB format for use with rgba()) */
52
+ --color-primary-emphasis-rgb: 1, 88, 135;
53
+ --color-secondary-emphasis-rgb: 72, 83, 107;
54
+ --color-success-emphasis-rgb: 32, 96, 59;
55
+ --color-info-emphasis-rgb: 2, 93, 93;
56
+ --color-warning-emphasis-rgb: 105, 77, 0;
57
+ --color-danger-emphasis-rgb: 155, 35, 24;
58
+ --color-contrast-emphasis-rgb: 249, 250, 251;
59
+
60
+ /* Subtle backgrounds (low opacity) */
61
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.1);
62
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.1);
63
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.1);
64
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.1);
65
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.1);
66
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.1);
67
+ --color-contrast-bg-subtle: #ced4da;
68
+
69
+ /* Subtle borders (medium opacity) */
70
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
71
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
72
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
73
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
74
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
75
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
76
+ --color-contrast-border-subtle: #adb5bd;
77
+
78
+ /* Status inverse colors */
79
+ --color-success-inverse: #fff;
80
+ --color-info-inverse: #fff;
81
+ --color-warning-inverse: #000;
82
+ --color-danger-inverse: #fff;
83
+
84
+ /* Core Colors */
85
+ --color-background: #fff;
86
+ --color-text: rgb(var(--color-text-rgb));
87
+ --color-text-selection: rgba(2, 154, 232, 0.25);
88
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
89
+ --color-border-muted: rgb(231, 234, 239.5);
90
+
91
+ /* Primary */
92
+ --color-primary-bg: #0172ad;
93
+ --color-primary-border: var(--color-primary-bg);
94
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
95
+ --color-primary-hover: #015887;
96
+ --color-primary-hover-bg: #02659a;
97
+ --color-primary-hover-border: var(--color-primary-hover-bg);
98
+ --color-primary-hover-underline: var(--color-primary-hover);
99
+ --color-primary-focus: rgba(2, 154, 232, 0.5);
100
+ --color-primary-inverse: #fff;
101
+
102
+ /* Secondary */
103
+ --color-secondary-bg: #525f7a;
104
+ --color-secondary-border: var(--color-secondary-bg);
105
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
106
+ --color-secondary-hover: #48536b;
107
+ --color-secondary-hover-bg: #48536b;
108
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
109
+ --color-secondary-hover-underline: var(--color-secondary-hover);
110
+ --color-secondary-focus: rgba(var(--color-secondary-rgb), 0.25);
111
+ --color-secondary-inverse: #fff;
112
+
113
+ /* Contrast */
114
+ --color-contrast-bg: #181c25;
115
+ --color-contrast-border: var(--color-contrast-bg);
116
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
117
+ --color-contrast-hover: #000;
118
+ --color-contrast-hover-bg: #000;
119
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
120
+ --color-contrast-hover-underline: var(--color-contrast-hover);
121
+ --color-contrast-focus: rgba(93, 107, 137, 0.25);
122
+ --color-contrast-inverse: #fff;
123
+
124
+ /* Shadows */
125
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(129, 145, 181, 0.1);
126
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(129, 145, 181, 0.15);
127
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024), 0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03), 0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036), 0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302), 0.5rem 1rem 6rem rgba(129, 145, 181, 0.06), 0 0 0 0.0625rem rgba(129, 145, 181, 0.015);
128
+
129
+ /* Headings - base color for progressive lightness via color-mix */
130
+ --color-heading-base: #2d3138;
131
+
132
+ /* Mark & Text */
133
+ --color-mark-bg: rgb(252.5, 230.5, 191.5);
134
+ --color-mark-text: #0f1114;
135
+
136
+ /* Blockquote */
137
+ --blockquote-border-color: var(--color-border-muted);
138
+ --blockquote-footer-color: var(--color-text-muted);
139
+ }
140
+
141
+ /* ==========================================================================
142
+ Dark Theme (System Preference)
143
+ ========================================================================== */
144
+
145
+ @media only screen and (prefers-color-scheme: dark) {
146
+ :root:not([data-theme]),
147
+ :host(:not([data-theme])) {
148
+ color-scheme: dark;
149
+
150
+ /* RGB channels */
151
+ --color-primary-rgb: 1, 170, 255;
152
+ --color-secondary-rgb: 150, 158, 175;
153
+ --color-contrast-rgb: 248, 249, 250;
154
+ --color-success-rgb: 110, 213, 157;
155
+ --color-info-rgb: 10, 194, 194;
156
+ --color-warning-rgb: 255, 191, 0;
157
+ --color-danger-rgb: 243, 143, 121;
158
+
159
+ /* Body & emphasis RGB */
160
+ --color-body-rgb: 194, 199, 208;
161
+ --color-text-rgb: 194, 199, 208;
162
+ --color-body-bg-rgb: 19, 23, 31;
163
+ --color-emphasis-rgb: 223, 227, 235;
164
+
165
+ /* Secondary surfaces */
166
+ --color-secondary-bg-rgb: 42, 49, 64;
167
+
168
+ /* Link RGB */
169
+ --color-link-rgb: 1, 170, 255;
170
+
171
+ /* Emphasis colors */
172
+ --color-primary-emphasis-rgb: 121, 192, 255;
173
+ --color-secondary-emphasis-rgb: 179, 185, 197;
174
+ --color-success-emphasis-rgb: 147, 222, 181;
175
+ --color-info-emphasis-rgb: 37, 221, 221;
176
+ --color-warning-emphasis-rgb: 232, 174, 1;
177
+ --color-danger-emphasis-rgb: 245, 183, 168;
178
+ --color-contrast-emphasis-rgb: 255, 255, 255;
179
+
180
+ /* Subtle backgrounds */
181
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.15);
182
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.15);
183
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.15);
184
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.15);
185
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.15);
186
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.15);
187
+ --color-contrast-bg-subtle: #2a3140;
188
+
189
+ /* Subtle borders */
190
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
191
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
192
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
193
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
194
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
195
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
196
+ --color-contrast-border-subtle: #2a3140;
197
+
198
+ /* Core Colors */
199
+ --color-background: rgb(19, 22.5, 30.5);
200
+ --color-text: rgb(var(--color-text-rgb));
201
+ --color-text-selection: rgba(var(--color-primary-rgb), 0.1875);
202
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
203
+ --color-border-muted: #202632;
204
+
205
+ /* Primary */
206
+ --color-primary-bg: #0172ad;
207
+ --color-primary-border: var(--color-primary-bg);
208
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
209
+ --color-primary-hover: #79c0ff;
210
+ --color-primary-hover-bg: #017fc0;
211
+ --color-primary-hover-border: var(--color-primary-hover-bg);
212
+ --color-primary-hover-underline: var(--color-primary-hover);
213
+ --color-primary-focus: rgba(var(--color-primary-rgb), 0.375);
214
+ --color-primary-inverse: #fff;
215
+
216
+ /* Secondary */
217
+ --color-secondary-bg: #525f7a;
218
+ --color-secondary-border: var(--color-secondary-bg);
219
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
220
+ --color-secondary-hover: #b3b9c5;
221
+ --color-secondary-hover-bg: #5d6b89;
222
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
223
+ --color-secondary-hover-underline: var(--color-secondary-hover);
224
+ --color-secondary-focus: rgba(144, 158, 190, 0.25);
225
+ --color-secondary-inverse: #fff;
226
+
227
+ /* Contrast */
228
+ --color-contrast-bg: #eff1f4;
229
+ --color-contrast-border: var(--color-contrast-bg);
230
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
231
+ --color-contrast-hover: #fff;
232
+ --color-contrast-hover-bg: #fff;
233
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
234
+ --color-contrast-hover-underline: var(--color-contrast-hover);
235
+ --color-contrast-focus: rgba(207, 213, 226, 0.25);
236
+ --color-contrast-inverse: #000;
237
+
238
+ /* Shadows */
239
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(7, 8.5, 12, 0.1);
240
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(7, 8.5, 12, 0.15);
241
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
242
+
243
+ /* Headings */
244
+ --color-heading-base: #f0f1f3;
245
+
246
+ /* Mark & Text */
247
+ --color-mark-bg: #014063;
248
+ --color-mark-text: #fff;
249
+
250
+ /* Blockquote */
251
+ --blockquote-border-color: var(--color-border-muted);
252
+ --blockquote-footer-color: var(--color-text-muted);
253
+ }
254
+ }
255
+
256
+ /* ==========================================================================
257
+ Dark Theme (Explicit)
258
+ ========================================================================== */
259
+
260
+ [data-theme="dark"] {
261
+ color-scheme: dark;
262
+
263
+ /* RGB channels */
264
+ --color-primary-rgb: 1, 170, 255;
265
+ --color-secondary-rgb: 150, 158, 175;
266
+ --color-contrast-rgb: 248, 249, 250;
267
+ --color-success-rgb: 110, 213, 157;
268
+ --color-info-rgb: 10, 194, 194;
269
+ --color-warning-rgb: 255, 191, 0;
270
+ --color-danger-rgb: 243, 143, 121;
271
+
272
+ /* Body & emphasis RGB */
273
+ --color-body-rgb: 194, 199, 208;
274
+ --color-text-rgb: 194, 199, 208;
275
+ --color-body-bg-rgb: 19, 23, 31;
276
+ --color-emphasis-rgb: 223, 227, 235;
277
+
278
+ /* Secondary surfaces */
279
+ --color-secondary-bg-rgb: 42, 49, 64;
280
+
281
+ /* Link RGB */
282
+ --color-link-rgb: 1, 170, 255;
283
+
284
+ /* Emphasis colors */
285
+ --color-primary-emphasis-rgb: 121, 192, 255;
286
+ --color-secondary-emphasis-rgb: 179, 185, 197;
287
+ --color-success-emphasis-rgb: 147, 222, 181;
288
+ --color-info-emphasis-rgb: 37, 221, 221;
289
+ --color-warning-emphasis-rgb: 232, 174, 1;
290
+ --color-danger-emphasis-rgb: 245, 183, 168;
291
+ --color-contrast-emphasis-rgb: 255, 255, 255;
292
+
293
+ /* Subtle backgrounds */
294
+ --color-primary-bg-subtle: rgba(var(--color-primary-rgb), 0.15);
295
+ --color-secondary-bg-subtle: rgba(var(--color-secondary-rgb), 0.15);
296
+ --color-success-bg-subtle: rgba(var(--color-success-rgb), 0.15);
297
+ --color-info-bg-subtle: rgba(var(--color-info-rgb), 0.15);
298
+ --color-warning-bg-subtle: rgba(var(--color-warning-rgb), 0.15);
299
+ --color-danger-bg-subtle: rgba(var(--color-danger-rgb), 0.15);
300
+ --color-contrast-bg-subtle: #2a3140;
301
+
302
+ /* Subtle borders */
303
+ --color-primary-border-subtle: rgba(var(--color-primary-rgb), 0.35);
304
+ --color-secondary-border-subtle: rgba(var(--color-secondary-rgb), 0.35);
305
+ --color-success-border-subtle: rgba(var(--color-success-rgb), 0.35);
306
+ --color-info-border-subtle: rgba(var(--color-info-rgb), 0.35);
307
+ --color-warning-border-subtle: rgba(var(--color-warning-rgb), 0.35);
308
+ --color-danger-border-subtle: rgba(var(--color-danger-rgb), 0.35);
309
+ --color-contrast-border-subtle: #2a3140;
310
+
311
+ /* Core Colors */
312
+ --color-background: rgb(19, 22.5, 30.5);
313
+ --color-text: #c2c7d0;
314
+ --color-text-selection: rgba(var(--color-primary-rgb), 0.1875);
315
+ --color-text-muted: color-mix(in srgb, rgb(var(--color-text-rgb)), rgb(128, 128, 128) 70%);
316
+ --color-border-muted: #202632;
317
+
318
+ /* Primary */
319
+ --color-primary-bg: #0172ad;
320
+ --color-primary-border: var(--color-primary-bg);
321
+ --color-primary-underline: rgba(var(--color-primary-rgb), 0.5);
322
+ --color-primary-hover: #79c0ff;
323
+ --color-primary-hover-bg: #017fc0;
324
+ --color-primary-hover-border: var(--color-primary-hover-bg);
325
+ --color-primary-hover-underline: var(--color-primary-hover);
326
+ --color-primary-focus: rgba(var(--color-primary-rgb), 0.375);
327
+ --color-primary-inverse: #fff;
328
+
329
+ /* Secondary */
330
+ --color-secondary-bg: #525f7a;
331
+ --color-secondary-border: var(--color-secondary-bg);
332
+ --color-secondary-underline: rgba(var(--color-secondary-rgb), 0.5);
333
+ --color-secondary-hover: #b3b9c5;
334
+ --color-secondary-hover-bg: #5d6b89;
335
+ --color-secondary-hover-border: var(--color-secondary-hover-bg);
336
+ --color-secondary-hover-underline: var(--color-secondary-hover);
337
+ --color-secondary-focus: rgba(144, 158, 190, 0.25);
338
+ --color-secondary-inverse: #fff;
339
+
340
+ /* Contrast */
341
+ --color-contrast-bg: #eff1f4;
342
+ --color-contrast-border: var(--color-contrast-bg);
343
+ --color-contrast-underline: rgba(var(--color-contrast-rgb), 0.5);
344
+ --color-contrast-hover: #fff;
345
+ --color-contrast-hover-bg: #fff;
346
+ --color-contrast-hover-border: var(--color-contrast-hover-bg);
347
+ --color-contrast-hover-underline: var(--color-contrast-hover);
348
+ --color-contrast-focus: rgba(207, 213, 226, 0.25);
349
+ --color-contrast-inverse: #000;
350
+
351
+ /* Shadows */
352
+ --shadow-sm: 0 0.0625rem 0.125rem rgba(7, 8.5, 12, 0.1);
353
+ --shadow-md: 0.0625rem 0.125rem 0.5rem rgba(7, 8.5, 12, 0.15);
354
+ --shadow-lg: 0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698), 0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024), 0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03), 0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036), 0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302), 0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06), 0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);
355
+
356
+ /* Headings */
357
+ --color-heading-base: #f0f1f3;
358
+
359
+ /* Mark & Text */
360
+ --color-mark-bg: #014063;
361
+ --color-mark-text: #fff;
362
+
363
+ /* Blockquote */
364
+ --blockquote-border-color: var(--color-border-muted);
365
+ --blockquote-footer-color: var(--color-text-muted);
366
+ }
@@ -0,0 +1,318 @@
1
+ /* ==========================================================================
2
+ Component Variables
3
+ ==========================================================================
4
+
5
+ Component-specific CSS custom properties organized by UI component.
6
+ These define the appearance of buttons, forms, tables, cards, modals,
7
+ and other interactive elements.
8
+
9
+ Each component section is self-contained with all its color, spacing,
10
+ and state variable definitions.
11
+ ========================================================================== */
12
+
13
+ /* ==========================================================================
14
+ Light Theme Component Variables
15
+ ========================================================================== */
16
+
17
+ [data-theme="light"],
18
+ :root:not([data-theme="dark"]),
19
+ :host(:not([data-theme="dark"])) {
20
+ /* Button */
21
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
22
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
23
+
24
+ /* Table */
25
+ --table-border-color: var(--color-border-muted);
26
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
27
+
28
+ /* Code */
29
+ --color-code-bg: rgb(243, 244.5, 246.75);
30
+ --color-code-text: #646b79;
31
+ --color-kbd-bg: var(--color-text);
32
+ --color-kbd-text: var(--color-background);
33
+
34
+ /* Form Elements */
35
+ --form-bg: rgb(251, 251.5, 252.25);
36
+ --form-selected-bg: #dfe3eb;
37
+ --form-border-color: #cfd5e2;
38
+ --form-text-color: #23262c;
39
+ --form-placeholder-color: var(--color-text-muted);
40
+ --form-active-bg: #fff;
41
+ --form-active-border: var(--color-primary-border);
42
+ --form-focus: var(--color-primary-border);
43
+ --form-disabled-opacity: 0.5;
44
+ --form-invalid-border: rgb(var(--color-danger-rgb));
45
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
46
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
47
+ --form-valid-border: rgb(var(--color-success-rgb));
48
+ --form-valid-active-border: rgb(var(--color-success-rgb));
49
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
50
+
51
+ /* Switch */
52
+ --switch-bg: #bfc7d9;
53
+ --switch-checked-bg: var(--color-primary-bg);
54
+ --switch-thumb-color: #fff;
55
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
56
+
57
+ /* Range */
58
+ --range-border-color: #dfe3eb;
59
+ --range-active-border: #bfc7d9;
60
+ --range-thumb-border: var(--color-background);
61
+ --range-thumb-color: var(--color-secondary-bg);
62
+ --range-thumb-active: var(--color-primary-bg);
63
+
64
+ /* Accordion */
65
+ --accordion-border: var(--color-border-muted);
66
+ --accordion-active-summary: var(--color-primary-hover);
67
+ --accordion-closed-summary: var(--color-text);
68
+ --accordion-open-summary: var(--color-text-muted);
69
+
70
+ /* Card */
71
+ --card-bg: var(--color-background);
72
+ --card-border: var(--color-border-muted);
73
+ --card-shadow: var(--shadow-lg);
74
+ --card-section-bg: rgb(251, 251.5, 252.25);
75
+
76
+ /* Dropdown */
77
+ --dropdown-bg: #fff;
78
+ --dropdown-border: #eff1f4;
79
+ --dropdown-shadow: var(--shadow-lg);
80
+ --dropdown-text: var(--color-text);
81
+ --dropdown-hover-bg: #eff1f4;
82
+
83
+ /* Loading & Modal */
84
+ --loading-spinner-opacity: 0.5;
85
+ --modal-overlay-bg: rgba(232, 234, 237, 0.75);
86
+
87
+ /* Progress */
88
+ --progress-bg: #dfe3eb;
89
+ --progress-fill: var(--color-primary-bg);
90
+
91
+ /* Tooltip */
92
+ --tooltip-bg: var(--color-contrast-bg);
93
+ --tooltip-text: var(--color-contrast-inverse);
94
+ }
95
+
96
+ /* Form focus override for actionable input types in light mode */
97
+ [data-theme="light"] input:is(
98
+ [type="submit"],
99
+ [type="button"],
100
+ [type="reset"],
101
+ [type="checkbox"],
102
+ [type="radio"],
103
+ [type="file"]
104
+ ),
105
+ :root:not([data-theme="dark"]) input:is(
106
+ [type="submit"],
107
+ [type="button"],
108
+ [type="reset"],
109
+ [type="checkbox"],
110
+ [type="radio"],
111
+ [type="file"]
112
+ ),
113
+ :host(:not([data-theme="dark"])) input:is(
114
+ [type="submit"],
115
+ [type="button"],
116
+ [type="reset"],
117
+ [type="checkbox"],
118
+ [type="radio"],
119
+ [type="file"]
120
+ ) {
121
+ --form-focus: var(--color-primary-focus);
122
+ }
123
+
124
+ /* ==========================================================================
125
+ Dark Theme Component Variables (System Preference)
126
+ ========================================================================== */
127
+
128
+ @media only screen and (prefers-color-scheme: dark) {
129
+ :root:not([data-theme]),
130
+ :host(:not([data-theme])) {
131
+ /* Button */
132
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
133
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
134
+
135
+ /* Table */
136
+ --table-border-color: var(--color-border-muted);
137
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
138
+
139
+ /* Code */
140
+ --color-code-bg: rgb(26, 30.5, 40.25);
141
+ --color-code-text: #8891a4;
142
+ --color-kbd-bg: var(--color-text);
143
+ --color-kbd-text: var(--color-background);
144
+
145
+ /* Form Elements */
146
+ --form-bg: rgb(28, 33, 43.5);
147
+ --form-selected-bg: #2a3140;
148
+ --form-border-color: #2a3140;
149
+ --form-text-color: #e0e3e7;
150
+ --form-placeholder-color: #8891a4;
151
+ --form-active-bg: rgb(26, 30.5, 40.25);
152
+ --form-active-border: var(--color-primary-border);
153
+ --form-focus: var(--color-primary-border);
154
+ --form-disabled-opacity: 0.5;
155
+ --form-invalid-border: rgb(var(--color-danger-rgb));
156
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
157
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
158
+ --form-valid-border: rgb(var(--color-success-rgb));
159
+ --form-valid-active-border: rgb(var(--color-success-rgb));
160
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
161
+
162
+ /* Switch */
163
+ --switch-bg: #333c4e;
164
+ --switch-checked-bg: var(--color-primary-bg);
165
+ --switch-thumb-color: #fff;
166
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
167
+
168
+ /* Range */
169
+ --range-border-color: #202632;
170
+ --range-active-border: #2a3140;
171
+ --range-thumb-border: var(--color-background);
172
+ --range-thumb-color: var(--color-secondary-bg);
173
+ --range-thumb-active: var(--color-primary-bg);
174
+
175
+ /* Accordion */
176
+ --accordion-border: var(--color-border-muted);
177
+ --accordion-active-summary: var(--color-primary-hover);
178
+ --accordion-closed-summary: var(--color-text);
179
+ --accordion-open-summary: var(--color-text-muted);
180
+
181
+ /* Card */
182
+ --card-bg: #181c25;
183
+ --card-border: var(--card-bg);
184
+ --card-shadow: var(--shadow-lg);
185
+ --card-section-bg: rgb(26, 30.5, 40.25);
186
+
187
+ /* Dropdown */
188
+ --dropdown-bg: #181c25;
189
+ --dropdown-border: #202632;
190
+ --dropdown-shadow: var(--shadow-lg);
191
+ --dropdown-text: var(--color-text);
192
+ --dropdown-hover-bg: #202632;
193
+
194
+ /* Loading & Modal */
195
+ --loading-spinner-opacity: 0.5;
196
+ --modal-overlay-bg: rgba(7.5, 8.5, 10, 0.75);
197
+
198
+ /* Progress */
199
+ --progress-bg: #202632;
200
+ --progress-fill: var(--color-primary-bg);
201
+
202
+ /* Tooltip */
203
+ --tooltip-bg: var(--color-contrast-bg);
204
+ --tooltip-text: var(--color-contrast-inverse);
205
+ }
206
+
207
+ :root:not([data-theme]) input:is(
208
+ [type="submit"],
209
+ [type="button"],
210
+ [type="reset"],
211
+ [type="checkbox"],
212
+ [type="radio"],
213
+ [type="file"]
214
+ ),
215
+ :host(:not([data-theme])) input:is(
216
+ [type="submit"],
217
+ [type="button"],
218
+ [type="reset"],
219
+ [type="checkbox"],
220
+ [type="radio"],
221
+ [type="file"]
222
+ ) {
223
+ --form-focus: var(--color-primary-focus);
224
+ }
225
+ }
226
+
227
+ /* ==========================================================================
228
+ Dark Theme Component Variables (Explicit)
229
+ ========================================================================== */
230
+
231
+ [data-theme="dark"] {
232
+ /* Button */
233
+ --button-shadow: 0 0 0 rgba(0, 0, 0, 0);
234
+ --button-shadow-hover: 0 0 0 rgba(0, 0, 0, 0);
235
+
236
+ /* Table */
237
+ --table-border-color: var(--color-border-muted);
238
+ --table-row-stripe-bg: rgba(111, 120, 135, 0.0375);
239
+
240
+ /* Code */
241
+ --color-code-bg: rgb(26, 30.5, 40.25);
242
+ --color-code-text: #8891a4;
243
+ --color-kbd-bg: var(--color-text);
244
+ --color-kbd-text: var(--color-background);
245
+
246
+ /* Form Elements */
247
+ --form-bg: rgb(28, 33, 43.5);
248
+ --form-selected-bg: #2a3140;
249
+ --form-border-color: #2a3140;
250
+ --form-text-color: #e0e3e7;
251
+ --form-placeholder-color: #8891a4;
252
+ --form-active-bg: rgb(26, 30.5, 40.25);
253
+ --form-active-border: var(--color-primary-border);
254
+ --form-focus: var(--color-primary-border);
255
+ --form-disabled-opacity: 0.5;
256
+ --form-invalid-border: rgb(var(--color-danger-rgb));
257
+ --form-invalid-active-border: rgb(var(--color-danger-rgb));
258
+ --form-invalid-focus: rgba(var(--color-danger-rgb), 0.5);
259
+ --form-valid-border: rgb(var(--color-success-rgb));
260
+ --form-valid-active-border: rgb(var(--color-success-rgb));
261
+ --form-valid-focus: rgba(var(--color-success-rgb), 0.5);
262
+
263
+ /* Switch */
264
+ --switch-bg: #333c4e;
265
+ --switch-checked-bg: var(--color-primary-bg);
266
+ --switch-thumb-color: #fff;
267
+ --switch-thumb-shadow: 0 0 0 rgba(0, 0, 0, 0);
268
+
269
+ /* Range */
270
+ --range-border-color: #202632;
271
+ --range-active-border: #2a3140;
272
+ --range-thumb-border: var(--color-background);
273
+ --range-thumb-color: var(--color-secondary-bg);
274
+ --range-thumb-active: var(--color-primary-bg);
275
+
276
+ /* Accordion */
277
+ --accordion-border: var(--color-border-muted);
278
+ --accordion-active-summary: var(--color-primary-hover);
279
+ --accordion-closed-summary: var(--color-text);
280
+ --accordion-open-summary: var(--color-text-muted);
281
+
282
+ /* Card */
283
+ --card-bg: #181c25;
284
+ --card-border: var(--card-bg);
285
+ --card-shadow: var(--shadow-lg);
286
+ --card-section-bg: rgb(26, 30.5, 40.25);
287
+
288
+ /* Dropdown */
289
+ --dropdown-bg: #181c25;
290
+ --dropdown-border: #202632;
291
+ --dropdown-shadow: var(--shadow-lg);
292
+ --dropdown-text: var(--color-text);
293
+ --dropdown-hover-bg: #202632;
294
+
295
+ /* Loading & Modal */
296
+ --loading-spinner-opacity: 0.5;
297
+ --modal-overlay-bg: rgba(7.5, 8.5, 10, 0.75);
298
+
299
+ /* Progress */
300
+ --progress-bg: #202632;
301
+ --progress-fill: var(--color-primary-bg);
302
+
303
+ /* Tooltip */
304
+ --tooltip-bg: var(--color-contrast-bg);
305
+ --tooltip-text: var(--color-contrast-inverse);
306
+ }
307
+
308
+ /* Form focus override for actionable input types in explicit dark mode */
309
+ [data-theme="dark"] input:is(
310
+ [type="submit"],
311
+ [type="button"],
312
+ [type="reset"],
313
+ [type="checkbox"],
314
+ [type="radio"],
315
+ [type="file"]
316
+ ) {
317
+ --form-focus: var(--color-primary-focus);
318
+ }