@sankhyatronics/sankhya-cms 0.1.8 → 0.1.9

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 (111) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +34 -34
  3. package/custom-elements.json +1023 -964
  4. package/dist/bento-grid/index.js +3 -3
  5. package/dist/card/index.js +2 -2
  6. package/dist/carousel/index.js +3 -3
  7. package/dist/{chunk-3JU3R22O.js → chunk-5EBWMPJS.js} +2 -2
  8. package/dist/chunk-5EBWMPJS.js.map +1 -0
  9. package/dist/{chunk-2JGWWXEI.js → chunk-76AVBQUA.js} +3 -3
  10. package/dist/chunk-76AVBQUA.js.map +1 -0
  11. package/dist/{chunk-NN3OCPDV.js → chunk-7NLZND6Q.js} +3 -3
  12. package/dist/{chunk-EMVHNAID.js → chunk-ALI26WOB.js} +3 -3
  13. package/dist/chunk-ALI26WOB.js.map +1 -0
  14. package/dist/{chunk-TLHG33MM.js → chunk-BLQV2YMO.js} +3 -3
  15. package/dist/chunk-BLQV2YMO.js.map +1 -0
  16. package/dist/{chunk-UVNBZD7R.js → chunk-BMHMNXIA.js} +3 -3
  17. package/dist/chunk-BMHMNXIA.js.map +1 -0
  18. package/dist/{chunk-ZRXYWH6C.js → chunk-DH53HZPB.js} +4 -4
  19. package/dist/{chunk-HPIQSECE.js → chunk-EMCQBT3S.js} +3 -3
  20. package/dist/{chunk-BQTDFQ4V.js → chunk-FLY7TNRT.js} +3 -3
  21. package/dist/chunk-FLY7TNRT.js.map +1 -0
  22. package/dist/{chunk-3VE6VFJ4.js → chunk-FZ36KL73.js} +1 -1
  23. package/dist/chunk-FZ36KL73.js.map +1 -0
  24. package/dist/{chunk-HGTC3LCW.js → chunk-G3CF7MBO.js} +3 -3
  25. package/dist/{chunk-CDC4P77V.js → chunk-GJO3RGOB.js} +2 -2
  26. package/dist/chunk-GJO3RGOB.js.map +1 -0
  27. package/dist/{chunk-K4ZICRZL.js → chunk-JKBWZLG4.js} +3 -3
  28. package/dist/chunk-JKBWZLG4.js.map +1 -0
  29. package/dist/{chunk-4HKSA5UT.js → chunk-JQY2G4QK.js} +2 -2
  30. package/dist/chunk-JQY2G4QK.js.map +1 -0
  31. package/dist/{chunk-RHAOQ6K4.js → chunk-KMU6ABQF.js} +1 -1
  32. package/dist/chunk-KMU6ABQF.js.map +1 -0
  33. package/dist/{chunk-IQPW3CYZ.js → chunk-LEXZKGQX.js} +3 -3
  34. package/dist/chunk-LEXZKGQX.js.map +1 -0
  35. package/dist/{chunk-MW43OS47.js → chunk-MSSH3HFK.js} +2 -2
  36. package/dist/chunk-MSSH3HFK.js.map +1 -0
  37. package/dist/{chunk-DQHMJZ6X.js → chunk-R5G6KFTJ.js} +18 -8
  38. package/dist/chunk-R5G6KFTJ.js.map +1 -0
  39. package/dist/{chunk-VYON56QO.js → chunk-SMLR736E.js} +2 -2
  40. package/dist/chunk-SMLR736E.js.map +1 -0
  41. package/dist/{chunk-HGJT24UG.js → chunk-VWS53WY4.js} +3 -3
  42. package/dist/chunk-VWS53WY4.js.map +1 -0
  43. package/dist/{chunk-VRRBMOUP.js → chunk-WT4OATGP.js} +3 -3
  44. package/dist/chunk-WT4OATGP.js.map +1 -0
  45. package/dist/{chunk-PB7ZPPLP.js → chunk-WTD2YIAA.js} +1 -1
  46. package/dist/chunk-WTD2YIAA.js.map +1 -0
  47. package/dist/{chunk-X2ALYIVT.js → chunk-XWB4CKDU.js} +20 -4
  48. package/dist/chunk-XWB4CKDU.js.map +1 -0
  49. package/dist/{chunk-XXPBFHWR.js → chunk-YQ42EBK5.js} +2 -2
  50. package/dist/chunk-YQ42EBK5.js.map +1 -0
  51. package/dist/{chunk-6H262SG6.js → chunk-YVTFQHVY.js} +2 -2
  52. package/dist/chunk-YVTFQHVY.js.map +1 -0
  53. package/dist/{chunk-7PSYCTEN.js → chunk-ZN4LIKVG.js} +2 -2
  54. package/dist/chunk-ZN4LIKVG.js.map +1 -0
  55. package/dist/cms-theme.css +26 -26
  56. package/dist/content-block/index.js +4 -4
  57. package/dist/cookie-consent/index.js +2 -2
  58. package/dist/dropdown/index.js +3 -3
  59. package/dist/feature-split/index.js +4 -4
  60. package/dist/features-section/index.js +5 -5
  61. package/dist/footer/index.js +2 -2
  62. package/dist/header/index.d.ts +7 -0
  63. package/dist/header/index.js +3 -3
  64. package/dist/hero/index.js +3 -3
  65. package/dist/icon-button/index.js +2 -2
  66. package/dist/index.js +35 -35
  67. package/dist/items-accordion/index.js +3 -3
  68. package/dist/markdown/index.js +2 -2
  69. package/dist/mega-menu/index.js +3 -3
  70. package/dist/menu-grid/index.js +2 -2
  71. package/dist/menu-grid-item/index.js +2 -2
  72. package/dist/menu-item/index.d.ts +5 -0
  73. package/dist/menu-item/index.js +3 -3
  74. package/dist/promo-banner/index.js +3 -3
  75. package/dist/schema/index.js.map +1 -1
  76. package/dist/section/index.js +3 -3
  77. package/dist/select/index.js +3 -3
  78. package/dist/shared/icons.js +1 -1
  79. package/dist/shared/styles.js +1 -1
  80. package/dist/stats/index.js +2 -2
  81. package/dist/testimonials/index.js +4 -4
  82. package/dist/theme.css +291 -291
  83. package/dist/themes.css +64 -64
  84. package/dist/theming/index.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/chunk-2JGWWXEI.js.map +0 -1
  87. package/dist/chunk-3JU3R22O.js.map +0 -1
  88. package/dist/chunk-3VE6VFJ4.js.map +0 -1
  89. package/dist/chunk-4HKSA5UT.js.map +0 -1
  90. package/dist/chunk-6H262SG6.js.map +0 -1
  91. package/dist/chunk-7PSYCTEN.js.map +0 -1
  92. package/dist/chunk-BQTDFQ4V.js.map +0 -1
  93. package/dist/chunk-CDC4P77V.js.map +0 -1
  94. package/dist/chunk-DQHMJZ6X.js.map +0 -1
  95. package/dist/chunk-EMVHNAID.js.map +0 -1
  96. package/dist/chunk-HGJT24UG.js.map +0 -1
  97. package/dist/chunk-IQPW3CYZ.js.map +0 -1
  98. package/dist/chunk-K4ZICRZL.js.map +0 -1
  99. package/dist/chunk-MW43OS47.js.map +0 -1
  100. package/dist/chunk-PB7ZPPLP.js.map +0 -1
  101. package/dist/chunk-RHAOQ6K4.js.map +0 -1
  102. package/dist/chunk-TLHG33MM.js.map +0 -1
  103. package/dist/chunk-UVNBZD7R.js.map +0 -1
  104. package/dist/chunk-VRRBMOUP.js.map +0 -1
  105. package/dist/chunk-VYON56QO.js.map +0 -1
  106. package/dist/chunk-X2ALYIVT.js.map +0 -1
  107. package/dist/chunk-XXPBFHWR.js.map +0 -1
  108. /package/dist/{chunk-NN3OCPDV.js.map → chunk-7NLZND6Q.js.map} +0 -0
  109. /package/dist/{chunk-ZRXYWH6C.js.map → chunk-DH53HZPB.js.map} +0 -0
  110. /package/dist/{chunk-HPIQSECE.js.map → chunk-EMCQBT3S.js.map} +0 -0
  111. /package/dist/{chunk-HGTC3LCW.js.map → chunk-G3CF7MBO.js.map} +0 -0
package/dist/theme.css CHANGED
@@ -1,292 +1,292 @@
1
- /**
2
- * Design tokens for @sankhyatronics/components.
3
- *
4
- * Every st-* component reads its styling exclusively via `var(--st-x)` — no
5
- * fallback values anywhere — and custom properties inherit through Shadow
6
- * DOM, so setting these at :root (or any ancestor of your st-* components)
7
- * reskins/rescales the whole tree without forking any component.
8
- *
9
- * Import this file once. There are three layers, in cascade order:
10
- * 1. PRIMARIES — the only literal color values in the system (5 seeds,
11
- * plus the 3 independent file-type brand colors). Override these for a
12
- * full rebrand — everything else follows.
13
- * 2. SHADES — an internal color-mix() ramp derived from each primary,
14
- * EXCEPT the neutral ramp: --st-neutral-50 through --st-neutral-950
15
- * (the standard 11-step scale) is the one shade ramp meant to be
16
- * overridden directly — every neutral text/background token below
17
- * resolves to one of these 11 steps.
18
- * 3. SEMANTIC TOKENS — what components actually consume
19
- * (--st-color-text, --st-radius-md, --st-text-sm, ...), each pointing
20
- * at one shade/scale step. Override a semantic token for a single
21
- * exception, or override a whole scale (spacing/radius/size/type) for
22
- * a density or typography change.
23
- *
24
- * Only reach for an individual token override (see component READMEs /
25
- * source for the full list) when you need an exception the primaries,
26
- * neutral palette, and scales below don't cover.
27
- */
28
- :root {
29
- /* =========================================================
30
- PRIMARIES — override these for a rebrand.
31
- ========================================================= */
32
- --st-primary-color: oklch(12.9% 0.042 264.695);
33
- --st-primary-background: oklch(98.4% 0.003 247.858);
34
- --st-neutral-50: var(--st-primary-background);
35
- --st-neutral-950: var(--st-primary-color);
36
- --st-neutral-100: oklch(from color-mix(in oklch, var(--st-neutral-950) 8%, var(--st-neutral-50)) l calc(c * 2.1) h);
37
- --st-neutral-200: oklch(from color-mix(in oklch, var(--st-neutral-950) 15%, var(--st-neutral-50)) l calc(c * 3.0) h);
38
- --st-neutral-300: oklch(from color-mix(in oklch, var(--st-neutral-950) 27%, var(--st-neutral-50)) l calc(c * 4.3) h);
39
- --st-neutral-400: oklch(from color-mix(in oklch, var(--st-neutral-950) 36%, var(--st-neutral-50)) l calc(c * 5.2) h);
40
- --st-neutral-500: oklch(from color-mix(in oklch, var(--st-neutral-950) 49%, var(--st-neutral-50)) l calc(c * 7.0) h);
41
- --st-neutral-600: oklch(from color-mix(in oklch, var(--st-neutral-950) 69%, var(--st-neutral-50)) l calc(c * 5.4) h);
42
- --st-neutral-700: oklch(from color-mix(in oklch, var(--st-neutral-950) 86%, var(--st-neutral-50)) l calc(c * 3.0) h);
43
- --st-neutral-800: oklch(from color-mix(in oklch, var(--st-neutral-950) 93%, var(--st-neutral-50)) l calc(c * 2.3) h);
44
- --st-neutral-900: oklch(from color-mix(in oklch, var(--st-neutral-950) 96%, var(--st-neutral-50)) l calc(c * 1.6) h);
45
-
46
-
47
- /* Brand-like file-type colors are intentionally independent of the accent
48
- seed (Word/Excel/PowerPoint have their own identity) — three extra,
49
- narrowly-scoped primaries rather than derived shades. */
50
- --st-primary-type-word: oklch(0.55 0.13 250);
51
- --st-primary-type-excel: oklch(0.55 0.13 145);
52
- --st-primary-type-powerpoint: oklch(0.55 0.13 40);
53
-
54
- --st-primary-neutral: var(--st-neutral-50);
55
- /* --st-brand-color is deliberately left undefined: set it (on :root) to
56
- make the accent, the solid call-to-action buttons and checkboxes all
57
- follow one host-app brand color. Unset, each keeps its own default. */
58
- --st-primary-accent: var(--st-brand-color, var(--st-neutral-500));
59
- --st-primary-danger: oklch(0.6 0.2 25);
60
- --st-primary-warning: oklch(0.75 0.16 40);
61
- --st-primary-success: oklch(0.55 0.13 145);
62
-
63
- /* Pure white/black anchors for the color-mix() ramps below and the
64
- "text/icon on a solid fill" token — not general-purpose literals. */
65
- --st-primary-canvas: var(--st-neutral-50);
66
- --st-primary-ink: var(--st-neutral-950);
67
-
68
- --st-accent-subtle: color-mix(in oklch, var(--st-primary-accent) 8%, var(--st-primary-canvas));
69
- --st-accent-border: color-mix(in oklch, var(--st-primary-accent) 22%, var(--st-primary-canvas));
70
- --st-accent-muted: color-mix(in oklch, var(--st-primary-accent) 55%, var(--st-primary-canvas));
71
- --st-accent-text: color-mix(in oklch, var(--st-primary-accent) 78%, var(--st-primary-ink));
72
-
73
- --st-danger-subtle: color-mix(in oklch, var(--st-primary-danger) 10%, var(--st-primary-canvas));
74
- --st-danger-border: color-mix(in oklch, var(--st-primary-danger) 28%, var(--st-primary-canvas));
75
- --st-danger-text: color-mix(in oklch, var(--st-primary-danger) 70%, var(--st-primary-ink));
76
-
77
- --st-warning-subtle: color-mix(in oklch, var(--st-primary-warning) 10%, var(--st-primary-canvas));
78
- --st-warning-border: color-mix(in oklch, var(--st-primary-warning) 28%, var(--st-primary-canvas));
79
- --st-warning-text: color-mix(in oklch, var(--st-primary-warning) 70%, var(--st-primary-ink));
80
-
81
- --st-success-subtle: color-mix(in oklch, var(--st-primary-success) 20%, var(--st-primary-canvas));
82
- --st-success-text: color-mix(in oklch, var(--st-primary-success) 70%, var(--st-primary-ink));
83
-
84
- /* =========================================================
85
- SEMANTIC TOKENS — what components actually consume.
86
- ========================================================= */
87
-
88
- /* ---- Neutral surfaces & text ---- */
89
- --st-color-page: var(--st-neutral-50);
90
- --st-color-surface: var(--st-primary-canvas);
91
- --st-color-subtle: var(--st-neutral-100);
92
- --st-color-divider: var(--st-neutral-200);
93
- --st-color-hover: var(--st-neutral-200);
94
- --st-color-border: var(--st-neutral-300);
95
- --st-color-skeleton: var(--st-neutral-300);
96
- --st-color-folder-icon-bg: var(--st-neutral-300);
97
- --st-color-border-strong: var(--st-neutral-400);
98
- --st-color-text-faint: var(--st-neutral-600);
99
- --st-color-text-muted: var(--st-neutral-600);
100
- --st-color-text: var(--st-neutral-600);
101
- --st-color-text-strong: var(--st-neutral-900);
102
-
103
- /* Text/icon color for content sitting on a solid/dark fill (buttons,
104
- avatars, active pills) — never hardcode "white" at the point of use. */
105
- --st-color-on-solid: var(--st-primary-canvas);
106
-
107
- /* ---- Accent ramp — derived from --st-primary-accent ---- */
108
- --st-color-accent: var(--st-primary-accent);
109
- --st-color-accent-subtle: var(--st-accent-subtle);
110
- --st-color-accent-border: var(--st-accent-border);
111
- --st-color-accent-muted: var(--st-accent-muted);
112
- --st-color-accent-text: var(--st-accent-text);
113
-
114
- /* ---- Semantic state ramps — derived from --st-primary-danger/warning/success ---- */
115
- --st-color-danger: var(--st-primary-danger);
116
- --st-color-danger-subtle: var(--st-danger-subtle);
117
- --st-color-danger-border: var(--st-danger-border);
118
- --st-color-danger-text: var(--st-danger-text);
119
-
120
- --st-color-warning: var(--st-primary-warning);
121
- --st-color-warning-subtle: var(--st-warning-subtle);
122
- --st-color-warning-border: var(--st-warning-border);
123
- --st-color-warning-text: var(--st-warning-text);
124
-
125
- --st-color-success: var(--st-primary-success);
126
- --st-color-success-subtle: var(--st-success-subtle);
127
- --st-color-success-text: var(--st-success-text);
128
-
129
- /* ---- File-type badge colors ---- */
130
- --st-color-type-word: var(--st-primary-type-word);
131
- --st-color-type-excel: var(--st-primary-type-excel);
132
- --st-color-type-powerpoint: var(--st-primary-type-powerpoint);
133
-
134
- /* ---- Standalone brand accent (favorites/star marker) ---- */
135
- --st-favorite-accent: #f0b429;
136
-
137
- /* ---- <st-status-pill> override points. Consumers set --st-status-hue
138
- (or --st-status-bg/--st-status-color directly) on the host element;
139
- these root defaults mean the token always resolves, so call sites
140
- never need a fallback. ---- */
141
- --st-status-hue: var(--st-neutral-hue);
142
- --st-status-bg: oklch(0.95 0.05 var(--st-status-hue));
143
- --st-status-color: oklch(0.4 0.13 var(--st-status-hue));
144
-
145
- /* ---- Shadow tint — box-shadows are colors too, so they get tokens. ---- */
146
- --st-shadow-color-subtle: var(--st-neutral-300);
147
- --st-shadow-color-sm: var(--st-neutral-300);
148
- --st-shadow-color-md: var(--st-neutral-300);
149
- --st-shadow-color-lg: var(--st-neutral-300);
150
- --st-shadow-color-xl: var(--st-neutral-300);
151
-
152
- /* =========================================================
153
- SPACING SCALE — padding/margin/gap/inset. Named by their px
154
- value for exactness; override one step or the whole scale.
155
- ========================================================= */
156
- --st-space-0: 0;
157
- --st-space-2: 2px;
158
- --st-space-3: 3px;
159
- --st-space-4: 4px;
160
- --st-space-5: 5px;
161
- --st-space-6: 6px;
162
- --st-space-7: 7px;
163
- --st-space-8: 8px;
164
- --st-space-9: 9px;
165
- --st-space-10: 10px;
166
- --st-space-11: 11px;
167
- --st-space-12: 12px;
168
- --st-space-14: 14px;
169
- --st-space-16: 16px;
170
- --st-space-18: 18px;
171
- --st-space-20: 20px;
172
- --st-space-22: 22px;
173
- --st-space-24: 24px;
174
- --st-space-28: 28px;
175
- --st-space-30: 30px;
176
- --st-space-32: 32px;
177
- --st-space-40: 40px;
178
- --st-space-44: 44px;
179
- --st-space-48: 48px;
180
-
181
- /* =========================================================
182
- RADIUS SCALE
183
- ========================================================= */
184
- --st-radius-none: 0;
185
- --st-radius-xs: 4px;
186
- --st-radius-sm: 8px;
187
- --st-radius-md: 10px;
188
- --st-radius-lg: 12px;
189
- --st-radius-full: 999px;
190
- --st-radius-circle: 50%;
191
-
192
- /* =========================================================
193
- CONTROL-SIZE SCALE — square-ish UI controls (checkboxes,
194
- icon buttons, avatars, badges, table icon columns).
195
- ========================================================= */
196
- --st-size-14: 14px;
197
- --st-size-16: 16px;
198
- --st-size-18: 18px;
199
- --st-size-20: 20px;
200
- --st-size-24: 24px;
201
- --st-size-26: 26px;
202
- --st-size-28: 28px;
203
- --st-size-30: 30px;
204
- --st-size-32: 32px;
205
- --st-size-36: 36px;
206
- --st-size-38: 38px;
207
- --st-size-40: 40px;
208
-
209
- /* =========================================================
210
- TYPOGRAPHY TOKENS
211
- ========================================================= */
212
- --st-font-family: system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Helvetica, Arial, sans-serif;
213
-
214
- --st-text-2xs: 10px;
215
- --st-text-xs: 11px;
216
- --st-text-sm: 12px;
217
- --st-text-base: 13px;
218
- --st-text-md: 14px;
219
- --st-text-lg: 15px;
220
- --st-text-xl: 16px;
221
- --st-text-2xl: 20px;
222
-
223
- --st-font-weight-regular: 400;
224
- --st-font-weight-medium: 500;
225
- --st-font-weight-semibold: 600;
226
- --st-font-weight-bold: 700;
227
- --st-font-weight-extrabold: 800;
228
-
229
- --st-leading-none: 1;
230
- --st-leading-snug: 1.35;
231
- --st-leading-normal: 1.4;
232
-
233
- --st-tracking-tight: -0.2px;
234
- --st-tracking-normal: 0;
235
- --st-tracking-wide: 0.3px;
236
- --st-tracking-wider: 0.4px;
237
-
238
- /* =========================================================
239
- COMPONENT TOKENS — narrowly-scoped overrides for one piece
240
- of chrome, each defaulting to a scale step above. Set them
241
- on :root or on the component's host element, the same way
242
- as --st-primary-color.
243
- ========================================================= */
244
-
245
- /* ---- Wizard step heading/description (<st-template-hub>) ---- */
246
- --st-step-heading-font-size: var(--st-text-2xl);
247
- --st-step-heading-font-weight: var(--st-font-weight-bold);
248
- --st-step-heading-color: var(--st-color-text-strong);
249
- --st-step-description-font-size: var(--st-text-base);
250
- --st-step-description-color: var(--st-color-text-muted);
251
-
252
- /* ---- Buttons. --st-button-font-size sizes the wizard footer
253
- (Back/Next/Finish/...); --st-button-font-size-sm the in-content
254
- action buttons (Generate/Regenerate). The primary fill applies
255
- to every solid call-to-action button. ---- */
256
- --st-button-font-size: var(--st-text-md);
257
- --st-button-font-size-sm: var(--st-text-base);
258
- --st-button-font-weight: var(--st-font-weight-semibold);
259
- --st-button-height: var(--st-size-40);
260
- --st-button-radius: var(--st-radius-sm);
261
- --st-button-primary-bg: var(--st-brand-color, var(--st-color-text-strong));
262
- --st-button-primary-color: var(--st-color-on-solid);
263
- --st-button-primary-font-weight: var(--st-font-weight-bold);
264
-
265
- /* ---- Checkboxes/radios (native controls, tinted via accent-color).
266
- `auto` = the browser's own color. ---- */
267
- --st-checkbox-color: var(--st-brand-color, auto);
268
-
269
- /* ---- Keyboard focus ring, an `outline` shorthand. `auto` = the
270
- browser's own ring; e.g. `2px solid #0b5cff` for a custom one. ---- */
271
- --st-focus-ring: auto;
272
- --st-focus-ring-offset: 0px;
273
-
274
- /* ---- Text inputs (search boxes, file names, new folder, pattern) ---- */
275
- --st-input-font-family: var(--st-font-family);
276
- --st-input-mono-font-family: ui-monospace, monospace;
277
- --st-input-font-size: var(--st-text-base);
278
- --st-input-color: var(--st-color-text-strong);
279
- --st-input-bg: var(--st-color-surface);
280
- --st-input-border-color: var(--st-color-border);
281
- --st-input-radius: var(--st-radius-sm);
282
-
283
- /* ---- Wizard frame (<st-template-hub>). Set --st-wizard-bg to
284
- `transparent` to sit on the host app's own card/page. ---- */
285
- --st-wizard-bg: var(--st-color-page);
286
- --st-wizard-subheader-bg: var(--st-color-subtle);
287
- --st-wizard-footer-bg: var(--st-color-surface);
288
- --st-wizard-footer-height: 64px;
289
- --st-wizard-border-color: var(--st-color-border);
290
- --st-wizard-content-padding: var(--st-space-24) var(--st-space-32);
291
- --st-wizard-content-padding-compact: var(--st-space-16) var(--st-space-18);
1
+ /**
2
+ * Design tokens for @sankhyatronics/components.
3
+ *
4
+ * Every st-* component reads its styling exclusively via `var(--st-x)` — no
5
+ * fallback values anywhere — and custom properties inherit through Shadow
6
+ * DOM, so setting these at :root (or any ancestor of your st-* components)
7
+ * reskins/rescales the whole tree without forking any component.
8
+ *
9
+ * Import this file once. There are three layers, in cascade order:
10
+ * 1. PRIMARIES — the only literal color values in the system (5 seeds,
11
+ * plus the 3 independent file-type brand colors). Override these for a
12
+ * full rebrand — everything else follows.
13
+ * 2. SHADES — an internal color-mix() ramp derived from each primary,
14
+ * EXCEPT the neutral ramp: --st-neutral-50 through --st-neutral-950
15
+ * (the standard 11-step scale) is the one shade ramp meant to be
16
+ * overridden directly — every neutral text/background token below
17
+ * resolves to one of these 11 steps.
18
+ * 3. SEMANTIC TOKENS — what components actually consume
19
+ * (--st-color-text, --st-radius-md, --st-text-sm, ...), each pointing
20
+ * at one shade/scale step. Override a semantic token for a single
21
+ * exception, or override a whole scale (spacing/radius/size/type) for
22
+ * a density or typography change.
23
+ *
24
+ * Only reach for an individual token override (see component READMEs /
25
+ * source for the full list) when you need an exception the primaries,
26
+ * neutral palette, and scales below don't cover.
27
+ */
28
+ :root {
29
+ /* =========================================================
30
+ PRIMARIES — override these for a rebrand.
31
+ ========================================================= */
32
+ --st-primary-color: oklch(12.9% 0.042 264.695);
33
+ --st-primary-background: oklch(98.4% 0.003 247.858);
34
+ --st-neutral-50: var(--st-primary-background);
35
+ --st-neutral-950: var(--st-primary-color);
36
+ --st-neutral-100: oklch(from color-mix(in oklch, var(--st-neutral-950) 8%, var(--st-neutral-50)) l calc(c * 2.1) h);
37
+ --st-neutral-200: oklch(from color-mix(in oklch, var(--st-neutral-950) 15%, var(--st-neutral-50)) l calc(c * 3.0) h);
38
+ --st-neutral-300: oklch(from color-mix(in oklch, var(--st-neutral-950) 27%, var(--st-neutral-50)) l calc(c * 4.3) h);
39
+ --st-neutral-400: oklch(from color-mix(in oklch, var(--st-neutral-950) 36%, var(--st-neutral-50)) l calc(c * 5.2) h);
40
+ --st-neutral-500: oklch(from color-mix(in oklch, var(--st-neutral-950) 49%, var(--st-neutral-50)) l calc(c * 7.0) h);
41
+ --st-neutral-600: oklch(from color-mix(in oklch, var(--st-neutral-950) 69%, var(--st-neutral-50)) l calc(c * 5.4) h);
42
+ --st-neutral-700: oklch(from color-mix(in oklch, var(--st-neutral-950) 86%, var(--st-neutral-50)) l calc(c * 3.0) h);
43
+ --st-neutral-800: oklch(from color-mix(in oklch, var(--st-neutral-950) 93%, var(--st-neutral-50)) l calc(c * 2.3) h);
44
+ --st-neutral-900: oklch(from color-mix(in oklch, var(--st-neutral-950) 96%, var(--st-neutral-50)) l calc(c * 1.6) h);
45
+
46
+
47
+ /* Brand-like file-type colors are intentionally independent of the accent
48
+ seed (Word/Excel/PowerPoint have their own identity) — three extra,
49
+ narrowly-scoped primaries rather than derived shades. */
50
+ --st-primary-type-word: oklch(0.55 0.13 250);
51
+ --st-primary-type-excel: oklch(0.55 0.13 145);
52
+ --st-primary-type-powerpoint: oklch(0.55 0.13 40);
53
+
54
+ --st-primary-neutral: var(--st-neutral-50);
55
+ /* --st-brand-color is deliberately left undefined: set it (on :root) to
56
+ make the accent, the solid call-to-action buttons and checkboxes all
57
+ follow one host-app brand color. Unset, each keeps its own default. */
58
+ --st-primary-accent: var(--st-brand-color, var(--st-neutral-500));
59
+ --st-primary-danger: oklch(0.6 0.2 25);
60
+ --st-primary-warning: oklch(0.75 0.16 40);
61
+ --st-primary-success: oklch(0.55 0.13 145);
62
+
63
+ /* Pure white/black anchors for the color-mix() ramps below and the
64
+ "text/icon on a solid fill" token — not general-purpose literals. */
65
+ --st-primary-canvas: var(--st-neutral-50);
66
+ --st-primary-ink: var(--st-neutral-950);
67
+
68
+ --st-accent-subtle: color-mix(in oklch, var(--st-primary-accent) 8%, var(--st-primary-canvas));
69
+ --st-accent-border: color-mix(in oklch, var(--st-primary-accent) 22%, var(--st-primary-canvas));
70
+ --st-accent-muted: color-mix(in oklch, var(--st-primary-accent) 55%, var(--st-primary-canvas));
71
+ --st-accent-text: color-mix(in oklch, var(--st-primary-accent) 78%, var(--st-primary-ink));
72
+
73
+ --st-danger-subtle: color-mix(in oklch, var(--st-primary-danger) 10%, var(--st-primary-canvas));
74
+ --st-danger-border: color-mix(in oklch, var(--st-primary-danger) 28%, var(--st-primary-canvas));
75
+ --st-danger-text: color-mix(in oklch, var(--st-primary-danger) 70%, var(--st-primary-ink));
76
+
77
+ --st-warning-subtle: color-mix(in oklch, var(--st-primary-warning) 10%, var(--st-primary-canvas));
78
+ --st-warning-border: color-mix(in oklch, var(--st-primary-warning) 28%, var(--st-primary-canvas));
79
+ --st-warning-text: color-mix(in oklch, var(--st-primary-warning) 70%, var(--st-primary-ink));
80
+
81
+ --st-success-subtle: color-mix(in oklch, var(--st-primary-success) 20%, var(--st-primary-canvas));
82
+ --st-success-text: color-mix(in oklch, var(--st-primary-success) 70%, var(--st-primary-ink));
83
+
84
+ /* =========================================================
85
+ SEMANTIC TOKENS — what components actually consume.
86
+ ========================================================= */
87
+
88
+ /* ---- Neutral surfaces & text ---- */
89
+ --st-color-page: var(--st-neutral-50);
90
+ --st-color-surface: var(--st-primary-canvas);
91
+ --st-color-subtle: var(--st-neutral-100);
92
+ --st-color-divider: var(--st-neutral-200);
93
+ --st-color-hover: var(--st-neutral-200);
94
+ --st-color-border: var(--st-neutral-300);
95
+ --st-color-skeleton: var(--st-neutral-300);
96
+ --st-color-folder-icon-bg: var(--st-neutral-300);
97
+ --st-color-border-strong: var(--st-neutral-400);
98
+ --st-color-text-faint: var(--st-neutral-600);
99
+ --st-color-text-muted: var(--st-neutral-600);
100
+ --st-color-text: var(--st-neutral-600);
101
+ --st-color-text-strong: var(--st-neutral-900);
102
+
103
+ /* Text/icon color for content sitting on a solid/dark fill (buttons,
104
+ avatars, active pills) — never hardcode "white" at the point of use. */
105
+ --st-color-on-solid: var(--st-primary-canvas);
106
+
107
+ /* ---- Accent ramp — derived from --st-primary-accent ---- */
108
+ --st-color-accent: var(--st-primary-accent);
109
+ --st-color-accent-subtle: var(--st-accent-subtle);
110
+ --st-color-accent-border: var(--st-accent-border);
111
+ --st-color-accent-muted: var(--st-accent-muted);
112
+ --st-color-accent-text: var(--st-accent-text);
113
+
114
+ /* ---- Semantic state ramps — derived from --st-primary-danger/warning/success ---- */
115
+ --st-color-danger: var(--st-primary-danger);
116
+ --st-color-danger-subtle: var(--st-danger-subtle);
117
+ --st-color-danger-border: var(--st-danger-border);
118
+ --st-color-danger-text: var(--st-danger-text);
119
+
120
+ --st-color-warning: var(--st-primary-warning);
121
+ --st-color-warning-subtle: var(--st-warning-subtle);
122
+ --st-color-warning-border: var(--st-warning-border);
123
+ --st-color-warning-text: var(--st-warning-text);
124
+
125
+ --st-color-success: var(--st-primary-success);
126
+ --st-color-success-subtle: var(--st-success-subtle);
127
+ --st-color-success-text: var(--st-success-text);
128
+
129
+ /* ---- File-type badge colors ---- */
130
+ --st-color-type-word: var(--st-primary-type-word);
131
+ --st-color-type-excel: var(--st-primary-type-excel);
132
+ --st-color-type-powerpoint: var(--st-primary-type-powerpoint);
133
+
134
+ /* ---- Standalone brand accent (favorites/star marker) ---- */
135
+ --st-favorite-accent: #f0b429;
136
+
137
+ /* ---- <st-status-pill> override points. Consumers set --st-status-hue
138
+ (or --st-status-bg/--st-status-color directly) on the host element;
139
+ these root defaults mean the token always resolves, so call sites
140
+ never need a fallback. ---- */
141
+ --st-status-hue: var(--st-neutral-hue);
142
+ --st-status-bg: oklch(0.95 0.05 var(--st-status-hue));
143
+ --st-status-color: oklch(0.4 0.13 var(--st-status-hue));
144
+
145
+ /* ---- Shadow tint — box-shadows are colors too, so they get tokens. ---- */
146
+ --st-shadow-color-subtle: var(--st-neutral-300);
147
+ --st-shadow-color-sm: var(--st-neutral-300);
148
+ --st-shadow-color-md: var(--st-neutral-300);
149
+ --st-shadow-color-lg: var(--st-neutral-300);
150
+ --st-shadow-color-xl: var(--st-neutral-300);
151
+
152
+ /* =========================================================
153
+ SPACING SCALE — padding/margin/gap/inset. Named by their px
154
+ value for exactness; override one step or the whole scale.
155
+ ========================================================= */
156
+ --st-space-0: 0;
157
+ --st-space-2: 2px;
158
+ --st-space-3: 3px;
159
+ --st-space-4: 4px;
160
+ --st-space-5: 5px;
161
+ --st-space-6: 6px;
162
+ --st-space-7: 7px;
163
+ --st-space-8: 8px;
164
+ --st-space-9: 9px;
165
+ --st-space-10: 10px;
166
+ --st-space-11: 11px;
167
+ --st-space-12: 12px;
168
+ --st-space-14: 14px;
169
+ --st-space-16: 16px;
170
+ --st-space-18: 18px;
171
+ --st-space-20: 20px;
172
+ --st-space-22: 22px;
173
+ --st-space-24: 24px;
174
+ --st-space-28: 28px;
175
+ --st-space-30: 30px;
176
+ --st-space-32: 32px;
177
+ --st-space-40: 40px;
178
+ --st-space-44: 44px;
179
+ --st-space-48: 48px;
180
+
181
+ /* =========================================================
182
+ RADIUS SCALE
183
+ ========================================================= */
184
+ --st-radius-none: 0;
185
+ --st-radius-xs: 4px;
186
+ --st-radius-sm: 8px;
187
+ --st-radius-md: 10px;
188
+ --st-radius-lg: 12px;
189
+ --st-radius-full: 999px;
190
+ --st-radius-circle: 50%;
191
+
192
+ /* =========================================================
193
+ CONTROL-SIZE SCALE — square-ish UI controls (checkboxes,
194
+ icon buttons, avatars, badges, table icon columns).
195
+ ========================================================= */
196
+ --st-size-14: 14px;
197
+ --st-size-16: 16px;
198
+ --st-size-18: 18px;
199
+ --st-size-20: 20px;
200
+ --st-size-24: 24px;
201
+ --st-size-26: 26px;
202
+ --st-size-28: 28px;
203
+ --st-size-30: 30px;
204
+ --st-size-32: 32px;
205
+ --st-size-36: 36px;
206
+ --st-size-38: 38px;
207
+ --st-size-40: 40px;
208
+
209
+ /* =========================================================
210
+ TYPOGRAPHY TOKENS
211
+ ========================================================= */
212
+ --st-font-family: system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Helvetica, Arial, sans-serif;
213
+
214
+ --st-text-2xs: 10px;
215
+ --st-text-xs: 11px;
216
+ --st-text-sm: 12px;
217
+ --st-text-base: 13px;
218
+ --st-text-md: 14px;
219
+ --st-text-lg: 15px;
220
+ --st-text-xl: 16px;
221
+ --st-text-2xl: 20px;
222
+
223
+ --st-font-weight-regular: 400;
224
+ --st-font-weight-medium: 500;
225
+ --st-font-weight-semibold: 600;
226
+ --st-font-weight-bold: 700;
227
+ --st-font-weight-extrabold: 800;
228
+
229
+ --st-leading-none: 1;
230
+ --st-leading-snug: 1.35;
231
+ --st-leading-normal: 1.4;
232
+
233
+ --st-tracking-tight: -0.2px;
234
+ --st-tracking-normal: 0;
235
+ --st-tracking-wide: 0.3px;
236
+ --st-tracking-wider: 0.4px;
237
+
238
+ /* =========================================================
239
+ COMPONENT TOKENS — narrowly-scoped overrides for one piece
240
+ of chrome, each defaulting to a scale step above. Set them
241
+ on :root or on the component's host element, the same way
242
+ as --st-primary-color.
243
+ ========================================================= */
244
+
245
+ /* ---- Wizard step heading/description (<st-template-hub>) ---- */
246
+ --st-step-heading-font-size: var(--st-text-2xl);
247
+ --st-step-heading-font-weight: var(--st-font-weight-bold);
248
+ --st-step-heading-color: var(--st-color-text-strong);
249
+ --st-step-description-font-size: var(--st-text-base);
250
+ --st-step-description-color: var(--st-color-text-muted);
251
+
252
+ /* ---- Buttons. --st-button-font-size sizes the wizard footer
253
+ (Back/Next/Finish/...); --st-button-font-size-sm the in-content
254
+ action buttons (Generate/Regenerate). The primary fill applies
255
+ to every solid call-to-action button. ---- */
256
+ --st-button-font-size: var(--st-text-md);
257
+ --st-button-font-size-sm: var(--st-text-base);
258
+ --st-button-font-weight: var(--st-font-weight-semibold);
259
+ --st-button-height: var(--st-size-40);
260
+ --st-button-radius: var(--st-radius-sm);
261
+ --st-button-primary-bg: var(--st-brand-color, var(--st-color-text-strong));
262
+ --st-button-primary-color: var(--st-color-on-solid);
263
+ --st-button-primary-font-weight: var(--st-font-weight-bold);
264
+
265
+ /* ---- Checkboxes/radios (native controls, tinted via accent-color).
266
+ `auto` = the browser's own color. ---- */
267
+ --st-checkbox-color: var(--st-brand-color, auto);
268
+
269
+ /* ---- Keyboard focus ring, an `outline` shorthand. `auto` = the
270
+ browser's own ring; e.g. `2px solid #0b5cff` for a custom one. ---- */
271
+ --st-focus-ring: auto;
272
+ --st-focus-ring-offset: 0px;
273
+
274
+ /* ---- Text inputs (search boxes, file names, new folder, pattern) ---- */
275
+ --st-input-font-family: var(--st-font-family);
276
+ --st-input-mono-font-family: ui-monospace, monospace;
277
+ --st-input-font-size: var(--st-text-base);
278
+ --st-input-color: var(--st-color-text-strong);
279
+ --st-input-bg: var(--st-color-surface);
280
+ --st-input-border-color: var(--st-color-border);
281
+ --st-input-radius: var(--st-radius-sm);
282
+
283
+ /* ---- Wizard frame (<st-template-hub>). Set --st-wizard-bg to
284
+ `transparent` to sit on the host app's own card/page. ---- */
285
+ --st-wizard-bg: var(--st-color-page);
286
+ --st-wizard-subheader-bg: var(--st-color-subtle);
287
+ --st-wizard-footer-bg: var(--st-color-surface);
288
+ --st-wizard-footer-height: 64px;
289
+ --st-wizard-border-color: var(--st-color-border);
290
+ --st-wizard-content-padding: var(--st-space-24) var(--st-space-32);
291
+ --st-wizard-content-padding-compact: var(--st-space-16) var(--st-space-18);
292
292
  }