@gtcx/tokens 0.1.0 → 0.2.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.
@@ -0,0 +1,688 @@
1
+ /**
2
+ * @module semantic
3
+ *
4
+ * Semantic design tokens — named for their purpose, not their value.
5
+ * Components should consume these tokens exclusively; never reference
6
+ * primitives directly.
7
+ *
8
+ * Each category is exported individually so consumers can import only
9
+ * what they need:
10
+ *
11
+ * ```ts
12
+ * import { semanticColors, semanticTypography } from '@gtcx/tokens';
13
+ * ```
14
+ *
15
+ * The combined `semanticTokens` object is also exported for backward
16
+ * compatibility with code that imports the entire token set.
17
+ */
18
+ /**
19
+ * Semantic color tokens.
20
+ *
21
+ * Every value traces back to a {@link colorPrimitives} value — no orphan
22
+ * hex strings. Dark mode overrides live in {@link ../dark | darkSemanticColors}.
23
+ */
24
+ declare const semanticColors: {
25
+ /** Primary brand action color */
26
+ readonly primary: "#1B84FF";
27
+ /** Primary hover state */
28
+ readonly primaryHover: "#1270DC";
29
+ /** Primary active/pressed state */
30
+ readonly primaryActive: "#0A5CB8";
31
+ /** Primary tinted background (selected rows, badges) */
32
+ readonly primaryBg: "#EFF5FF";
33
+ /** Secondary brand color */
34
+ readonly secondary: "#6172f3";
35
+ /** Secondary hover state */
36
+ readonly secondaryHover: "#444ce7";
37
+ /** Positive outcome (approvals, passing checks) */
38
+ readonly success: "#17C653";
39
+ /** Caution state (pending review, warnings) */
40
+ readonly warning: "#F6B100";
41
+ /** Destructive/failure state */
42
+ readonly error: "#F8285A";
43
+ /** Informational state */
44
+ readonly info: "#7239EA";
45
+ /** Financial gain */
46
+ readonly profit: "#17C653";
47
+ /** Financial loss */
48
+ readonly loss: "#F8285A";
49
+ /** Compliance approved */
50
+ readonly approved: "#12A344";
51
+ /** Compliance pending */
52
+ readonly pending: "#D09200";
53
+ /** Compliance rejected */
54
+ readonly rejected: "#D4194A";
55
+ /** Security verified */
56
+ readonly secure: "#12A344";
57
+ /** Security compromised */
58
+ readonly insecure: "#D4194A";
59
+ /** Primary body text */
60
+ readonly textPrimary: "#071437";
61
+ /** Secondary/supporting text */
62
+ readonly textSecondary: "#5E6880";
63
+ /** Tertiary/label text */
64
+ readonly textTertiary: "#78829D";
65
+ /** Muted/placeholder text */
66
+ readonly textMuted: "#99A1B7";
67
+ /** Text on dark backgrounds */
68
+ readonly textInverse: "#F9F9F9";
69
+ /** Page-level background */
70
+ readonly bgPage: "#F9F9F9";
71
+ /** Card/surface background */
72
+ readonly bgSurface: "#ffffff";
73
+ /** Surface hover state */
74
+ readonly bgSurfaceHover: "#F1F1F4";
75
+ /** Tertiary surface (nested cards, wells) */
76
+ readonly bgSurfaceTertiary: "#DBDFE9";
77
+ /** Inverse background (dark sections) */
78
+ readonly bgInverse: "#071437";
79
+ /** Sidebar background */
80
+ readonly bgSidebar: "#ffffff";
81
+ /** Header background */
82
+ readonly bgHeader: "#ffffff";
83
+ /** Default border */
84
+ readonly border: "#DBDFE9";
85
+ /** Light/subtle border */
86
+ readonly borderLight: "#F1F1F4";
87
+ /** Emphasized border */
88
+ readonly borderSecondary: "#C4CADA";
89
+ /** Focus ring border */
90
+ readonly borderFocus: "#1B84FF";
91
+ /** Default link color */
92
+ readonly link: "#1270DC";
93
+ /** Link hover state */
94
+ readonly linkHover: "#0A5CB8";
95
+ };
96
+ /**
97
+ * Semantic spacing tokens.
98
+ *
99
+ * Page-level gutters, component-internal spacing, and layout dimensions.
100
+ * All values trace to {@link spacingPrimitives}.
101
+ */
102
+ declare const semanticSpacing: {
103
+ /** Horizontal page gutter */
104
+ readonly pageGutter: 24;
105
+ /** Internal card padding */
106
+ readonly cardPadding: 16;
107
+ /** Gap between page sections */
108
+ readonly sectionGap: 24;
109
+ /** Gap between sibling components */
110
+ readonly componentGap: 12;
111
+ /** Inline element gap (icon + label) */
112
+ readonly inlineGap: 8;
113
+ /** Per-component spacing presets */
114
+ readonly component: {
115
+ readonly button: {
116
+ readonly paddingX: 16;
117
+ readonly paddingY: 8;
118
+ readonly gap: 8;
119
+ };
120
+ readonly input: {
121
+ readonly paddingX: 12;
122
+ readonly paddingY: 8;
123
+ };
124
+ readonly card: {
125
+ readonly padding: 24;
126
+ readonly gap: 16;
127
+ };
128
+ readonly form: {
129
+ readonly fieldGap: 16;
130
+ readonly sectionGap: 32;
131
+ readonly labelGap: 8;
132
+ };
133
+ readonly modal: {
134
+ readonly padding: 24;
135
+ readonly gap: 16;
136
+ };
137
+ readonly table: {
138
+ readonly cellPadding: 16;
139
+ readonly headerPadding: 16;
140
+ };
141
+ };
142
+ /** Layout-level spacing presets */
143
+ readonly layout: {
144
+ readonly container: {
145
+ readonly paddingX: 16;
146
+ readonly paddingY: 24;
147
+ };
148
+ readonly section: {
149
+ readonly marginY: 48;
150
+ readonly gap: 32;
151
+ };
152
+ readonly page: {
153
+ readonly marginY: 64;
154
+ readonly paddingX: 24;
155
+ };
156
+ };
157
+ };
158
+ /**
159
+ * Semantic typography tokens.
160
+ *
161
+ * Font families, display/heading/body/button type scales.
162
+ * All values trace to font-* primitive scales.
163
+ */
164
+ declare const semanticTypography: {
165
+ /** Default sans-serif font stack */
166
+ readonly fontFamily: "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif";
167
+ /** Monospace font stack for code */
168
+ readonly fontFamilyCode: "JetBrains Mono, Fira Code, Consolas, monospace";
169
+ /** Serif font stack for editorial content */
170
+ readonly fontFamilySerif: "Georgia, 'Times New Roman', serif";
171
+ /** Display type scale — Untitled UI v7.0 exact values */
172
+ readonly display: {
173
+ readonly '2xl': {
174
+ readonly fontSize: 72;
175
+ readonly fontWeight: 600;
176
+ readonly lineHeight: "90px";
177
+ readonly letterSpacing: "-0.02em";
178
+ };
179
+ readonly xl: {
180
+ readonly fontSize: 60;
181
+ readonly fontWeight: 600;
182
+ readonly lineHeight: "72px";
183
+ readonly letterSpacing: "-0.02em";
184
+ };
185
+ readonly lg: {
186
+ readonly fontSize: 48;
187
+ readonly fontWeight: 600;
188
+ readonly lineHeight: "60px";
189
+ readonly letterSpacing: "-0.02em";
190
+ };
191
+ readonly md: {
192
+ readonly fontSize: 36;
193
+ readonly fontWeight: 600;
194
+ readonly lineHeight: "44px";
195
+ readonly letterSpacing: "-0.02em";
196
+ };
197
+ readonly sm: {
198
+ readonly fontSize: 30;
199
+ readonly fontWeight: 600;
200
+ readonly lineHeight: "38px";
201
+ readonly letterSpacing: "0em";
202
+ };
203
+ readonly xs: {
204
+ readonly fontSize: 24;
205
+ readonly fontWeight: 600;
206
+ readonly lineHeight: "32px";
207
+ readonly letterSpacing: "0em";
208
+ };
209
+ };
210
+ /** Heading type scale — page/section/card headings */
211
+ readonly heading: {
212
+ readonly h1: {
213
+ readonly fontSize: 30;
214
+ readonly fontWeight: 700;
215
+ readonly lineHeight: 1.2;
216
+ };
217
+ readonly h2: {
218
+ readonly fontSize: 24;
219
+ readonly fontWeight: 600;
220
+ readonly lineHeight: 1.2;
221
+ };
222
+ readonly h3: {
223
+ readonly fontSize: 20;
224
+ readonly fontWeight: 600;
225
+ readonly lineHeight: 1.5;
226
+ };
227
+ readonly h4: {
228
+ readonly fontSize: 18;
229
+ readonly fontWeight: 500;
230
+ readonly lineHeight: 1.5;
231
+ };
232
+ };
233
+ /** Body type scale — Untitled UI v7.0 exact values */
234
+ readonly body: {
235
+ readonly lg: {
236
+ readonly fontSize: 18;
237
+ readonly fontWeight: 400;
238
+ readonly lineHeight: "28px";
239
+ };
240
+ readonly md: {
241
+ readonly fontSize: 16;
242
+ readonly fontWeight: 400;
243
+ readonly lineHeight: "24px";
244
+ };
245
+ readonly sm: {
246
+ readonly fontSize: 14;
247
+ readonly fontWeight: 400;
248
+ readonly lineHeight: "20px";
249
+ };
250
+ };
251
+ /** Caption — footnotes, timestamps, fine print */
252
+ readonly caption: {
253
+ readonly fontSize: 12;
254
+ readonly fontWeight: 400;
255
+ readonly lineHeight: "18px";
256
+ };
257
+ /** Button label type scale */
258
+ readonly button: {
259
+ readonly lg: {
260
+ readonly fontSize: 18;
261
+ readonly fontWeight: 500;
262
+ readonly lineHeight: 1.5;
263
+ };
264
+ readonly md: {
265
+ readonly fontSize: 16;
266
+ readonly fontWeight: 500;
267
+ readonly lineHeight: 1.5;
268
+ };
269
+ readonly sm: {
270
+ readonly fontSize: 14;
271
+ readonly fontWeight: 500;
272
+ readonly lineHeight: 1.5;
273
+ };
274
+ };
275
+ };
276
+ /** Semantic border-radius tokens for component shapes — Untitled UI v7.0 defaults. */
277
+ declare const semanticRadii: {
278
+ /** Default component radius — 8px (Untitled UI md) */
279
+ readonly component: 8;
280
+ /** Card/panel radius — 12px (Untitled UI xl) */
281
+ readonly card: 12;
282
+ /** Button radius — 8px (Untitled UI md) */
283
+ readonly button: 8;
284
+ /** Input/select radius — 8px (Untitled UI md) */
285
+ readonly input: 8;
286
+ /** Tag/badge radius — 4px (Untitled UI xs) */
287
+ readonly tag: 4;
288
+ /** Avatar — fully round */
289
+ readonly avatar: 9999;
290
+ };
291
+ /** Semantic shadow tokens for elevation. */
292
+ declare const semanticShadows: {
293
+ /** Card/panel elevation */
294
+ readonly card: "0 1px 2px 0 rgb(0 0 0 / 0.05)";
295
+ /** Dropdown/popover elevation */
296
+ readonly dropdown: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)";
297
+ /** Modal/dialog elevation */
298
+ readonly modal: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)";
299
+ };
300
+ /** Semantic layout dimension tokens (in pixels). */
301
+ declare const semanticLayout: {
302
+ /** Sidebar expanded width — Metronic: 280px */
303
+ readonly sidebarWidth: 280;
304
+ /** Sidebar collapsed width */
305
+ readonly sidebarCollapsedWidth: 72;
306
+ /** Top header height — Metronic: 70px */
307
+ readonly headerHeight: 70;
308
+ /** Maximum content area width */
309
+ readonly contentMaxWidth: 1440;
310
+ };
311
+ /**
312
+ * Combined semantic token object.
313
+ *
314
+ * @deprecated Prefer the named exports (`semanticColors`, `semanticSpacing`,
315
+ * etc.) for better tree-shaking and clearer imports. This combined object
316
+ * is preserved for backward compatibility only.
317
+ */
318
+ declare const semanticTokens: {
319
+ readonly colors: {
320
+ /** Primary brand action color */
321
+ readonly primary: "#1B84FF";
322
+ /** Primary hover state */
323
+ readonly primaryHover: "#1270DC";
324
+ /** Primary active/pressed state */
325
+ readonly primaryActive: "#0A5CB8";
326
+ /** Primary tinted background (selected rows, badges) */
327
+ readonly primaryBg: "#EFF5FF";
328
+ /** Secondary brand color */
329
+ readonly secondary: "#6172f3";
330
+ /** Secondary hover state */
331
+ readonly secondaryHover: "#444ce7";
332
+ /** Positive outcome (approvals, passing checks) */
333
+ readonly success: "#17C653";
334
+ /** Caution state (pending review, warnings) */
335
+ readonly warning: "#F6B100";
336
+ /** Destructive/failure state */
337
+ readonly error: "#F8285A";
338
+ /** Informational state */
339
+ readonly info: "#7239EA";
340
+ /** Financial gain */
341
+ readonly profit: "#17C653";
342
+ /** Financial loss */
343
+ readonly loss: "#F8285A";
344
+ /** Compliance approved */
345
+ readonly approved: "#12A344";
346
+ /** Compliance pending */
347
+ readonly pending: "#D09200";
348
+ /** Compliance rejected */
349
+ readonly rejected: "#D4194A";
350
+ /** Security verified */
351
+ readonly secure: "#12A344";
352
+ /** Security compromised */
353
+ readonly insecure: "#D4194A";
354
+ /** Primary body text */
355
+ readonly textPrimary: "#071437";
356
+ /** Secondary/supporting text */
357
+ readonly textSecondary: "#5E6880";
358
+ /** Tertiary/label text */
359
+ readonly textTertiary: "#78829D";
360
+ /** Muted/placeholder text */
361
+ readonly textMuted: "#99A1B7";
362
+ /** Text on dark backgrounds */
363
+ readonly textInverse: "#F9F9F9";
364
+ /** Page-level background */
365
+ readonly bgPage: "#F9F9F9";
366
+ /** Card/surface background */
367
+ readonly bgSurface: "#ffffff";
368
+ /** Surface hover state */
369
+ readonly bgSurfaceHover: "#F1F1F4";
370
+ /** Tertiary surface (nested cards, wells) */
371
+ readonly bgSurfaceTertiary: "#DBDFE9";
372
+ /** Inverse background (dark sections) */
373
+ readonly bgInverse: "#071437";
374
+ /** Sidebar background */
375
+ readonly bgSidebar: "#ffffff";
376
+ /** Header background */
377
+ readonly bgHeader: "#ffffff";
378
+ /** Default border */
379
+ readonly border: "#DBDFE9";
380
+ /** Light/subtle border */
381
+ readonly borderLight: "#F1F1F4";
382
+ /** Emphasized border */
383
+ readonly borderSecondary: "#C4CADA";
384
+ /** Focus ring border */
385
+ readonly borderFocus: "#1B84FF";
386
+ /** Default link color */
387
+ readonly link: "#1270DC";
388
+ /** Link hover state */
389
+ readonly linkHover: "#0A5CB8";
390
+ };
391
+ readonly spacing: {
392
+ /** Horizontal page gutter */
393
+ readonly pageGutter: 24;
394
+ /** Internal card padding */
395
+ readonly cardPadding: 16;
396
+ /** Gap between page sections */
397
+ readonly sectionGap: 24;
398
+ /** Gap between sibling components */
399
+ readonly componentGap: 12;
400
+ /** Inline element gap (icon + label) */
401
+ readonly inlineGap: 8;
402
+ /** Per-component spacing presets */
403
+ readonly component: {
404
+ readonly button: {
405
+ readonly paddingX: 16;
406
+ readonly paddingY: 8;
407
+ readonly gap: 8;
408
+ };
409
+ readonly input: {
410
+ readonly paddingX: 12;
411
+ readonly paddingY: 8;
412
+ };
413
+ readonly card: {
414
+ readonly padding: 24;
415
+ readonly gap: 16;
416
+ };
417
+ readonly form: {
418
+ readonly fieldGap: 16;
419
+ readonly sectionGap: 32;
420
+ readonly labelGap: 8;
421
+ };
422
+ readonly modal: {
423
+ readonly padding: 24;
424
+ readonly gap: 16;
425
+ };
426
+ readonly table: {
427
+ readonly cellPadding: 16;
428
+ readonly headerPadding: 16;
429
+ };
430
+ };
431
+ /** Layout-level spacing presets */
432
+ readonly layout: {
433
+ readonly container: {
434
+ readonly paddingX: 16;
435
+ readonly paddingY: 24;
436
+ };
437
+ readonly section: {
438
+ readonly marginY: 48;
439
+ readonly gap: 32;
440
+ };
441
+ readonly page: {
442
+ readonly marginY: 64;
443
+ readonly paddingX: 24;
444
+ };
445
+ };
446
+ };
447
+ readonly typography: {
448
+ /** Default sans-serif font stack */
449
+ readonly fontFamily: "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif";
450
+ /** Monospace font stack for code */
451
+ readonly fontFamilyCode: "JetBrains Mono, Fira Code, Consolas, monospace";
452
+ /** Serif font stack for editorial content */
453
+ readonly fontFamilySerif: "Georgia, 'Times New Roman', serif";
454
+ /** Display type scale — Untitled UI v7.0 exact values */
455
+ readonly display: {
456
+ readonly '2xl': {
457
+ readonly fontSize: 72;
458
+ readonly fontWeight: 600;
459
+ readonly lineHeight: "90px";
460
+ readonly letterSpacing: "-0.02em";
461
+ };
462
+ readonly xl: {
463
+ readonly fontSize: 60;
464
+ readonly fontWeight: 600;
465
+ readonly lineHeight: "72px";
466
+ readonly letterSpacing: "-0.02em";
467
+ };
468
+ readonly lg: {
469
+ readonly fontSize: 48;
470
+ readonly fontWeight: 600;
471
+ readonly lineHeight: "60px";
472
+ readonly letterSpacing: "-0.02em";
473
+ };
474
+ readonly md: {
475
+ readonly fontSize: 36;
476
+ readonly fontWeight: 600;
477
+ readonly lineHeight: "44px";
478
+ readonly letterSpacing: "-0.02em";
479
+ };
480
+ readonly sm: {
481
+ readonly fontSize: 30;
482
+ readonly fontWeight: 600;
483
+ readonly lineHeight: "38px";
484
+ readonly letterSpacing: "0em";
485
+ };
486
+ readonly xs: {
487
+ readonly fontSize: 24;
488
+ readonly fontWeight: 600;
489
+ readonly lineHeight: "32px";
490
+ readonly letterSpacing: "0em";
491
+ };
492
+ };
493
+ /** Heading type scale — page/section/card headings */
494
+ readonly heading: {
495
+ readonly h1: {
496
+ readonly fontSize: 30;
497
+ readonly fontWeight: 700;
498
+ readonly lineHeight: 1.2;
499
+ };
500
+ readonly h2: {
501
+ readonly fontSize: 24;
502
+ readonly fontWeight: 600;
503
+ readonly lineHeight: 1.2;
504
+ };
505
+ readonly h3: {
506
+ readonly fontSize: 20;
507
+ readonly fontWeight: 600;
508
+ readonly lineHeight: 1.5;
509
+ };
510
+ readonly h4: {
511
+ readonly fontSize: 18;
512
+ readonly fontWeight: 500;
513
+ readonly lineHeight: 1.5;
514
+ };
515
+ };
516
+ /** Body type scale — Untitled UI v7.0 exact values */
517
+ readonly body: {
518
+ readonly lg: {
519
+ readonly fontSize: 18;
520
+ readonly fontWeight: 400;
521
+ readonly lineHeight: "28px";
522
+ };
523
+ readonly md: {
524
+ readonly fontSize: 16;
525
+ readonly fontWeight: 400;
526
+ readonly lineHeight: "24px";
527
+ };
528
+ readonly sm: {
529
+ readonly fontSize: 14;
530
+ readonly fontWeight: 400;
531
+ readonly lineHeight: "20px";
532
+ };
533
+ };
534
+ /** Caption — footnotes, timestamps, fine print */
535
+ readonly caption: {
536
+ readonly fontSize: 12;
537
+ readonly fontWeight: 400;
538
+ readonly lineHeight: "18px";
539
+ };
540
+ /** Button label type scale */
541
+ readonly button: {
542
+ readonly lg: {
543
+ readonly fontSize: 18;
544
+ readonly fontWeight: 500;
545
+ readonly lineHeight: 1.5;
546
+ };
547
+ readonly md: {
548
+ readonly fontSize: 16;
549
+ readonly fontWeight: 500;
550
+ readonly lineHeight: 1.5;
551
+ };
552
+ readonly sm: {
553
+ readonly fontSize: 14;
554
+ readonly fontWeight: 500;
555
+ readonly lineHeight: 1.5;
556
+ };
557
+ };
558
+ };
559
+ readonly radii: {
560
+ /** Default component radius — 8px (Untitled UI md) */
561
+ readonly component: 8;
562
+ /** Card/panel radius — 12px (Untitled UI xl) */
563
+ readonly card: 12;
564
+ /** Button radius — 8px (Untitled UI md) */
565
+ readonly button: 8;
566
+ /** Input/select radius — 8px (Untitled UI md) */
567
+ readonly input: 8;
568
+ /** Tag/badge radius — 4px (Untitled UI xs) */
569
+ readonly tag: 4;
570
+ /** Avatar — fully round */
571
+ readonly avatar: 9999;
572
+ };
573
+ readonly shadows: {
574
+ /** Card/panel elevation */
575
+ readonly card: "0 1px 2px 0 rgb(0 0 0 / 0.05)";
576
+ /** Dropdown/popover elevation */
577
+ readonly dropdown: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)";
578
+ /** Modal/dialog elevation */
579
+ readonly modal: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)";
580
+ };
581
+ readonly layout: {
582
+ /** Sidebar expanded width — Metronic: 280px */
583
+ readonly sidebarWidth: 280;
584
+ /** Sidebar collapsed width */
585
+ readonly sidebarCollapsedWidth: 72;
586
+ /** Top header height — Metronic: 70px */
587
+ readonly headerHeight: 70;
588
+ /** Maximum content area width */
589
+ readonly contentMaxWidth: 1440;
590
+ };
591
+ };
592
+ type SemanticColors = typeof semanticColors;
593
+ type SemanticSpacing = typeof semanticSpacing;
594
+ type SemanticTypography = typeof semanticTypography;
595
+ type SemanticRadii = typeof semanticRadii;
596
+ type SemanticShadows = typeof semanticShadows;
597
+ type SemanticLayout = typeof semanticLayout;
598
+ type SemanticTokens = typeof semanticTokens;
599
+ /** Union of all semantic color keys. */
600
+ type SemanticColorKey = keyof typeof semanticColors;
601
+ /** Union of top-level semantic spacing keys. */
602
+ type SemanticSpacingKey = keyof typeof semanticSpacing;
603
+
604
+ /**
605
+ * @module platforms/fifty-four
606
+ *
607
+ * Platform theme overrides for GTCX fifty-four.
608
+ *
609
+ * Transforms the Metronic dark-mode defaults into fifty-four's cinematic
610
+ * dark aesthetic. Canonical spec: `docs/specs/_project/theme-spec.md`
611
+ *
612
+ * Aesthetic targets: Linear, Cursor, Mercury, Stripe, Notion AI, Attio,
613
+ * Webflow, Sana Labs. Metronic is the component chassis — not the
614
+ * aesthetic target.
615
+ *
616
+ * Usage:
617
+ * ```ts
618
+ * import { createAntdTheme } from '@gtcx/theme';
619
+ * import { fiftyFourPlatformTokens } from '@gtcx/tokens/platforms/fifty-four';
620
+ *
621
+ * const theme = createAntdTheme({
622
+ * mode: 'dark',
623
+ * tokensOverride: fiftyFourPlatformTokens,
624
+ * });
625
+ * ```
626
+ *
627
+ * For Tailwind / CSS integration, import the generated CSS file instead:
628
+ * ```css
629
+ * @import '@gtcx/tokens/css/platforms/fifty-four-dark.css';
630
+ * ```
631
+ */
632
+
633
+ /** Color override — same keys as SemanticColors but accepts any string value. */
634
+ type ColorOverrides = {
635
+ [K in keyof SemanticColors]: string;
636
+ };
637
+ /** Radii override — same keys as SemanticRadii but accepts any number value. */
638
+ type RadiiOverrides = {
639
+ [K in keyof SemanticRadii]: number;
640
+ };
641
+ /** Shadow override — same keys as SemanticShadows but accepts any string value. */
642
+ type ShadowOverrides = {
643
+ [K in keyof SemanticShadows]: string;
644
+ };
645
+ /**
646
+ * fifty-four color palette.
647
+ *
648
+ * Elevation stack (§1.1): Void → Surface → Elevated → Raised → Overlay → Spotlight
649
+ * Min 8 lightness points between adjacent levels.
650
+ *
651
+ * Text hierarchy (§1.2): WCAG AA enforced. text-tertiary is lowest for
652
+ * informational text. text-muted for placeholders/disabled only.
653
+ *
654
+ * Border system (§1.4): Three rgba tiers only. No hex borders.
655
+ */
656
+ declare const fiftyFourColors: ColorOverrides;
657
+ /**
658
+ * Three radius stops (§3.1).
659
+ *
660
+ * - sm (6px): buttons, inputs, badges, chips
661
+ * - md (10px): cards, panels, list items, dropdown items
662
+ * - lg (16px): modals, drawers, command palette, hero containers
663
+ *
664
+ * `rounded-full` allowed only for: avatars, status dots, toggles.
665
+ */
666
+ declare const fiftyFourRadii: RadiiOverrides;
667
+ /**
668
+ * Glass-edge shadow system (§3.2).
669
+ *
670
+ * Every shadow includes a 1px white-opacity inset ring — the "glass edge"
671
+ * that separates surfaces on dark backgrounds. Technique used by Linear,
672
+ * Cursor, and Mercury.
673
+ */
674
+ declare const fiftyFourShadows: ShadowOverrides;
675
+ /**
676
+ * Complete fifty-four platform token overrides.
677
+ *
678
+ * Pass this object to `createAntdTheme({ tokensOverride })` or use it
679
+ * to generate CSS custom properties via `generateCSSVariables()`.
680
+ */
681
+ declare const fiftyFourPlatformTokens: {
682
+ readonly colors: ColorOverrides;
683
+ readonly radii: RadiiOverrides;
684
+ readonly shadows: ShadowOverrides;
685
+ };
686
+ type FiftyFourPlatformTokens = typeof fiftyFourPlatformTokens;
687
+
688
+ export { type FiftyFourPlatformTokens as F, type SemanticColorKey as S, type SemanticColors as a, type SemanticLayout as b, type SemanticRadii as c, type SemanticShadows as d, type SemanticSpacing as e, type SemanticSpacingKey as f, type SemanticTokens as g, type SemanticTypography as h, fiftyFourColors as i, fiftyFourPlatformTokens as j, fiftyFourRadii as k, fiftyFourShadows as l, semanticLayout as m, semanticRadii as n, semanticShadows as o, semanticSpacing as p, semanticTokens as q, semanticTypography as r, semanticColors as s };