@happyvertical/smrt-ui 0.36.5 → 0.36.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/styles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/styles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,eAAO,MAAM,WAAW;;;;;IAKtB,2FAA2F;;;CAGnF,CAAC"}
@@ -19,5 +19,8 @@ export const themeStyles = {
19
19
  material: './material.css',
20
20
  glass: './glass.css',
21
21
  studio: './studio.css',
22
+ smrt: './smrt.css',
23
+ /** @font-face declarations for the SMRT theme (Space Grotesk / Inter / JetBrains Mono). */
24
+ fonts: './fonts.css',
22
25
  all: './all.css',
23
26
  };
@@ -0,0 +1,646 @@
1
+ /**
2
+ * SMRT Theme CSS
3
+ *
4
+ * Static CSS for the SMRT theme — a dark-first "engineering instrument panel"
5
+ * look (amber signal accent on near-black surfaces) adapted from
6
+ * happyvertical.com. Import at build time for SSR or when JS theming is not
7
+ * needed.
8
+ *
9
+ * import '@happyvertical/smrt-ui/themes/styles/fonts.css'; // optional fonts
10
+ * import '@happyvertical/smrt-ui/themes/styles/smrt.css';
11
+ *
12
+ * The two `[data-theme="smrt"]` token blocks below are the exact output of the
13
+ * theme generator (src/themes/css-generator.ts) for `smrtTheme`, so this
14
+ * static-CSS delivery path and the JS ThemeProvider emit identical values
15
+ * (#1586). Regenerate them from `generateThemeCSS(smrtTheme, …)` after editing
16
+ * src/themes/smrt/index.ts. The signature flourishes follow.
17
+ */
18
+
19
+ [data-theme="smrt"][data-color-scheme="light"] {
20
+ --smrt-theme-id: smrt;
21
+ --smrt-theme-name: SMRT;
22
+ --smrt-color-scheme: light;
23
+ --smrt-font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
24
+ --smrt-color-primary: #e35d12;
25
+ --smrt-color-on-primary: #ffffff;
26
+ --smrt-color-primary-container: #ffe6d4;
27
+ --smrt-color-on-primary-container: #7a2e00;
28
+ --smrt-color-secondary: #5b6470;
29
+ --smrt-color-on-secondary: #ffffff;
30
+ --smrt-color-secondary-container: #e7eaee;
31
+ --smrt-color-on-secondary-container: #2a2f37;
32
+ --smrt-color-tertiary: #6b4eff;
33
+ --smrt-color-on-tertiary: #ffffff;
34
+ --smrt-color-tertiary-container: #e7e0ff;
35
+ --smrt-color-on-tertiary-container: #3a2b8c;
36
+ --smrt-color-error: #c0362c;
37
+ --smrt-color-on-error: #ffffff;
38
+ --smrt-color-error-container: #fbe0dd;
39
+ --smrt-color-on-error-container: #6b1109;
40
+ --smrt-color-warning: #b06a00;
41
+ --smrt-color-on-warning: #ffffff;
42
+ --smrt-color-warning-container: #ffedd0;
43
+ --smrt-color-on-warning-container: #6b4200;
44
+ --smrt-color-success: #0f7a5f;
45
+ --smrt-color-on-success: #ffffff;
46
+ --smrt-color-success-container: #d7f2e8;
47
+ --smrt-color-on-success-container: #043a2c;
48
+ --smrt-color-surface: #ffffff;
49
+ --smrt-color-on-surface: #14171c;
50
+ --smrt-color-surface-variant: #f5f6f8;
51
+ --smrt-color-on-surface-variant: #5b6470;
52
+ --smrt-color-surface-container: #f5f6f8;
53
+ --smrt-color-surface-container-low: #fafbfc;
54
+ --smrt-color-surface-container-high: #eef1f4;
55
+ --smrt-color-surface-container-highest: #e7eaee;
56
+ --smrt-color-surface-container-lowest: #ffffff;
57
+ --smrt-color-surface-dim: #e3e6ea;
58
+ --smrt-color-surface-bright: #ffffff;
59
+ --smrt-color-background: #edeff2;
60
+ --smrt-color-on-background: #14171c;
61
+ --smrt-color-outline: #c6ccd4;
62
+ --smrt-color-outline-variant: #dfe3e8;
63
+ --smrt-color-inverse-surface: #14171c;
64
+ --smrt-color-inverse-on-surface: #f4f6f8;
65
+ --smrt-color-inverse-primary: #ff7a1a;
66
+ --smrt-color-shadow: rgba(20, 26, 36, 0.28);
67
+ --smrt-color-scrim: rgba(0, 0, 0, 0.5);
68
+ --smrt-typography-display-large-size: 3.5rem;
69
+ --smrt-typography-display-large-line-height: 0.98;
70
+ --smrt-typography-display-large-weight: 600;
71
+ --smrt-typography-display-large-tracking: -0.03em;
72
+ --smrt-typography-display-large-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
73
+ --smrt-typography-display-large-font: 600 3.5rem/0.98 "Space Grotesk", system-ui, -apple-system, sans-serif;
74
+ --smrt-typography-display-medium-size: 2.75rem;
75
+ --smrt-typography-display-medium-line-height: 1;
76
+ --smrt-typography-display-medium-weight: 600;
77
+ --smrt-typography-display-medium-tracking: -0.03em;
78
+ --smrt-typography-display-medium-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
79
+ --smrt-typography-display-medium-font: 600 2.75rem/1 "Space Grotesk", system-ui, -apple-system, sans-serif;
80
+ --smrt-typography-display-small-size: 2.25rem;
81
+ --smrt-typography-display-small-line-height: 1.05;
82
+ --smrt-typography-display-small-weight: 600;
83
+ --smrt-typography-display-small-tracking: -0.02em;
84
+ --smrt-typography-display-small-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
85
+ --smrt-typography-display-small-font: 600 2.25rem/1.05 "Space Grotesk", system-ui, -apple-system, sans-serif;
86
+ --smrt-typography-headline-large-size: 2rem;
87
+ --smrt-typography-headline-large-line-height: 1.1;
88
+ --smrt-typography-headline-large-weight: 600;
89
+ --smrt-typography-headline-large-tracking: -0.02em;
90
+ --smrt-typography-headline-large-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
91
+ --smrt-typography-headline-large-font: 600 2rem/1.1 "Space Grotesk", system-ui, -apple-system, sans-serif;
92
+ --smrt-typography-headline-medium-size: 1.6rem;
93
+ --smrt-typography-headline-medium-line-height: 1.15;
94
+ --smrt-typography-headline-medium-weight: 600;
95
+ --smrt-typography-headline-medium-tracking: -0.02em;
96
+ --smrt-typography-headline-medium-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
97
+ --smrt-typography-headline-medium-font: 600 1.6rem/1.15 "Space Grotesk", system-ui, -apple-system, sans-serif;
98
+ --smrt-typography-headline-small-size: 1.3rem;
99
+ --smrt-typography-headline-small-line-height: 1.2;
100
+ --smrt-typography-headline-small-weight: 600;
101
+ --smrt-typography-headline-small-tracking: -0.01em;
102
+ --smrt-typography-headline-small-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
103
+ --smrt-typography-headline-small-font: 600 1.3rem/1.2 "Space Grotesk", system-ui, -apple-system, sans-serif;
104
+ --smrt-typography-title-large-size: 1.125rem;
105
+ --smrt-typography-title-large-line-height: 1.3;
106
+ --smrt-typography-title-large-weight: 600;
107
+ --smrt-typography-title-large-tracking: -0.01em;
108
+ --smrt-typography-title-large-font-family: var(--smrt-font-family);
109
+ --smrt-typography-title-large-font: 600 1.125rem/1.3 var(--smrt-font-family);
110
+ --smrt-typography-title-medium-size: 1rem;
111
+ --smrt-typography-title-medium-line-height: 1.4;
112
+ --smrt-typography-title-medium-weight: 600;
113
+ --smrt-typography-title-medium-tracking: 0;
114
+ --smrt-typography-title-medium-font-family: var(--smrt-font-family);
115
+ --smrt-typography-title-medium-font: 600 1rem/1.4 var(--smrt-font-family);
116
+ --smrt-typography-title-small-size: 0.875rem;
117
+ --smrt-typography-title-small-line-height: 1.4;
118
+ --smrt-typography-title-small-weight: 600;
119
+ --smrt-typography-title-small-tracking: 0;
120
+ --smrt-typography-title-small-font-family: var(--smrt-font-family);
121
+ --smrt-typography-title-small-font: 600 0.875rem/1.4 var(--smrt-font-family);
122
+ --smrt-typography-body-large-size: 1.0625rem;
123
+ --smrt-typography-body-large-line-height: 1.6;
124
+ --smrt-typography-body-large-weight: 400;
125
+ --smrt-typography-body-large-tracking: 0;
126
+ --smrt-typography-body-large-font-family: var(--smrt-font-family);
127
+ --smrt-typography-body-large-font: 400 1.0625rem/1.6 var(--smrt-font-family);
128
+ --smrt-typography-body-medium-size: 0.9375rem;
129
+ --smrt-typography-body-medium-line-height: 1.6;
130
+ --smrt-typography-body-medium-weight: 400;
131
+ --smrt-typography-body-medium-tracking: 0;
132
+ --smrt-typography-body-medium-font-family: var(--smrt-font-family);
133
+ --smrt-typography-body-medium-font: 400 0.9375rem/1.6 var(--smrt-font-family);
134
+ --smrt-typography-body-small-size: 0.8125rem;
135
+ --smrt-typography-body-small-line-height: 1.55;
136
+ --smrt-typography-body-small-weight: 400;
137
+ --smrt-typography-body-small-tracking: 0;
138
+ --smrt-typography-body-small-font-family: var(--smrt-font-family);
139
+ --smrt-typography-body-small-font: 400 0.8125rem/1.55 var(--smrt-font-family);
140
+ --smrt-typography-label-large-size: 0.8125rem;
141
+ --smrt-typography-label-large-line-height: 1.4;
142
+ --smrt-typography-label-large-weight: 600;
143
+ --smrt-typography-label-large-tracking: 0.04em;
144
+ --smrt-typography-label-large-font-family: var(--smrt-font-family);
145
+ --smrt-typography-label-large-font: 600 0.8125rem/1.4 var(--smrt-font-family);
146
+ --smrt-typography-label-medium-size: 0.6875rem;
147
+ --smrt-typography-label-medium-line-height: 1.4;
148
+ --smrt-typography-label-medium-weight: 600;
149
+ --smrt-typography-label-medium-tracking: 0.08em;
150
+ --smrt-typography-label-medium-font-family: var(--smrt-font-family);
151
+ --smrt-typography-label-medium-font: 600 0.6875rem/1.4 var(--smrt-font-family);
152
+ --smrt-typography-label-small-size: 0.625rem;
153
+ --smrt-typography-label-small-line-height: 1.4;
154
+ --smrt-typography-label-small-weight: 600;
155
+ --smrt-typography-label-small-tracking: 0.1em;
156
+ --smrt-typography-label-small-font-family: var(--smrt-font-family);
157
+ --smrt-typography-label-small-font: 600 0.625rem/1.4 var(--smrt-font-family);
158
+ --smrt-spacing-0: 0;
159
+ --smrt-spacing-1: 0.25rem;
160
+ --smrt-spacing-2: 0.5rem;
161
+ --smrt-spacing-3: 0.75rem;
162
+ --smrt-spacing-4: 1rem;
163
+ --smrt-spacing-5: 1.25rem;
164
+ --smrt-spacing-6: 1.5rem;
165
+ --smrt-spacing-7: 1.75rem;
166
+ --smrt-spacing-8: 2rem;
167
+ --smrt-spacing-9: 2.25rem;
168
+ --smrt-spacing-10: 2.5rem;
169
+ --smrt-spacing-11: 2.75rem;
170
+ --smrt-spacing-12: 3rem;
171
+ --smrt-spacing-14: 3.5rem;
172
+ --smrt-spacing-16: 4rem;
173
+ --smrt-spacing-20: 5rem;
174
+ --smrt-spacing-24: 6rem;
175
+ --smrt-spacing-0_5: 0.125rem;
176
+ --smrt-spacing-1_5: 0.375rem;
177
+ --smrt-spacing-2_5: 0.625rem;
178
+ --smrt-spacing-3_5: 0.875rem;
179
+ --smrt-spacing-xs: 0.25rem;
180
+ --smrt-spacing-sm: 0.5rem;
181
+ --smrt-spacing-md: 1rem;
182
+ --smrt-spacing-lg: 1.5rem;
183
+ --smrt-spacing-xl: 2rem;
184
+ --smrt-spacing-2xl: 3rem;
185
+ --smrt-spacing-3xl: 4rem;
186
+ --smrt-radius-none: 0;
187
+ --smrt-radius-sm: 0.25rem;
188
+ --smrt-radius-md: 0.5rem;
189
+ --smrt-radius-lg: 0.75rem;
190
+ --smrt-radius-xl: 1rem;
191
+ --smrt-radius-2xl: 1.5rem;
192
+ --smrt-radius-3xl: 2rem;
193
+ --smrt-radius-full: 9999px;
194
+ --smrt-radius-extra-small: 0.25rem;
195
+ --smrt-radius-small: 0.25rem;
196
+ --smrt-radius-medium: 0.5rem;
197
+ --smrt-radius-large: 0.75rem;
198
+ --smrt-radius-extra-large: 1rem;
199
+ --smrt-elevation-0: none;
200
+ --smrt-elevation-1: inset 0 0 0 1px rgba(20, 26, 36, 0.08);
201
+ --smrt-elevation-2: 0 18px 44px -28px rgba(20, 26, 36, 0.18);
202
+ --smrt-elevation-3: 0 24px 56px -34px rgba(20, 26, 36, 0.22);
203
+ --smrt-elevation-4: 0 30px 70px -40px rgba(20, 26, 36, 0.28);
204
+ --smrt-elevation-5: 0 40px 90px -50px rgba(20, 26, 36, 0.3);
205
+ --smrt-duration-instant: 0ms;
206
+ --smrt-duration-fast: 100ms;
207
+ --smrt-duration-normal: 200ms;
208
+ --smrt-duration-slow: 300ms;
209
+ --smrt-duration-slower: 500ms;
210
+ --smrt-duration-short1: 50ms;
211
+ --smrt-duration-short2: 100ms;
212
+ --smrt-duration-short3: 150ms;
213
+ --smrt-duration-short4: 200ms;
214
+ --smrt-duration-medium1: 250ms;
215
+ --smrt-duration-medium2: 300ms;
216
+ --smrt-duration-medium3: 350ms;
217
+ --smrt-duration-medium4: 400ms;
218
+ --smrt-duration-long1: 450ms;
219
+ --smrt-duration-long2: 500ms;
220
+ --smrt-duration-long3: 550ms;
221
+ --smrt-duration-long4: 600ms;
222
+ --smrt-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
223
+ --smrt-easing-standard-decelerate: cubic-bezier(0, 0, 0.2, 1);
224
+ --smrt-easing-standard-accelerate: cubic-bezier(0.4, 0, 1, 1);
225
+ --smrt-easing-emphasized: cubic-bezier(0.22, 1, 0.36, 1);
226
+ --smrt-easing-emphasized-decelerate: cubic-bezier(0.16, 1, 0.3, 1);
227
+ --smrt-easing-emphasized-accelerate: cubic-bezier(0.4, 0, 1, 1);
228
+ --smrt-font-family-mono: ui-monospace, "SF Mono", "Monaco", "Cascadia Code", "Consolas", monospace;
229
+ --smrt-typography-weight-normal: 400;
230
+ --smrt-typography-weight-medium: 500;
231
+ --smrt-typography-weight-semibold: 600;
232
+ --smrt-typography-weight-bold: 700;
233
+ --smrt-z-index-dropdown: 1000;
234
+ --smrt-z-index-sticky: 1100;
235
+ --smrt-z-index-overlay: 1200;
236
+ --smrt-z-index-modal: 1300;
237
+ --smrt-z-index-dialog: 1300;
238
+ --smrt-z-index-popover: 1400;
239
+ --smrt-z-index-toast: 1500;
240
+ --smrt-z-index-tooltip: 1600;
241
+ --smrt-z-index-loading: 1700;
242
+ }
243
+
244
+ [data-theme="smrt"][data-color-scheme="dark"] {
245
+ --smrt-theme-id: smrt;
246
+ --smrt-theme-name: SMRT;
247
+ --smrt-color-scheme: dark;
248
+ --smrt-font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
249
+ --smrt-color-primary: #ff7a1a;
250
+ --smrt-color-on-primary: #1a0e02;
251
+ --smrt-color-primary-container: #2a1a0c;
252
+ --smrt-color-on-primary-container: #ffb784;
253
+ --smrt-color-secondary: #9aa3af;
254
+ --smrt-color-on-secondary: #14171c;
255
+ --smrt-color-secondary-container: #23272e;
256
+ --smrt-color-on-secondary-container: #e6e9ee;
257
+ --smrt-color-tertiary: #b9a8ff;
258
+ --smrt-color-on-tertiary: #241a4d;
259
+ --smrt-color-tertiary-container: #2a2350;
260
+ --smrt-color-on-tertiary-container: #ddd4ff;
261
+ --smrt-color-error: #ff6b6b;
262
+ --smrt-color-on-error: #2a0a0a;
263
+ --smrt-color-error-container: #3a1414;
264
+ --smrt-color-on-error-container: #ffc4c4;
265
+ --smrt-color-warning: #ffb020;
266
+ --smrt-color-on-warning: #1a0e02;
267
+ --smrt-color-warning-container: #3a2a0c;
268
+ --smrt-color-on-warning-container: #ffd9a3;
269
+ --smrt-color-success: #3fb98f;
270
+ --smrt-color-on-success: #00261c;
271
+ --smrt-color-success-container: #103a30;
272
+ --smrt-color-on-success-container: #7fd9be;
273
+ --smrt-color-surface: #121417;
274
+ --smrt-color-on-surface: #c9cdd3;
275
+ --smrt-color-surface-variant: #181b1f;
276
+ --smrt-color-on-surface-variant: #9aa3af;
277
+ --smrt-color-surface-container: #121417;
278
+ --smrt-color-surface-container-low: #0e1013;
279
+ --smrt-color-surface-container-high: #181b1f;
280
+ --smrt-color-surface-container-highest: #1f242b;
281
+ --smrt-color-surface-container-lowest: #0a0c10;
282
+ --smrt-color-surface-dim: #0b0c0e;
283
+ --smrt-color-surface-bright: #23272e;
284
+ --smrt-color-background: #0b0c0e;
285
+ --smrt-color-on-background: #c9cdd3;
286
+ --smrt-color-outline: #333842;
287
+ --smrt-color-outline-variant: #23272e;
288
+ --smrt-color-inverse-surface: #edeff2;
289
+ --smrt-color-inverse-on-surface: #14171c;
290
+ --smrt-color-inverse-primary: #b34d00;
291
+ --smrt-color-shadow: rgba(0, 0, 0, 0.8);
292
+ --smrt-color-scrim: rgba(0, 0, 0, 0.7);
293
+ --smrt-typography-display-large-size: 3.5rem;
294
+ --smrt-typography-display-large-line-height: 0.98;
295
+ --smrt-typography-display-large-weight: 600;
296
+ --smrt-typography-display-large-tracking: -0.03em;
297
+ --smrt-typography-display-large-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
298
+ --smrt-typography-display-large-font: 600 3.5rem/0.98 "Space Grotesk", system-ui, -apple-system, sans-serif;
299
+ --smrt-typography-display-medium-size: 2.75rem;
300
+ --smrt-typography-display-medium-line-height: 1;
301
+ --smrt-typography-display-medium-weight: 600;
302
+ --smrt-typography-display-medium-tracking: -0.03em;
303
+ --smrt-typography-display-medium-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
304
+ --smrt-typography-display-medium-font: 600 2.75rem/1 "Space Grotesk", system-ui, -apple-system, sans-serif;
305
+ --smrt-typography-display-small-size: 2.25rem;
306
+ --smrt-typography-display-small-line-height: 1.05;
307
+ --smrt-typography-display-small-weight: 600;
308
+ --smrt-typography-display-small-tracking: -0.02em;
309
+ --smrt-typography-display-small-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
310
+ --smrt-typography-display-small-font: 600 2.25rem/1.05 "Space Grotesk", system-ui, -apple-system, sans-serif;
311
+ --smrt-typography-headline-large-size: 2rem;
312
+ --smrt-typography-headline-large-line-height: 1.1;
313
+ --smrt-typography-headline-large-weight: 600;
314
+ --smrt-typography-headline-large-tracking: -0.02em;
315
+ --smrt-typography-headline-large-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
316
+ --smrt-typography-headline-large-font: 600 2rem/1.1 "Space Grotesk", system-ui, -apple-system, sans-serif;
317
+ --smrt-typography-headline-medium-size: 1.6rem;
318
+ --smrt-typography-headline-medium-line-height: 1.15;
319
+ --smrt-typography-headline-medium-weight: 600;
320
+ --smrt-typography-headline-medium-tracking: -0.02em;
321
+ --smrt-typography-headline-medium-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
322
+ --smrt-typography-headline-medium-font: 600 1.6rem/1.15 "Space Grotesk", system-ui, -apple-system, sans-serif;
323
+ --smrt-typography-headline-small-size: 1.3rem;
324
+ --smrt-typography-headline-small-line-height: 1.2;
325
+ --smrt-typography-headline-small-weight: 600;
326
+ --smrt-typography-headline-small-tracking: -0.01em;
327
+ --smrt-typography-headline-small-font-family: "Space Grotesk", system-ui, -apple-system, sans-serif;
328
+ --smrt-typography-headline-small-font: 600 1.3rem/1.2 "Space Grotesk", system-ui, -apple-system, sans-serif;
329
+ --smrt-typography-title-large-size: 1.125rem;
330
+ --smrt-typography-title-large-line-height: 1.3;
331
+ --smrt-typography-title-large-weight: 600;
332
+ --smrt-typography-title-large-tracking: -0.01em;
333
+ --smrt-typography-title-large-font-family: var(--smrt-font-family);
334
+ --smrt-typography-title-large-font: 600 1.125rem/1.3 var(--smrt-font-family);
335
+ --smrt-typography-title-medium-size: 1rem;
336
+ --smrt-typography-title-medium-line-height: 1.4;
337
+ --smrt-typography-title-medium-weight: 600;
338
+ --smrt-typography-title-medium-tracking: 0;
339
+ --smrt-typography-title-medium-font-family: var(--smrt-font-family);
340
+ --smrt-typography-title-medium-font: 600 1rem/1.4 var(--smrt-font-family);
341
+ --smrt-typography-title-small-size: 0.875rem;
342
+ --smrt-typography-title-small-line-height: 1.4;
343
+ --smrt-typography-title-small-weight: 600;
344
+ --smrt-typography-title-small-tracking: 0;
345
+ --smrt-typography-title-small-font-family: var(--smrt-font-family);
346
+ --smrt-typography-title-small-font: 600 0.875rem/1.4 var(--smrt-font-family);
347
+ --smrt-typography-body-large-size: 1.0625rem;
348
+ --smrt-typography-body-large-line-height: 1.6;
349
+ --smrt-typography-body-large-weight: 400;
350
+ --smrt-typography-body-large-tracking: 0;
351
+ --smrt-typography-body-large-font-family: var(--smrt-font-family);
352
+ --smrt-typography-body-large-font: 400 1.0625rem/1.6 var(--smrt-font-family);
353
+ --smrt-typography-body-medium-size: 0.9375rem;
354
+ --smrt-typography-body-medium-line-height: 1.6;
355
+ --smrt-typography-body-medium-weight: 400;
356
+ --smrt-typography-body-medium-tracking: 0;
357
+ --smrt-typography-body-medium-font-family: var(--smrt-font-family);
358
+ --smrt-typography-body-medium-font: 400 0.9375rem/1.6 var(--smrt-font-family);
359
+ --smrt-typography-body-small-size: 0.8125rem;
360
+ --smrt-typography-body-small-line-height: 1.55;
361
+ --smrt-typography-body-small-weight: 400;
362
+ --smrt-typography-body-small-tracking: 0;
363
+ --smrt-typography-body-small-font-family: var(--smrt-font-family);
364
+ --smrt-typography-body-small-font: 400 0.8125rem/1.55 var(--smrt-font-family);
365
+ --smrt-typography-label-large-size: 0.8125rem;
366
+ --smrt-typography-label-large-line-height: 1.4;
367
+ --smrt-typography-label-large-weight: 600;
368
+ --smrt-typography-label-large-tracking: 0.04em;
369
+ --smrt-typography-label-large-font-family: var(--smrt-font-family);
370
+ --smrt-typography-label-large-font: 600 0.8125rem/1.4 var(--smrt-font-family);
371
+ --smrt-typography-label-medium-size: 0.6875rem;
372
+ --smrt-typography-label-medium-line-height: 1.4;
373
+ --smrt-typography-label-medium-weight: 600;
374
+ --smrt-typography-label-medium-tracking: 0.08em;
375
+ --smrt-typography-label-medium-font-family: var(--smrt-font-family);
376
+ --smrt-typography-label-medium-font: 600 0.6875rem/1.4 var(--smrt-font-family);
377
+ --smrt-typography-label-small-size: 0.625rem;
378
+ --smrt-typography-label-small-line-height: 1.4;
379
+ --smrt-typography-label-small-weight: 600;
380
+ --smrt-typography-label-small-tracking: 0.1em;
381
+ --smrt-typography-label-small-font-family: var(--smrt-font-family);
382
+ --smrt-typography-label-small-font: 600 0.625rem/1.4 var(--smrt-font-family);
383
+ --smrt-spacing-0: 0;
384
+ --smrt-spacing-1: 0.25rem;
385
+ --smrt-spacing-2: 0.5rem;
386
+ --smrt-spacing-3: 0.75rem;
387
+ --smrt-spacing-4: 1rem;
388
+ --smrt-spacing-5: 1.25rem;
389
+ --smrt-spacing-6: 1.5rem;
390
+ --smrt-spacing-7: 1.75rem;
391
+ --smrt-spacing-8: 2rem;
392
+ --smrt-spacing-9: 2.25rem;
393
+ --smrt-spacing-10: 2.5rem;
394
+ --smrt-spacing-11: 2.75rem;
395
+ --smrt-spacing-12: 3rem;
396
+ --smrt-spacing-14: 3.5rem;
397
+ --smrt-spacing-16: 4rem;
398
+ --smrt-spacing-20: 5rem;
399
+ --smrt-spacing-24: 6rem;
400
+ --smrt-spacing-0_5: 0.125rem;
401
+ --smrt-spacing-1_5: 0.375rem;
402
+ --smrt-spacing-2_5: 0.625rem;
403
+ --smrt-spacing-3_5: 0.875rem;
404
+ --smrt-spacing-xs: 0.25rem;
405
+ --smrt-spacing-sm: 0.5rem;
406
+ --smrt-spacing-md: 1rem;
407
+ --smrt-spacing-lg: 1.5rem;
408
+ --smrt-spacing-xl: 2rem;
409
+ --smrt-spacing-2xl: 3rem;
410
+ --smrt-spacing-3xl: 4rem;
411
+ --smrt-radius-none: 0;
412
+ --smrt-radius-sm: 0.25rem;
413
+ --smrt-radius-md: 0.5rem;
414
+ --smrt-radius-lg: 0.75rem;
415
+ --smrt-radius-xl: 1rem;
416
+ --smrt-radius-2xl: 1.5rem;
417
+ --smrt-radius-3xl: 2rem;
418
+ --smrt-radius-full: 9999px;
419
+ --smrt-radius-extra-small: 0.25rem;
420
+ --smrt-radius-small: 0.25rem;
421
+ --smrt-radius-medium: 0.5rem;
422
+ --smrt-radius-large: 0.75rem;
423
+ --smrt-radius-extra-large: 1rem;
424
+ --smrt-elevation-0: none;
425
+ --smrt-elevation-1: inset 0 0 0 1px rgba(255, 255, 255, 0.06);
426
+ --smrt-elevation-2: 0 18px 44px -28px rgba(0, 0, 0, 0.6);
427
+ --smrt-elevation-3: 0 24px 56px -34px rgba(0, 0, 0, 0.72);
428
+ --smrt-elevation-4: 0 30px 66px -40px rgba(0, 0, 0, 0.82);
429
+ --smrt-elevation-5: 0 40px 90px -50px rgba(0, 0, 0, 0.88);
430
+ --smrt-duration-instant: 0ms;
431
+ --smrt-duration-fast: 100ms;
432
+ --smrt-duration-normal: 200ms;
433
+ --smrt-duration-slow: 300ms;
434
+ --smrt-duration-slower: 500ms;
435
+ --smrt-duration-short1: 50ms;
436
+ --smrt-duration-short2: 100ms;
437
+ --smrt-duration-short3: 150ms;
438
+ --smrt-duration-short4: 200ms;
439
+ --smrt-duration-medium1: 250ms;
440
+ --smrt-duration-medium2: 300ms;
441
+ --smrt-duration-medium3: 350ms;
442
+ --smrt-duration-medium4: 400ms;
443
+ --smrt-duration-long1: 450ms;
444
+ --smrt-duration-long2: 500ms;
445
+ --smrt-duration-long3: 550ms;
446
+ --smrt-duration-long4: 600ms;
447
+ --smrt-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
448
+ --smrt-easing-standard-decelerate: cubic-bezier(0, 0, 0.2, 1);
449
+ --smrt-easing-standard-accelerate: cubic-bezier(0.4, 0, 1, 1);
450
+ --smrt-easing-emphasized: cubic-bezier(0.22, 1, 0.36, 1);
451
+ --smrt-easing-emphasized-decelerate: cubic-bezier(0.16, 1, 0.3, 1);
452
+ --smrt-easing-emphasized-accelerate: cubic-bezier(0.4, 0, 1, 1);
453
+ --smrt-font-family-mono: ui-monospace, "SF Mono", "Monaco", "Cascadia Code", "Consolas", monospace;
454
+ --smrt-typography-weight-normal: 400;
455
+ --smrt-typography-weight-medium: 500;
456
+ --smrt-typography-weight-semibold: 600;
457
+ --smrt-typography-weight-bold: 700;
458
+ --smrt-z-index-dropdown: 1000;
459
+ --smrt-z-index-sticky: 1100;
460
+ --smrt-z-index-overlay: 1200;
461
+ --smrt-z-index-modal: 1300;
462
+ --smrt-z-index-dialog: 1300;
463
+ --smrt-z-index-popover: 1400;
464
+ --smrt-z-index-toast: 1500;
465
+ --smrt-z-index-tooltip: 1600;
466
+ --smrt-z-index-loading: 1700;
467
+ }
468
+
469
+ /* ============================================================================
470
+ * Signature flourishes (opt-in utility classes)
471
+ *
472
+ * The "engineering instrument panel" motifs from happyvertical.com, expressed
473
+ * against the SMRT theme tokens. Add these classes to your own markup — they
474
+ * are not applied automatically. They read best under `data-theme="smrt"`,
475
+ * where `--smrt-color-primary` is the signal amber.
476
+ * ========================================================================== */
477
+
478
+ /* Faint engineering-grid background with a radial fade.
479
+ * Put on a full-bleed section or a fixed underlay element. */
480
+ .smrt-grid-bg {
481
+ position: relative;
482
+ }
483
+ .smrt-grid-bg::before {
484
+ content: '';
485
+ position: absolute;
486
+ inset: 0;
487
+ z-index: 0;
488
+ pointer-events: none;
489
+ background-image:
490
+ linear-gradient(var(--smrt-color-outline-variant) 1px, transparent 1px),
491
+ linear-gradient(90deg, var(--smrt-color-outline-variant) 1px, transparent 1px);
492
+ background-size: 44px 44px;
493
+ opacity: 0.32;
494
+ -webkit-mask-image: radial-gradient(120% 90% at 50% 0%, #000 35%, transparent 100%);
495
+ mask-image: radial-gradient(120% 90% at 50% 0%, #000 35%, transparent 100%);
496
+ }
497
+ .smrt-grid-bg > * {
498
+ position: relative;
499
+ z-index: 1;
500
+ }
501
+
502
+ /* Amber wash — a soft radial accent glow behind a hero/section. */
503
+ .smrt-accent-wash {
504
+ background:
505
+ radial-gradient(
506
+ 120% 120% at 80% -10%,
507
+ color-mix(in srgb, var(--smrt-color-primary) 9%, transparent),
508
+ transparent 55%
509
+ ),
510
+ var(--smrt-color-background);
511
+ }
512
+
513
+ /* Glow utility — amber drop glow for marks, logos, key controls. */
514
+ .smrt-glow {
515
+ box-shadow: 0 8px 24px -6px color-mix(in srgb, var(--smrt-color-primary) 45%, transparent);
516
+ }
517
+ .smrt-text-glow {
518
+ text-shadow: 0 0 18px color-mix(in srgb, var(--smrt-color-primary) 45%, transparent);
519
+ }
520
+
521
+ /* Oscilloscope hairline — a thin top progress/scan line. Set width on the
522
+ * fill (e.g. via inline style bound to scroll progress). */
523
+ .smrt-scope {
524
+ position: relative;
525
+ height: 2px;
526
+ width: 100%;
527
+ background: var(--smrt-color-outline-variant);
528
+ overflow: hidden;
529
+ }
530
+ .smrt-scope-fill {
531
+ display: block;
532
+ height: 100%;
533
+ width: 0;
534
+ background: linear-gradient(
535
+ 90deg,
536
+ color-mix(in srgb, var(--smrt-color-primary) 80%, #b34d00),
537
+ var(--smrt-color-primary)
538
+ );
539
+ box-shadow: 0 0 10px color-mix(in srgb, var(--smrt-color-primary) 70%, transparent);
540
+ transition: width 1.1s var(--smrt-easing-emphasized);
541
+ }
542
+
543
+ /* Live status dot — pulsing amber indicator. */
544
+ .smrt-livedot {
545
+ display: inline-block;
546
+ width: 7px;
547
+ height: 7px;
548
+ border-radius: 50%;
549
+ background: var(--smrt-color-primary);
550
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--smrt-color-primary) 22%, transparent);
551
+ animation: smrt-pulse 2.4s var(--smrt-easing-emphasized) infinite;
552
+ }
553
+
554
+ /* Technical label — monospace, uppercase, wide tracking. The `[// LABEL]`
555
+ * bracket-slash voice from the site. */
556
+ .smrt-label {
557
+ font-family: 'JetBrains Mono', var(--smrt-font-family-mono);
558
+ font-size: 0.6875rem;
559
+ font-weight: 500;
560
+ letter-spacing: 0.12em;
561
+ text-transform: uppercase;
562
+ color: var(--smrt-color-on-surface-variant);
563
+ }
564
+
565
+ /* Instrument readout panel — gradient surface, dashed rows, mono metadata. */
566
+ .smrt-readout {
567
+ border: 1px solid var(--smrt-color-outline);
568
+ border-radius: var(--smrt-radius-lg);
569
+ background: linear-gradient(
570
+ 180deg,
571
+ var(--smrt-color-surface-bright),
572
+ var(--smrt-color-surface)
573
+ );
574
+ overflow: hidden;
575
+ color: var(--smrt-color-on-surface);
576
+ box-shadow: var(--smrt-elevation-4);
577
+ }
578
+ .smrt-readout-row {
579
+ display: flex;
580
+ justify-content: space-between;
581
+ align-items: center;
582
+ padding: 9px 14px;
583
+ font-family: 'JetBrains Mono', var(--smrt-font-family-mono);
584
+ font-size: 0.6875rem;
585
+ letter-spacing: 0.08em;
586
+ border-bottom: 1px dashed var(--smrt-color-outline-variant);
587
+ }
588
+ .smrt-readout-row:last-child {
589
+ border-bottom: none;
590
+ }
591
+
592
+ /* Terminal / code surface. */
593
+ .smrt-terminal {
594
+ border: 1px solid var(--smrt-color-outline);
595
+ border-radius: var(--smrt-radius-lg);
596
+ overflow: hidden;
597
+ background: var(--smrt-color-surface-container-lowest);
598
+ box-shadow: var(--smrt-elevation-4);
599
+ }
600
+ .smrt-terminal pre,
601
+ .smrt-terminal code {
602
+ margin: 0;
603
+ padding: 18px;
604
+ font-family: 'JetBrains Mono', var(--smrt-font-family-mono);
605
+ font-size: 0.78rem;
606
+ line-height: 1.75;
607
+ color: var(--smrt-color-on-surface);
608
+ white-space: pre-wrap;
609
+ word-break: break-word;
610
+ }
611
+
612
+ /* Blinking caret (typewriter cursor). */
613
+ .smrt-caret {
614
+ display: inline-block;
615
+ width: 8px;
616
+ height: 1.05em;
617
+ vertical-align: text-bottom;
618
+ background: var(--smrt-color-primary);
619
+ animation: smrt-blink 1.05s steps(1) infinite;
620
+ }
621
+
622
+ @keyframes smrt-pulse {
623
+ 0%,
624
+ 100% {
625
+ opacity: 1;
626
+ }
627
+ 50% {
628
+ opacity: 0.35;
629
+ }
630
+ }
631
+
632
+ @keyframes smrt-blink {
633
+ 50% {
634
+ opacity: 0;
635
+ }
636
+ }
637
+
638
+ @media (prefers-reduced-motion: reduce) {
639
+ .smrt-livedot,
640
+ .smrt-caret {
641
+ animation: none;
642
+ }
643
+ .smrt-scope-fill {
644
+ transition: none;
645
+ }
646
+ }
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Unified Theme System Types
3
3
  *
4
- * Core types for the multi-theme architecture supporting Material, Glass, and Studio themes.
4
+ * Core types for the multi-theme architecture supporting Material, Glass, Studio, and SMRT themes.
5
5
  */
6
6
  /** Available theme presets */
7
- export type ThemePreset = 'material' | 'glass' | 'studio';
7
+ export type ThemePreset = 'material' | 'glass' | 'studio' | 'smrt';
8
8
  /** Color scheme mode */
9
9
  export type ColorScheme = 'light' | 'dark' | 'system';
10
10
  /** Resolved color scheme (never 'system') */