@tenerife.music/ui 1.0.13 → 1.0.16
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.
- package/README.md +113 -419
- package/dist/{colors-CVA7_16U.d.cts → colors-BrFmCQv-.d.cts} +6 -1
- package/dist/{colors-CVA7_16U.d.ts → colors-BrFmCQv-.d.ts} +6 -1
- package/dist/{index-BgXvioll.d.cts → index-DPWxsWs3.d.cts} +861 -228
- package/dist/{index-Bv4wWj9I.d.ts → index-DPWxsWs3.d.ts} +861 -228
- package/dist/index.cjs +2196 -1132
- package/dist/index.d.cts +451 -127
- package/dist/index.d.ts +451 -127
- package/dist/index.mjs +2196 -1133
- package/dist/preset.cjs +29 -57
- package/dist/preset.mjs +29 -57
- package/dist/styles.css +3637 -57
- package/dist/theme/index.cjs +1305 -127
- package/dist/theme/index.d.cts +2 -2
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.mjs +1304 -126
- package/dist/tokens/index.cjs +628 -442
- package/dist/tokens/index.d.cts +89 -2
- package/dist/tokens/index.d.ts +89 -2
- package/dist/tokens/index.mjs +628 -443
- package/package.json +57 -53
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Slot } from '@radix-ui/react-slot';
|
|
2
|
-
import { cva } from 'class-variance-authority';
|
|
3
2
|
import * as React49 from 'react';
|
|
4
3
|
import { useState, useRef, useEffect, useLayoutEffect } from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -22,13 +22,18 @@ var primaryColors = {
|
|
|
22
22
|
100: "210 40% 96%",
|
|
23
23
|
200: "217 32.6% 17.5%",
|
|
24
24
|
300: "216 28% 26%",
|
|
25
|
-
400: "215 25%
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
400: "215 25% 30%",
|
|
26
|
+
// Adjusted for better progression
|
|
27
|
+
500: "215 20% 38%",
|
|
28
|
+
// Adjusted for better progression
|
|
29
|
+
600: "215 16% 45%",
|
|
30
|
+
// Adjusted for better progression
|
|
31
|
+
700: "216 12% 35%",
|
|
32
|
+
// Rebalanced for semantic strength (L* ~35)
|
|
33
|
+
800: "217 10% 28%",
|
|
34
|
+
// Adjusted for proper progression
|
|
35
|
+
900: "222 47.4% 18%",
|
|
36
|
+
// Adjusted for better progression
|
|
32
37
|
950: "222 84% 4.9%"
|
|
33
38
|
// Darkest blue
|
|
34
39
|
};
|
|
@@ -38,12 +43,15 @@ var accentColors = {
|
|
|
38
43
|
200: "280 60% 85%",
|
|
39
44
|
300: "280 55% 75%",
|
|
40
45
|
400: "280 50% 65%",
|
|
41
|
-
500: "280
|
|
42
|
-
//
|
|
43
|
-
600: "259 65%
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
500: "280 65% 72%",
|
|
47
|
+
// Adjusted for WCAG AA contrast (4.5:1) with dark text in night mode
|
|
48
|
+
600: "259 65% 59%",
|
|
49
|
+
// Default accent - lightened for better contrast vs secondary (L* ~59, was 52, 15 delta from secondary-600)
|
|
50
|
+
700: "259 60% 44%",
|
|
51
|
+
// Active state - rebalanced for semantic strength (L* ~44, 12 delta from secondary-700)
|
|
52
|
+
800: "259 55% 38%",
|
|
53
|
+
// Adjusted for proper progression
|
|
54
|
+
900: "259 50% 32%",
|
|
47
55
|
950: "259 45% 30%"
|
|
48
56
|
};
|
|
49
57
|
var secondaryColors = {
|
|
@@ -52,12 +60,15 @@ var secondaryColors = {
|
|
|
52
60
|
200: "173 100% 85%",
|
|
53
61
|
300: "173 100% 70%",
|
|
54
62
|
400: "173 100% 55%",
|
|
55
|
-
500: "173 100%
|
|
56
|
-
//
|
|
57
|
-
600: "173 100%
|
|
58
|
-
|
|
63
|
+
500: "173 100% 45%",
|
|
64
|
+
// Adjusted for better scale progression
|
|
65
|
+
600: "173 100% 44%",
|
|
66
|
+
// Default secondary - rebalanced for better contrast vs primary (L* ~44, was 38)
|
|
67
|
+
700: "173 95% 32%",
|
|
68
|
+
// Active state - rebalanced for semantic strength (L* ~32)
|
|
59
69
|
800: "173 90% 22%",
|
|
60
|
-
|
|
70
|
+
// Primary variant - darkened for dominance (L* ~22, was 26)
|
|
71
|
+
900: "173 85% 20%",
|
|
61
72
|
950: "173 80% 12%"
|
|
62
73
|
};
|
|
63
74
|
var surfaceColors = {
|
|
@@ -150,13 +161,13 @@ var chartColors = {
|
|
|
150
161
|
var textColors = {
|
|
151
162
|
day: {
|
|
152
163
|
primary: "0 0% 9%",
|
|
153
|
-
// Almost black
|
|
164
|
+
// Almost black (neutral-900 equivalent)
|
|
154
165
|
secondary: "0 0% 45%",
|
|
155
166
|
// Medium gray
|
|
156
167
|
tertiary: "0 0% 65%",
|
|
157
168
|
// Light gray
|
|
158
|
-
muted: "0 0%
|
|
159
|
-
// Muted gray
|
|
169
|
+
muted: "0 0% 42%",
|
|
170
|
+
// Muted gray - adjusted for WCAG AA contrast (4.5:1) on surface.elevated2
|
|
160
171
|
inverse: "0 0% 100%"
|
|
161
172
|
// White (for dark backgrounds)
|
|
162
173
|
},
|
|
@@ -468,6 +479,139 @@ var ALERT_TOKENS = {
|
|
|
468
479
|
}
|
|
469
480
|
};
|
|
470
481
|
|
|
482
|
+
// src/tokens/components/motion.ts
|
|
483
|
+
var MOTION_TOKENS = {
|
|
484
|
+
/**
|
|
485
|
+
* Transition property tokens
|
|
486
|
+
* Maps to Tailwind transition utilities
|
|
487
|
+
*/
|
|
488
|
+
transition: {
|
|
489
|
+
all: "transition-all",
|
|
490
|
+
// All properties
|
|
491
|
+
colors: "transition-colors",
|
|
492
|
+
// Color properties only
|
|
493
|
+
opacity: "transition-opacity",
|
|
494
|
+
// Opacity only
|
|
495
|
+
transform: "transition-transform",
|
|
496
|
+
// Transform only
|
|
497
|
+
shadow: "transition-shadow",
|
|
498
|
+
// Box shadow only
|
|
499
|
+
none: "transition-none"
|
|
500
|
+
// No transition
|
|
501
|
+
},
|
|
502
|
+
/**
|
|
503
|
+
* Duration tokens
|
|
504
|
+
* Maps to foundation motion duration tokens via Tailwind
|
|
505
|
+
*/
|
|
506
|
+
duration: {
|
|
507
|
+
instant: "duration-0",
|
|
508
|
+
// 0ms
|
|
509
|
+
fast: "duration-fast",
|
|
510
|
+
// 150ms - maps to motion.durations.fast
|
|
511
|
+
normal: "duration-normal",
|
|
512
|
+
// 300ms - maps to motion.durations.normal
|
|
513
|
+
slow: "duration-slow",
|
|
514
|
+
// 500ms - maps to motion.durations.slow
|
|
515
|
+
slower: "duration-slower",
|
|
516
|
+
// 700ms - maps to motion.durations.slower
|
|
517
|
+
slowest: "duration-slowest",
|
|
518
|
+
// 1000ms - maps to motion.durations.slowest
|
|
519
|
+
// Granular durations
|
|
520
|
+
"75": "duration-75",
|
|
521
|
+
// 75ms
|
|
522
|
+
"100": "duration-100",
|
|
523
|
+
// 100ms
|
|
524
|
+
"200": "duration-200",
|
|
525
|
+
// 200ms
|
|
526
|
+
"250": "duration-250",
|
|
527
|
+
// 250ms
|
|
528
|
+
"300": "duration-300",
|
|
529
|
+
// 300ms
|
|
530
|
+
"400": "duration-400",
|
|
531
|
+
// 400ms
|
|
532
|
+
"500": "duration-500",
|
|
533
|
+
// 500ms
|
|
534
|
+
"600": "duration-600",
|
|
535
|
+
// 600ms
|
|
536
|
+
"700": "duration-700",
|
|
537
|
+
// 700ms
|
|
538
|
+
"800": "duration-800",
|
|
539
|
+
// 800ms
|
|
540
|
+
"1000": "duration-1000"
|
|
541
|
+
// 1000ms
|
|
542
|
+
},
|
|
543
|
+
/**
|
|
544
|
+
* Easing tokens
|
|
545
|
+
* Maps to foundation motion easing tokens via Tailwind
|
|
546
|
+
*/
|
|
547
|
+
easing: {
|
|
548
|
+
linear: "ease-linear",
|
|
549
|
+
// Linear easing
|
|
550
|
+
in: "ease-in",
|
|
551
|
+
// Ease in
|
|
552
|
+
out: "ease-out",
|
|
553
|
+
// Ease out (recommended for most UI)
|
|
554
|
+
"in-out": "ease-in-out",
|
|
555
|
+
// Ease in-out
|
|
556
|
+
bounce: "ease-bounce",
|
|
557
|
+
// Bounce easing
|
|
558
|
+
elastic: "ease-elastic"
|
|
559
|
+
// Elastic easing
|
|
560
|
+
},
|
|
561
|
+
/**
|
|
562
|
+
* Pre-configured transition tokens
|
|
563
|
+
* Combines duration and easing for common use cases
|
|
564
|
+
*/
|
|
565
|
+
transitionPreset: {
|
|
566
|
+
fast: "transition-all duration-fast ease-out",
|
|
567
|
+
// Fast transition
|
|
568
|
+
normal: "transition-all duration-normal ease-in-out",
|
|
569
|
+
// Normal transition (default)
|
|
570
|
+
slow: "transition-all duration-slow ease-in-out",
|
|
571
|
+
// Slow transition
|
|
572
|
+
colors: "transition-colors duration-normal ease-out",
|
|
573
|
+
// Color transitions (common)
|
|
574
|
+
transform: "transition-transform duration-normal ease-out",
|
|
575
|
+
// Transform transitions
|
|
576
|
+
opacity: "transition-opacity duration-fast ease-out"
|
|
577
|
+
// Opacity transitions
|
|
578
|
+
},
|
|
579
|
+
/**
|
|
580
|
+
* Animation tokens
|
|
581
|
+
* Maps to foundation motion animation tokens via Tailwind
|
|
582
|
+
*/
|
|
583
|
+
animation: {
|
|
584
|
+
none: "animate-none",
|
|
585
|
+
// No animation
|
|
586
|
+
spin: "animate-spin",
|
|
587
|
+
// Spin animation
|
|
588
|
+
pulse: "animate-pulse",
|
|
589
|
+
// Pulse animation
|
|
590
|
+
bounce: "animate-bounce",
|
|
591
|
+
// Bounce animation
|
|
592
|
+
ping: "animate-ping",
|
|
593
|
+
// Ping animation
|
|
594
|
+
shake: "animate-shake",
|
|
595
|
+
// Shake animation
|
|
596
|
+
fadeIn: "animate-fadeIn",
|
|
597
|
+
// Fade in
|
|
598
|
+
fadeOut: "animate-fadeOut",
|
|
599
|
+
// Fade out
|
|
600
|
+
slideInUp: "animate-slideInUp",
|
|
601
|
+
// Slide in from bottom
|
|
602
|
+
slideInDown: "animate-slideInDown",
|
|
603
|
+
// Slide in from top
|
|
604
|
+
slideInLeft: "animate-slideInLeft",
|
|
605
|
+
// Slide in from right
|
|
606
|
+
slideInRight: "animate-slideInRight",
|
|
607
|
+
// Slide in from left
|
|
608
|
+
scaleIn: "animate-scaleIn",
|
|
609
|
+
// Scale in
|
|
610
|
+
scaleOut: "animate-scaleOut"
|
|
611
|
+
// Scale out
|
|
612
|
+
}
|
|
613
|
+
};
|
|
614
|
+
|
|
471
615
|
// src/tokens/components/button.ts
|
|
472
616
|
var BUTTON_TOKENS = {
|
|
473
617
|
/**
|
|
@@ -500,25 +644,48 @@ var BUTTON_TOKENS = {
|
|
|
500
644
|
vertical: {
|
|
501
645
|
sm: "py-xs",
|
|
502
646
|
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
503
|
-
md: "py-sm"
|
|
647
|
+
md: "py-sm",
|
|
504
648
|
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
649
|
+
lg: "py-md"
|
|
650
|
+
// 16px (1rem) - maps to semanticSpacing.md - standardized for visual distinction
|
|
505
651
|
}
|
|
506
652
|
},
|
|
507
653
|
/**
|
|
508
|
-
* Gap between icon and text
|
|
654
|
+
* Gap between icon and text by size
|
|
655
|
+
* Scales with button size for visual consistency
|
|
509
656
|
*/
|
|
510
|
-
gap:
|
|
511
|
-
|
|
657
|
+
gap: {
|
|
658
|
+
sm: "gap-xs",
|
|
659
|
+
// 4px (0.25rem) - smaller gap for small buttons
|
|
660
|
+
md: "gap-sm",
|
|
661
|
+
// 8px (0.5rem) - medium gap for medium buttons
|
|
662
|
+
lg: "gap-md"
|
|
663
|
+
// 16px (1rem) - larger gap for large buttons
|
|
664
|
+
},
|
|
512
665
|
/**
|
|
513
666
|
* Border radius for all button sizes
|
|
667
|
+
* Consistent radius across sizes for visual harmony
|
|
668
|
+
*
|
|
669
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
670
|
+
* @rule References componentRadius.button.md (6px / 0.375rem) from Radius Authority
|
|
671
|
+
* @see docs/architecture/RADIUS_AUTHORITY_CONTRACT.md
|
|
514
672
|
*/
|
|
515
673
|
radius: "rounded-md",
|
|
516
|
-
// 6px
|
|
674
|
+
// References componentRadius.button.md (6px / 0.375rem) - Radius Authority compliant
|
|
517
675
|
/**
|
|
518
|
-
* Icon size within buttons
|
|
676
|
+
* Icon size within buttons by button size
|
|
677
|
+
* Scales proportionally with button size for visual balance
|
|
519
678
|
*/
|
|
520
|
-
iconSize:
|
|
521
|
-
|
|
679
|
+
iconSize: {
|
|
680
|
+
sm: "size-3.5",
|
|
681
|
+
// 14px (0.875rem) - smaller icon for small buttons
|
|
682
|
+
md: "size-4",
|
|
683
|
+
// 16px (1rem) - medium icon for medium buttons
|
|
684
|
+
lg: "size-5",
|
|
685
|
+
// 20px (1.25rem) - larger icon for large buttons
|
|
686
|
+
icon: "size-4"
|
|
687
|
+
// 16px (1rem) - medium icon for icon-only buttons
|
|
688
|
+
},
|
|
522
689
|
/**
|
|
523
690
|
* Width tokens
|
|
524
691
|
*/
|
|
@@ -528,15 +695,19 @@ var BUTTON_TOKENS = {
|
|
|
528
695
|
},
|
|
529
696
|
/**
|
|
530
697
|
* Font sizes by button size
|
|
531
|
-
*
|
|
698
|
+
* References foundation typography fontSize tokens from Typography Authority
|
|
699
|
+
*
|
|
700
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
701
|
+
* @rule All fontSize values reference Typography Authority tokens
|
|
702
|
+
* @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
|
|
532
703
|
*/
|
|
533
704
|
fontSize: {
|
|
534
705
|
sm: "text-xs",
|
|
535
|
-
//
|
|
706
|
+
// References fontSize.xs[0] from Typography Authority (~12px)
|
|
536
707
|
md: "text-sm",
|
|
537
|
-
//
|
|
538
|
-
lg: "text-
|
|
539
|
-
//
|
|
708
|
+
// References fontSize.sm[0] from Typography Authority (~14px)
|
|
709
|
+
lg: "text-base"
|
|
710
|
+
// References fontSize.base[0] from Typography Authority (~16px)
|
|
540
711
|
},
|
|
541
712
|
/**
|
|
542
713
|
* Shadow tokens by variant
|
|
@@ -551,50 +722,137 @@ var BUTTON_TOKENS = {
|
|
|
551
722
|
/**
|
|
552
723
|
* Color tokens for button variants
|
|
553
724
|
* Uses semantic color tokens that map to CSS variables
|
|
725
|
+
*
|
|
726
|
+
* State tokens (hover, active, disabled) use CSS variables from State Matrix.
|
|
727
|
+
* All states are injected via updateStateMatrixFromTokens() and consumed via arbitrary values.
|
|
728
|
+
* States react to Color Authority changes automatically through State Matrix.
|
|
729
|
+
*
|
|
730
|
+
* Interaction Authority Rules:
|
|
731
|
+
* - Hover (Priority 4): hover: prefix - ONLY when !disabled && !loading && pointer-events:auto
|
|
732
|
+
* - Active (Priority 3): active: prefix - ONLY when !disabled && !loading && mousedown
|
|
733
|
+
* - Focus (Priority 5): focus-visible: prefix - ONLY when !disabled && keyboard navigation
|
|
734
|
+
* - Disabled (Priority 1): disabled: prefix - Blocks ALL interactions
|
|
735
|
+
* - Loading (Priority 2): loading: prefix - Blocks hover/active (when implemented)
|
|
736
|
+
* - Base (Priority 6): No prefix - Default state, pointer-events: auto
|
|
737
|
+
*
|
|
738
|
+
* @enforcement TUNG_STATE_AUTHORITY_FOUNDATION_LOCK
|
|
739
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
740
|
+
* @rule States use CSS variables, not Tailwind variants
|
|
741
|
+
* @rule All state variables follow pattern: --{component}-{variant}-{state}-{property}
|
|
742
|
+
* @rule Visual states (colors) are SEPARATE from interaction states (pointer-events)
|
|
743
|
+
* @rule Hover MUST work with real mouse cursor, NOT just DevTools force state
|
|
744
|
+
* @rule Active MUST activate only on mousedown, NOT on hover
|
|
745
|
+
* @rule Focus MUST activate only on keyboard navigation, NOT on mouse click
|
|
746
|
+
*
|
|
747
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
554
748
|
*/
|
|
555
749
|
variant: {
|
|
556
750
|
primary: {
|
|
557
|
-
background: "bg-primary",
|
|
558
|
-
// Primary background
|
|
751
|
+
background: "bg-[hsl(var(--button-primary-base-bg))]",
|
|
752
|
+
// Primary base background - CSS variable from State Matrix
|
|
559
753
|
text: "text-primary-foreground",
|
|
560
754
|
// Primary text using CSS var
|
|
561
|
-
hover: "hover:bg-primary
|
|
562
|
-
// Primary hover
|
|
755
|
+
hover: "hover:bg-[hsl(var(--button-primary-hover-bg))]",
|
|
756
|
+
// Primary hover - CSS variable from State Matrix (Priority 4: blocked by disabled/loading)
|
|
757
|
+
active: "active:bg-[hsl(var(--button-primary-active-bg))]",
|
|
758
|
+
// Primary active - CSS variable from State Matrix (Priority 3: blocked by disabled/loading, priority over hover)
|
|
759
|
+
focus: "focus-visible:bg-[hsl(var(--button-primary-focus-bg))]",
|
|
760
|
+
// Primary focus - CSS variable from State Matrix (Priority 5: keyboard navigation only)
|
|
761
|
+
disabled: {
|
|
762
|
+
background: "disabled:bg-[hsl(var(--button-primary-disabled-bg))]",
|
|
763
|
+
// Disabled background - CSS variable from State Matrix (Priority 1: blocks all)
|
|
764
|
+
text: "disabled:text-[hsl(var(--button-primary-disabled-text))]"
|
|
765
|
+
// Disabled text - CSS variable from State Matrix
|
|
766
|
+
},
|
|
767
|
+
loading: "bg-[hsl(var(--button-primary-loading-bg))]"
|
|
768
|
+
// Primary loading - CSS variable from State Matrix (Priority 2: blocks hover/active, used with aria-busy/data-loading when implemented)
|
|
563
769
|
},
|
|
564
770
|
secondary: {
|
|
565
771
|
background: "bg-secondary",
|
|
566
772
|
// Secondary background using CSS var
|
|
567
773
|
text: "text-secondary-foreground",
|
|
568
774
|
// Secondary text using CSS var
|
|
569
|
-
hover: "hover:bg-secondary
|
|
570
|
-
// Secondary hover
|
|
775
|
+
hover: "hover:bg-[hsl(var(--button-secondary-hover-bg))]",
|
|
776
|
+
// Secondary hover - CSS variable from State Matrix
|
|
777
|
+
active: "active:bg-[hsl(var(--button-secondary-active-bg))]",
|
|
778
|
+
// Secondary active - CSS variable from State Matrix
|
|
779
|
+
disabled: {
|
|
780
|
+
background: "disabled:bg-[hsl(var(--button-secondary-disabled-bg))]",
|
|
781
|
+
// Disabled background - CSS variable from State Matrix
|
|
782
|
+
text: "disabled:text-[hsl(var(--button-secondary-disabled-text))]"
|
|
783
|
+
// Disabled text - CSS variable from State Matrix
|
|
784
|
+
}
|
|
571
785
|
},
|
|
572
786
|
accent: {
|
|
573
787
|
background: "bg-accent",
|
|
574
788
|
// Accent background using CSS var
|
|
575
789
|
text: "text-accent-foreground",
|
|
576
790
|
// Accent text using CSS var
|
|
577
|
-
hover: "hover:bg-accent
|
|
578
|
-
// Accent hover
|
|
791
|
+
hover: "hover:bg-[hsl(var(--button-accent-hover-bg))]",
|
|
792
|
+
// Accent hover - CSS variable from State Matrix
|
|
793
|
+
active: "active:bg-[hsl(var(--button-accent-active-bg))]",
|
|
794
|
+
// Accent active - CSS variable from State Matrix
|
|
795
|
+
disabled: {
|
|
796
|
+
background: "disabled:bg-[hsl(var(--button-accent-disabled-bg))]",
|
|
797
|
+
// Disabled background - CSS variable from State Matrix
|
|
798
|
+
text: "disabled:text-[hsl(var(--button-accent-disabled-text))]"
|
|
799
|
+
// Disabled text - CSS variable from State Matrix
|
|
800
|
+
}
|
|
579
801
|
},
|
|
580
802
|
outline: {
|
|
581
803
|
border: "border border-input",
|
|
582
804
|
// Input border using CSS var
|
|
583
805
|
background: "bg-background",
|
|
584
806
|
// Background using CSS var
|
|
807
|
+
text: "text-foreground",
|
|
808
|
+
// Foreground text using CSS var
|
|
585
809
|
hover: {
|
|
586
|
-
background: "hover:bg-
|
|
587
|
-
//
|
|
588
|
-
text: "hover:text-
|
|
589
|
-
//
|
|
810
|
+
background: "hover:bg-[hsl(var(--button-outline-hover-bg))]",
|
|
811
|
+
// Outline hover background - CSS variable from State Matrix
|
|
812
|
+
text: "hover:text-[hsl(var(--button-outline-hover-text))]",
|
|
813
|
+
// Outline hover text - CSS variable from State Matrix
|
|
814
|
+
border: "hover:border-[hsl(var(--button-outline-hover-border))]"
|
|
815
|
+
// Outline hover border - CSS variable from State Matrix
|
|
816
|
+
},
|
|
817
|
+
active: {
|
|
818
|
+
background: "active:bg-[hsl(var(--button-outline-active-bg))]",
|
|
819
|
+
// Outline active background - CSS variable from State Matrix
|
|
820
|
+
text: "active:text-[hsl(var(--button-outline-active-text))]",
|
|
821
|
+
// Outline active text - CSS variable from State Matrix
|
|
822
|
+
border: "active:border-[hsl(var(--button-outline-active-border))]"
|
|
823
|
+
// Outline active border - CSS variable from State Matrix
|
|
824
|
+
},
|
|
825
|
+
disabled: {
|
|
826
|
+
background: "disabled:bg-[hsl(var(--button-outline-disabled-bg))]",
|
|
827
|
+
// Disabled background - CSS variable from State Matrix
|
|
828
|
+
text: "disabled:text-[hsl(var(--button-outline-disabled-text))]",
|
|
829
|
+
// Disabled text - CSS variable from State Matrix
|
|
830
|
+
border: "disabled:border-[hsl(var(--button-outline-disabled-border))]"
|
|
831
|
+
// Disabled border - CSS variable from State Matrix
|
|
590
832
|
}
|
|
591
833
|
},
|
|
592
834
|
ghost: {
|
|
835
|
+
background: "bg-transparent",
|
|
836
|
+
// Transparent background
|
|
837
|
+
text: "text-foreground",
|
|
838
|
+
// Foreground text using CSS var
|
|
593
839
|
hover: {
|
|
594
|
-
background: "hover:bg-
|
|
595
|
-
//
|
|
596
|
-
text: "hover:text-
|
|
597
|
-
//
|
|
840
|
+
background: "hover:bg-[hsl(var(--button-ghost-hover-bg))]",
|
|
841
|
+
// Ghost hover background - CSS variable from State Matrix
|
|
842
|
+
text: "hover:text-[hsl(var(--button-ghost-hover-text))]"
|
|
843
|
+
// Ghost hover text - CSS variable from State Matrix
|
|
844
|
+
},
|
|
845
|
+
active: {
|
|
846
|
+
background: "active:bg-[hsl(var(--button-ghost-active-bg))]",
|
|
847
|
+
// Ghost active background - CSS variable from State Matrix
|
|
848
|
+
text: "active:text-[hsl(var(--button-ghost-active-text))]"
|
|
849
|
+
// Ghost active text - CSS variable from State Matrix
|
|
850
|
+
},
|
|
851
|
+
disabled: {
|
|
852
|
+
background: "disabled:bg-[hsl(var(--button-ghost-disabled-bg))]",
|
|
853
|
+
// Disabled background - CSS variable from State Matrix
|
|
854
|
+
text: "disabled:text-[hsl(var(--button-ghost-disabled-text))]"
|
|
855
|
+
// Disabled text - CSS variable from State Matrix
|
|
598
856
|
}
|
|
599
857
|
},
|
|
600
858
|
destructive: {
|
|
@@ -602,16 +860,94 @@ var BUTTON_TOKENS = {
|
|
|
602
860
|
// Destructive background using CSS var
|
|
603
861
|
text: "text-destructive-foreground",
|
|
604
862
|
// Destructive text using CSS var
|
|
605
|
-
hover: "hover:bg-destructive
|
|
606
|
-
// Destructive hover
|
|
863
|
+
hover: "hover:bg-[hsl(var(--button-destructive-hover-bg))]",
|
|
864
|
+
// Destructive hover - CSS variable from State Matrix
|
|
865
|
+
active: "active:bg-[hsl(var(--button-destructive-active-bg))]",
|
|
866
|
+
// Destructive active - CSS variable from State Matrix
|
|
867
|
+
disabled: {
|
|
868
|
+
background: "disabled:bg-[hsl(var(--button-destructive-disabled-bg))]",
|
|
869
|
+
// Disabled background - CSS variable from State Matrix
|
|
870
|
+
text: "disabled:text-[hsl(var(--button-destructive-disabled-text))]"
|
|
871
|
+
// Disabled text - CSS variable from State Matrix
|
|
872
|
+
}
|
|
607
873
|
}
|
|
608
874
|
},
|
|
609
875
|
/**
|
|
610
876
|
* Transition tokens
|
|
877
|
+
* References Motion Authority tokens for consistent motion behavior
|
|
878
|
+
*
|
|
879
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
880
|
+
* @rule Uses MOTION_TOKENS.transitionPreset.colors from Motion Authority
|
|
881
|
+
* @rule Motion transitions MUST use canonical motion tokens only
|
|
882
|
+
* @see docs/architecture/MOTION_AUTHORITY_CONTRACT.md
|
|
611
883
|
*/
|
|
612
884
|
transition: {
|
|
613
|
-
colors:
|
|
614
|
-
//
|
|
885
|
+
colors: MOTION_TOKENS.transitionPreset.colors
|
|
886
|
+
// "transition-colors duration-normal ease-out" - Motion Authority compliant
|
|
887
|
+
},
|
|
888
|
+
/**
|
|
889
|
+
* Global state tokens
|
|
890
|
+
* Shared state tokens that apply across all variants
|
|
891
|
+
* Variant-specific states are defined in variant.*.active and variant.*.disabled
|
|
892
|
+
*
|
|
893
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
894
|
+
* @rule All interaction states MUST follow Interaction Authority Contract
|
|
895
|
+
* @rule State priority: disabled > loading > active > hover > focus-visible > base
|
|
896
|
+
* @rule Visual states (colors) are SEPARATE from interaction states (pointer-events, cursor)
|
|
897
|
+
* @rule All states MUST be browser-native (CSS pseudo-classes), NOT JavaScript-managed
|
|
898
|
+
*/
|
|
899
|
+
state: {
|
|
900
|
+
/**
|
|
901
|
+
* Disabled state tokens
|
|
902
|
+
* Global disabled state tokens (variant-specific overrides in variant.*.disabled)
|
|
903
|
+
*
|
|
904
|
+
* Interaction Authority Rules:
|
|
905
|
+
* - Priority: 1 (Highest) - Blocks ALL interactions
|
|
906
|
+
* - MUST block hover, active, and focus states
|
|
907
|
+
* - MUST use disabled: prefix (never in base state)
|
|
908
|
+
* - Base state MUST have pointer-events: auto (default) for hover to work
|
|
909
|
+
*
|
|
910
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
911
|
+
* @enforcement TUNG_BUTTON_INTERACTION_FIX
|
|
912
|
+
* @rule Interaction Authority: pointer-events is NOT a visual token
|
|
913
|
+
* @rule pointer-events-none MUST use disabled: prefix (never in base state)
|
|
914
|
+
* @rule Base state MUST have pointer-events: auto (default) for hover to work
|
|
915
|
+
* @rule These tokens are applied in base but only activate when element is disabled
|
|
916
|
+
* @rule Hover is FORBIDDEN when disabled={true}
|
|
917
|
+
* @rule Active is FORBIDDEN when disabled={true}
|
|
918
|
+
* @rule Focus is FORBIDDEN when disabled={true} (for interactions)
|
|
919
|
+
*
|
|
920
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
921
|
+
*/
|
|
922
|
+
disabled: {
|
|
923
|
+
cursor: "disabled:cursor-not-allowed",
|
|
924
|
+
// Disabled cursor style (only applies when disabled)
|
|
925
|
+
pointerEvents: "disabled:pointer-events-none"
|
|
926
|
+
// Disable pointer events (only applies when disabled)
|
|
927
|
+
},
|
|
928
|
+
/**
|
|
929
|
+
* Focus state tokens
|
|
930
|
+
* Focus ring for keyboard navigation
|
|
931
|
+
*
|
|
932
|
+
* Interaction Authority Rules:
|
|
933
|
+
* - Priority: 5 - Lower than active and hover
|
|
934
|
+
* - MUST activate only on keyboard navigation (focus-visible: prefix)
|
|
935
|
+
* - MUST NOT activate on mouse click (use :focus-visible, not :focus)
|
|
936
|
+
* - MUST be blocked by disabled state
|
|
937
|
+
*
|
|
938
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
939
|
+
* @rule Focus MUST use focus-visible: prefix (keyboard navigation only)
|
|
940
|
+
* @rule Focus MUST be blocked when disabled={true}
|
|
941
|
+
* @rule Focus MUST NOT activate on mouse click
|
|
942
|
+
*
|
|
943
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
944
|
+
*/
|
|
945
|
+
focus: {
|
|
946
|
+
ring: "focus-visible:ring-1 focus-visible:ring-ring",
|
|
947
|
+
// Focus ring using semantic ring color
|
|
948
|
+
outline: "focus-visible:outline-none"
|
|
949
|
+
// Remove default outline (replaced by ring)
|
|
950
|
+
}
|
|
615
951
|
}
|
|
616
952
|
};
|
|
617
953
|
|
|
@@ -699,6 +1035,68 @@ var CARD_TOKENS = {
|
|
|
699
1035
|
}
|
|
700
1036
|
};
|
|
701
1037
|
|
|
1038
|
+
// src/tokens/components/artist.ts
|
|
1039
|
+
var ARTIST_TOKENS = {
|
|
1040
|
+
/**
|
|
1041
|
+
* Image container tokens
|
|
1042
|
+
* Layout classes for image container wrapper
|
|
1043
|
+
*/
|
|
1044
|
+
image: {
|
|
1045
|
+
/**
|
|
1046
|
+
* Container layout tokens
|
|
1047
|
+
* Positioning and sizing for image container
|
|
1048
|
+
*/
|
|
1049
|
+
container: {
|
|
1050
|
+
/**
|
|
1051
|
+
* Base container layout
|
|
1052
|
+
* Relative positioning, full width, overflow hidden
|
|
1053
|
+
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1054
|
+
*/
|
|
1055
|
+
layout: "relative w-full overflow-hidden"
|
|
1056
|
+
},
|
|
1057
|
+
/**
|
|
1058
|
+
* Image sizing tokens
|
|
1059
|
+
* Full width and height for images
|
|
1060
|
+
*/
|
|
1061
|
+
sizing: {
|
|
1062
|
+
/**
|
|
1063
|
+
* Full size image
|
|
1064
|
+
* Uses Tailwind sizing utilities (allowed per architecture)
|
|
1065
|
+
*/
|
|
1066
|
+
full: "h-full w-full"
|
|
1067
|
+
},
|
|
1068
|
+
/**
|
|
1069
|
+
* Placeholder container tokens
|
|
1070
|
+
* Layout for placeholder icon container when no image is provided
|
|
1071
|
+
*/
|
|
1072
|
+
placeholder: {
|
|
1073
|
+
/**
|
|
1074
|
+
* Placeholder container layout
|
|
1075
|
+
* Flex centering for placeholder icon
|
|
1076
|
+
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1077
|
+
*/
|
|
1078
|
+
container: "flex h-full w-full items-center justify-center"
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
/**
|
|
1082
|
+
* Footer border tokens
|
|
1083
|
+
* Border styling for card footer separator
|
|
1084
|
+
*/
|
|
1085
|
+
footer: {
|
|
1086
|
+
/**
|
|
1087
|
+
* Footer border tokens
|
|
1088
|
+
* Top border separator for footer section
|
|
1089
|
+
*/
|
|
1090
|
+
border: {
|
|
1091
|
+
/**
|
|
1092
|
+
* Footer border top
|
|
1093
|
+
* Uses semantic border color token
|
|
1094
|
+
*/
|
|
1095
|
+
top: "border-t border-border"
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
};
|
|
1099
|
+
|
|
702
1100
|
// src/tokens/spacing.ts
|
|
703
1101
|
var spacing = {
|
|
704
1102
|
// Zero spacing
|
|
@@ -962,139 +1360,44 @@ var tailwindSpacingConfig = {
|
|
|
962
1360
|
// src/tokens/components/data.ts
|
|
963
1361
|
var DATA_TOKENS = {
|
|
964
1362
|
/**
|
|
965
|
-
*
|
|
1363
|
+
* Skeleton Component Tokens
|
|
966
1364
|
*/
|
|
967
|
-
|
|
1365
|
+
skeleton: {
|
|
968
1366
|
/**
|
|
969
|
-
*
|
|
1367
|
+
* Skeleton heights by variant
|
|
970
1368
|
* Maps to Tailwind height utilities
|
|
971
1369
|
*/
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
//
|
|
975
|
-
|
|
976
|
-
// 40px (2.5rem) -
|
|
977
|
-
|
|
978
|
-
//
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
*/
|
|
984
|
-
padding: {
|
|
985
|
-
cell: {
|
|
986
|
-
sm: "p-xs",
|
|
987
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
988
|
-
md: "p-sm",
|
|
989
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
990
|
-
lg: "p-md"
|
|
991
|
-
// 16px (1rem) - maps to semanticSpacing.md
|
|
992
|
-
},
|
|
993
|
-
header: {
|
|
994
|
-
sm: "px-xs py-sm",
|
|
995
|
-
// 4px horizontal, 8px vertical
|
|
996
|
-
md: "px-sm py-md",
|
|
997
|
-
// 8px horizontal, 16px vertical
|
|
998
|
-
lg: "px-md py-lg"
|
|
999
|
-
// 16px horizontal, 24px vertical
|
|
1000
|
-
}
|
|
1001
|
-
},
|
|
1002
|
-
/**
|
|
1003
|
-
* Gap between table cells (horizontal spacing)
|
|
1004
|
-
*/
|
|
1005
|
-
gap: {
|
|
1006
|
-
sm: "gap-xs",
|
|
1007
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1008
|
-
md: "gap-sm"
|
|
1009
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1370
|
+
height: {
|
|
1371
|
+
text: "h-4",
|
|
1372
|
+
// 16px (1rem) - text line height
|
|
1373
|
+
circle: "h-10 w-10",
|
|
1374
|
+
// 40px × 40px (2.5rem) - circular skeleton
|
|
1375
|
+
block: "h-20",
|
|
1376
|
+
// 80px (5rem) - block skeleton
|
|
1377
|
+
card: "h-32",
|
|
1378
|
+
// 128px (8rem) - card skeleton
|
|
1379
|
+
inline: "h-4"
|
|
1380
|
+
// 16px (1rem) - inline text
|
|
1010
1381
|
},
|
|
1011
1382
|
/**
|
|
1012
|
-
* Border radius
|
|
1383
|
+
* Border radius by variant
|
|
1384
|
+
* Maps to foundation borderRadius tokens
|
|
1013
1385
|
*/
|
|
1014
1386
|
radius: {
|
|
1015
|
-
|
|
1387
|
+
text: "rounded-sm",
|
|
1388
|
+
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1389
|
+
circle: "rounded-full",
|
|
1390
|
+
// Full circle - maps to borderRadius.full
|
|
1391
|
+
block: "rounded-md",
|
|
1016
1392
|
// 6px (0.375rem) - maps to borderRadius.md
|
|
1393
|
+
card: "rounded-xl",
|
|
1394
|
+
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1395
|
+
inline: "rounded-sm"
|
|
1396
|
+
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1017
1397
|
},
|
|
1018
1398
|
/**
|
|
1019
|
-
*
|
|
1020
|
-
*
|
|
1021
|
-
*/
|
|
1022
|
-
shadow: {
|
|
1023
|
-
none: "shadow-none",
|
|
1024
|
-
// No shadow
|
|
1025
|
-
subtle: "shadow-sm"
|
|
1026
|
-
// Maps to elevationShadows.sm
|
|
1027
|
-
},
|
|
1028
|
-
/**
|
|
1029
|
-
* Typography tokens for table headers and cells
|
|
1030
|
-
* Maps to foundation typography fontSize tokens
|
|
1031
|
-
*/
|
|
1032
|
-
typography: {
|
|
1033
|
-
header: {
|
|
1034
|
-
fontSize: "text-sm",
|
|
1035
|
-
// Maps to fontSize.sm[0]
|
|
1036
|
-
fontWeight: "font-semibold"
|
|
1037
|
-
// Maps to fontWeight.semibold
|
|
1038
|
-
},
|
|
1039
|
-
cell: {
|
|
1040
|
-
fontSize: "text-sm",
|
|
1041
|
-
// Maps to fontSize.sm[0]
|
|
1042
|
-
fontWeight: "font-normal"
|
|
1043
|
-
// Maps to fontWeight.normal
|
|
1044
|
-
}
|
|
1045
|
-
},
|
|
1046
|
-
/**
|
|
1047
|
-
* Color tokens for table states
|
|
1048
|
-
* Uses semantic color tokens
|
|
1049
|
-
*/
|
|
1050
|
-
colors: {
|
|
1051
|
-
border: "border-border",
|
|
1052
|
-
// Border color
|
|
1053
|
-
rowHover: "hover:bg-muted/50",
|
|
1054
|
-
// Row hover background
|
|
1055
|
-
rowSelected: "bg-muted"
|
|
1056
|
-
// Selected row background
|
|
1057
|
-
}
|
|
1058
|
-
},
|
|
1059
|
-
/**
|
|
1060
|
-
* Skeleton Component Tokens
|
|
1061
|
-
*/
|
|
1062
|
-
skeleton: {
|
|
1063
|
-
/**
|
|
1064
|
-
* Skeleton heights by variant
|
|
1065
|
-
* Maps to Tailwind height utilities
|
|
1066
|
-
*/
|
|
1067
|
-
height: {
|
|
1068
|
-
text: "h-4",
|
|
1069
|
-
// 16px (1rem) - text line height
|
|
1070
|
-
circle: "h-10 w-10",
|
|
1071
|
-
// 40px × 40px (2.5rem) - circular skeleton
|
|
1072
|
-
block: "h-20",
|
|
1073
|
-
// 80px (5rem) - block skeleton
|
|
1074
|
-
card: "h-32",
|
|
1075
|
-
// 128px (8rem) - card skeleton
|
|
1076
|
-
inline: "h-4"
|
|
1077
|
-
// 16px (1rem) - inline text
|
|
1078
|
-
},
|
|
1079
|
-
/**
|
|
1080
|
-
* Border radius by variant
|
|
1081
|
-
* Maps to foundation borderRadius tokens
|
|
1082
|
-
*/
|
|
1083
|
-
radius: {
|
|
1084
|
-
text: "rounded-sm",
|
|
1085
|
-
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1086
|
-
circle: "rounded-full",
|
|
1087
|
-
// Full circle - maps to borderRadius.full
|
|
1088
|
-
block: "rounded-md",
|
|
1089
|
-
// 6px (0.375rem) - maps to borderRadius.md
|
|
1090
|
-
card: "rounded-xl",
|
|
1091
|
-
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1092
|
-
inline: "rounded-sm"
|
|
1093
|
-
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1094
|
-
},
|
|
1095
|
-
/**
|
|
1096
|
-
* Animation tokens
|
|
1097
|
-
* Uses motion tokens for animations
|
|
1399
|
+
* Animation tokens
|
|
1400
|
+
* Uses motion tokens for animations
|
|
1098
1401
|
*/
|
|
1099
1402
|
animation: {
|
|
1100
1403
|
pulse: "animate-pulse",
|
|
@@ -1121,97 +1424,6 @@ var DATA_TOKENS = {
|
|
|
1121
1424
|
inline: "inline-block"
|
|
1122
1425
|
// Inline block display
|
|
1123
1426
|
}
|
|
1124
|
-
},
|
|
1125
|
-
/**
|
|
1126
|
-
* EmptyState Component Tokens
|
|
1127
|
-
*/
|
|
1128
|
-
emptyState: {
|
|
1129
|
-
/**
|
|
1130
|
-
* Spacing tokens for EmptyState
|
|
1131
|
-
* Maps to semantic spacing tokens
|
|
1132
|
-
*/
|
|
1133
|
-
spacing: {
|
|
1134
|
-
gap: "gap-md",
|
|
1135
|
-
// 16px (1rem) - gap between elements - maps to semanticSpacing.md
|
|
1136
|
-
padding: "p-lg"
|
|
1137
|
-
// 24px (1.5rem) - container padding - maps to semanticSpacing.lg
|
|
1138
|
-
},
|
|
1139
|
-
/**
|
|
1140
|
-
* Border radius for EmptyState container
|
|
1141
|
-
*/
|
|
1142
|
-
radius: {
|
|
1143
|
-
default: "rounded-xl"
|
|
1144
|
-
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1145
|
-
},
|
|
1146
|
-
/**
|
|
1147
|
-
* Icon sizes by variant
|
|
1148
|
-
* Maps to Tailwind size utilities
|
|
1149
|
-
*/
|
|
1150
|
-
iconSize: {
|
|
1151
|
-
sm: "size-8",
|
|
1152
|
-
// 32px (2rem)
|
|
1153
|
-
md: "size-12",
|
|
1154
|
-
// 48px (3rem)
|
|
1155
|
-
lg: "size-16"
|
|
1156
|
-
// 64px (4rem)
|
|
1157
|
-
},
|
|
1158
|
-
/**
|
|
1159
|
-
* Typography tokens for EmptyState
|
|
1160
|
-
* Maps to foundation typography tokens
|
|
1161
|
-
*/
|
|
1162
|
-
typography: {
|
|
1163
|
-
title: {
|
|
1164
|
-
fontSize: "text-lg",
|
|
1165
|
-
// Maps to fontSize.lg[0]
|
|
1166
|
-
fontWeight: "font-semibold"
|
|
1167
|
-
// Maps to fontWeight.semibold
|
|
1168
|
-
},
|
|
1169
|
-
description: {
|
|
1170
|
-
fontSize: "text-sm",
|
|
1171
|
-
// Maps to fontSize.sm[0]
|
|
1172
|
-
fontWeight: "font-normal"
|
|
1173
|
-
// Maps to fontWeight.normal
|
|
1174
|
-
}
|
|
1175
|
-
}
|
|
1176
|
-
},
|
|
1177
|
-
/**
|
|
1178
|
-
* DataList Component Tokens
|
|
1179
|
-
*/
|
|
1180
|
-
dataList: {
|
|
1181
|
-
/**
|
|
1182
|
-
* Spacing tokens for DataList
|
|
1183
|
-
* Maps to semantic spacing tokens
|
|
1184
|
-
*/
|
|
1185
|
-
spacing: {
|
|
1186
|
-
gap: "gap-md",
|
|
1187
|
-
// 16px (1rem) - gap between items - maps to semanticSpacing.md
|
|
1188
|
-
padding: "p-md"
|
|
1189
|
-
// 16px (1rem) - container padding - maps to semanticSpacing.md
|
|
1190
|
-
},
|
|
1191
|
-
/**
|
|
1192
|
-
* Label width tokens (for desktop horizontal layout)
|
|
1193
|
-
* Maps to Tailwind width utilities
|
|
1194
|
-
*/
|
|
1195
|
-
labelWidth: {
|
|
1196
|
-
sm: "w-24",
|
|
1197
|
-
// 96px (6rem) - small label width
|
|
1198
|
-
md: "w-32",
|
|
1199
|
-
// 128px (8rem) - default label width
|
|
1200
|
-
lg: "w-40"
|
|
1201
|
-
// 160px (10rem) - large label width
|
|
1202
|
-
},
|
|
1203
|
-
/**
|
|
1204
|
-
* Row padding tokens
|
|
1205
|
-
* Maps to semantic spacing tokens
|
|
1206
|
-
*/
|
|
1207
|
-
rowPadding: {
|
|
1208
|
-
sm: "py-xs",
|
|
1209
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1210
|
-
md: "py-sm",
|
|
1211
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1212
|
-
lg: "py-md"
|
|
1213
|
-
// 16px (1rem) - maps to semanticSpacing.md
|
|
1214
|
-
}
|
|
1215
1427
|
}
|
|
1216
1428
|
};
|
|
1217
1429
|
|
|
@@ -1271,139 +1483,6 @@ var ICON_TOKENS = {
|
|
|
1271
1483
|
}
|
|
1272
1484
|
};
|
|
1273
1485
|
|
|
1274
|
-
// src/tokens/components/motion.ts
|
|
1275
|
-
var MOTION_TOKENS = {
|
|
1276
|
-
/**
|
|
1277
|
-
* Transition property tokens
|
|
1278
|
-
* Maps to Tailwind transition utilities
|
|
1279
|
-
*/
|
|
1280
|
-
transition: {
|
|
1281
|
-
all: "transition-all",
|
|
1282
|
-
// All properties
|
|
1283
|
-
colors: "transition-colors",
|
|
1284
|
-
// Color properties only
|
|
1285
|
-
opacity: "transition-opacity",
|
|
1286
|
-
// Opacity only
|
|
1287
|
-
transform: "transition-transform",
|
|
1288
|
-
// Transform only
|
|
1289
|
-
shadow: "transition-shadow",
|
|
1290
|
-
// Box shadow only
|
|
1291
|
-
none: "transition-none"
|
|
1292
|
-
// No transition
|
|
1293
|
-
},
|
|
1294
|
-
/**
|
|
1295
|
-
* Duration tokens
|
|
1296
|
-
* Maps to foundation motion duration tokens via Tailwind
|
|
1297
|
-
*/
|
|
1298
|
-
duration: {
|
|
1299
|
-
instant: "duration-0",
|
|
1300
|
-
// 0ms
|
|
1301
|
-
fast: "duration-fast",
|
|
1302
|
-
// 150ms - maps to motion.durations.fast
|
|
1303
|
-
normal: "duration-normal",
|
|
1304
|
-
// 300ms - maps to motion.durations.normal
|
|
1305
|
-
slow: "duration-slow",
|
|
1306
|
-
// 500ms - maps to motion.durations.slow
|
|
1307
|
-
slower: "duration-slower",
|
|
1308
|
-
// 700ms - maps to motion.durations.slower
|
|
1309
|
-
slowest: "duration-slowest",
|
|
1310
|
-
// 1000ms - maps to motion.durations.slowest
|
|
1311
|
-
// Granular durations
|
|
1312
|
-
"75": "duration-75",
|
|
1313
|
-
// 75ms
|
|
1314
|
-
"100": "duration-100",
|
|
1315
|
-
// 100ms
|
|
1316
|
-
"200": "duration-200",
|
|
1317
|
-
// 200ms
|
|
1318
|
-
"250": "duration-250",
|
|
1319
|
-
// 250ms
|
|
1320
|
-
"300": "duration-300",
|
|
1321
|
-
// 300ms
|
|
1322
|
-
"400": "duration-400",
|
|
1323
|
-
// 400ms
|
|
1324
|
-
"500": "duration-500",
|
|
1325
|
-
// 500ms
|
|
1326
|
-
"600": "duration-600",
|
|
1327
|
-
// 600ms
|
|
1328
|
-
"700": "duration-700",
|
|
1329
|
-
// 700ms
|
|
1330
|
-
"800": "duration-800",
|
|
1331
|
-
// 800ms
|
|
1332
|
-
"1000": "duration-1000"
|
|
1333
|
-
// 1000ms
|
|
1334
|
-
},
|
|
1335
|
-
/**
|
|
1336
|
-
* Easing tokens
|
|
1337
|
-
* Maps to foundation motion easing tokens via Tailwind
|
|
1338
|
-
*/
|
|
1339
|
-
easing: {
|
|
1340
|
-
linear: "ease-linear",
|
|
1341
|
-
// Linear easing
|
|
1342
|
-
in: "ease-in",
|
|
1343
|
-
// Ease in
|
|
1344
|
-
out: "ease-out",
|
|
1345
|
-
// Ease out (recommended for most UI)
|
|
1346
|
-
"in-out": "ease-in-out",
|
|
1347
|
-
// Ease in-out
|
|
1348
|
-
bounce: "ease-bounce",
|
|
1349
|
-
// Bounce easing
|
|
1350
|
-
elastic: "ease-elastic"
|
|
1351
|
-
// Elastic easing
|
|
1352
|
-
},
|
|
1353
|
-
/**
|
|
1354
|
-
* Pre-configured transition tokens
|
|
1355
|
-
* Combines duration and easing for common use cases
|
|
1356
|
-
*/
|
|
1357
|
-
transitionPreset: {
|
|
1358
|
-
fast: "transition-all duration-fast ease-out",
|
|
1359
|
-
// Fast transition
|
|
1360
|
-
normal: "transition-all duration-normal ease-in-out",
|
|
1361
|
-
// Normal transition (default)
|
|
1362
|
-
slow: "transition-all duration-slow ease-in-out",
|
|
1363
|
-
// Slow transition
|
|
1364
|
-
colors: "transition-colors duration-normal ease-out",
|
|
1365
|
-
// Color transitions (common)
|
|
1366
|
-
transform: "transition-transform duration-normal ease-out",
|
|
1367
|
-
// Transform transitions
|
|
1368
|
-
opacity: "transition-opacity duration-fast ease-out"
|
|
1369
|
-
// Opacity transitions
|
|
1370
|
-
},
|
|
1371
|
-
/**
|
|
1372
|
-
* Animation tokens
|
|
1373
|
-
* Maps to foundation motion animation tokens via Tailwind
|
|
1374
|
-
*/
|
|
1375
|
-
animation: {
|
|
1376
|
-
none: "animate-none",
|
|
1377
|
-
// No animation
|
|
1378
|
-
spin: "animate-spin",
|
|
1379
|
-
// Spin animation
|
|
1380
|
-
pulse: "animate-pulse",
|
|
1381
|
-
// Pulse animation
|
|
1382
|
-
bounce: "animate-bounce",
|
|
1383
|
-
// Bounce animation
|
|
1384
|
-
ping: "animate-ping",
|
|
1385
|
-
// Ping animation
|
|
1386
|
-
shake: "animate-shake",
|
|
1387
|
-
// Shake animation
|
|
1388
|
-
fadeIn: "animate-fadeIn",
|
|
1389
|
-
// Fade in
|
|
1390
|
-
fadeOut: "animate-fadeOut",
|
|
1391
|
-
// Fade out
|
|
1392
|
-
slideInUp: "animate-slideInUp",
|
|
1393
|
-
// Slide in from bottom
|
|
1394
|
-
slideInDown: "animate-slideInDown",
|
|
1395
|
-
// Slide in from top
|
|
1396
|
-
slideInLeft: "animate-slideInLeft",
|
|
1397
|
-
// Slide in from right
|
|
1398
|
-
slideInRight: "animate-slideInRight",
|
|
1399
|
-
// Slide in from left
|
|
1400
|
-
scaleIn: "animate-scaleIn",
|
|
1401
|
-
// Scale in
|
|
1402
|
-
scaleOut: "animate-scaleOut"
|
|
1403
|
-
// Scale out
|
|
1404
|
-
}
|
|
1405
|
-
};
|
|
1406
|
-
|
|
1407
1486
|
// src/tokens/components/domain.ts
|
|
1408
1487
|
var DOMAIN_TOKENS = {
|
|
1409
1488
|
/**
|
|
@@ -1556,7 +1635,7 @@ var DOMAIN_TOKENS = {
|
|
|
1556
1635
|
},
|
|
1557
1636
|
/**
|
|
1558
1637
|
* Image tokens for card media
|
|
1559
|
-
* Defines aspect ratio, radius, and
|
|
1638
|
+
* Defines aspect ratio, radius, overlay styles, and placeholder gradients
|
|
1560
1639
|
*/
|
|
1561
1640
|
image: {
|
|
1562
1641
|
/**
|
|
@@ -1579,6 +1658,40 @@ var DOMAIN_TOKENS = {
|
|
|
1579
1658
|
overlay: {
|
|
1580
1659
|
gradient: "bg-gradient-to-t from-black/60 via-transparent to-transparent"
|
|
1581
1660
|
// Gradient overlay for image hover states
|
|
1661
|
+
},
|
|
1662
|
+
/**
|
|
1663
|
+
* Placeholder gradient tokens for image placeholders
|
|
1664
|
+
* Used when no image URL is provided
|
|
1665
|
+
*/
|
|
1666
|
+
placeholder: {
|
|
1667
|
+
gradient: "bg-gradient-to-br from-muted to-muted/50"
|
|
1668
|
+
// Placeholder gradient background
|
|
1669
|
+
}
|
|
1670
|
+
},
|
|
1671
|
+
/**
|
|
1672
|
+
* Text tokens for card text elements
|
|
1673
|
+
* Defines hover states and line clamping for titles and descriptions
|
|
1674
|
+
*/
|
|
1675
|
+
text: {
|
|
1676
|
+
/**
|
|
1677
|
+
* Hover state tokens for text elements
|
|
1678
|
+
* Used for interactive text elements like titles
|
|
1679
|
+
*/
|
|
1680
|
+
hover: {
|
|
1681
|
+
primary: "group-hover:text-primary"
|
|
1682
|
+
// Hover state for primary text color
|
|
1683
|
+
},
|
|
1684
|
+
/**
|
|
1685
|
+
* Line clamp tokens for text truncation
|
|
1686
|
+
* Used for limiting text to specific number of lines
|
|
1687
|
+
*/
|
|
1688
|
+
lineClamp: {
|
|
1689
|
+
one: "line-clamp-1",
|
|
1690
|
+
// Single line clamp
|
|
1691
|
+
two: "line-clamp-2",
|
|
1692
|
+
// Two line clamp
|
|
1693
|
+
three: "line-clamp-3"
|
|
1694
|
+
// Three line clamp
|
|
1582
1695
|
}
|
|
1583
1696
|
},
|
|
1584
1697
|
/**
|
|
@@ -1801,7 +1914,95 @@ var DOMAIN_TOKENS = {
|
|
|
1801
1914
|
height: "h-6"
|
|
1802
1915
|
// References spacing[6] (1.5rem / 24px) via Tailwind
|
|
1803
1916
|
}
|
|
1804
|
-
}
|
|
1917
|
+
},
|
|
1918
|
+
/**
|
|
1919
|
+
* CTA (Call-to-Action) button tokens for domain card components
|
|
1920
|
+
* Provides PromoCard-specific CTA button styling tokens
|
|
1921
|
+
* These tokens are semantically owned by domain card components, not by the Button component
|
|
1922
|
+
* References foundation tokens (spacing, typography, radius, shadows, motion) for consistency
|
|
1923
|
+
*/
|
|
1924
|
+
cta: {
|
|
1925
|
+
/**
|
|
1926
|
+
* CTA button styling tokens
|
|
1927
|
+
* Used by PromoCard and other domain card components for CTA button elements
|
|
1928
|
+
*/
|
|
1929
|
+
button: {
|
|
1930
|
+
/**
|
|
1931
|
+
* Button heights by size
|
|
1932
|
+
* Maps to Tailwind height utilities: h-8, h-9
|
|
1933
|
+
*/
|
|
1934
|
+
height: {
|
|
1935
|
+
sm: "h-8",
|
|
1936
|
+
// 32px (2rem) - compact size
|
|
1937
|
+
md: "h-9"
|
|
1938
|
+
// 36px (2.25rem) - default size
|
|
1939
|
+
},
|
|
1940
|
+
/**
|
|
1941
|
+
* Button padding by size
|
|
1942
|
+
* Horizontal and vertical padding values
|
|
1943
|
+
* References semanticSpacing tokens
|
|
1944
|
+
*/
|
|
1945
|
+
padding: {
|
|
1946
|
+
horizontal: {
|
|
1947
|
+
sm: "px-sm",
|
|
1948
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1949
|
+
md: "px-md"
|
|
1950
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
1951
|
+
},
|
|
1952
|
+
vertical: {
|
|
1953
|
+
sm: "py-xs"
|
|
1954
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1955
|
+
}
|
|
1956
|
+
},
|
|
1957
|
+
/**
|
|
1958
|
+
* Border radius for CTA buttons
|
|
1959
|
+
* References borderRadius.md (6px / 0.375rem)
|
|
1960
|
+
* Using Tailwind class "rounded-md" which maps to borderRadius.md
|
|
1961
|
+
*/
|
|
1962
|
+
radius: "rounded-md",
|
|
1963
|
+
// References borderRadius.md via Tailwind
|
|
1964
|
+
/**
|
|
1965
|
+
* Font sizes by button size
|
|
1966
|
+
* Maps to foundation typography fontSize tokens
|
|
1967
|
+
*/
|
|
1968
|
+
fontSize: {
|
|
1969
|
+
sm: "text-xs",
|
|
1970
|
+
// Maps to fontSize.xs[0]
|
|
1971
|
+
md: "text-sm"
|
|
1972
|
+
// Maps to fontSize.sm[0]
|
|
1973
|
+
},
|
|
1974
|
+
/**
|
|
1975
|
+
* Shadow tokens for CTA buttons
|
|
1976
|
+
* Maps to foundation elevation shadow tokens
|
|
1977
|
+
*/
|
|
1978
|
+
shadow: {
|
|
1979
|
+
primary: "shadow"
|
|
1980
|
+
// Maps to elevationShadows.xs (primary variant uses shadow)
|
|
1981
|
+
},
|
|
1982
|
+
/**
|
|
1983
|
+
* Color tokens for CTA button variants
|
|
1984
|
+
* Uses semantic color tokens that map to CSS variables
|
|
1985
|
+
*/
|
|
1986
|
+
variant: {
|
|
1987
|
+
primary: {
|
|
1988
|
+
background: "bg-primary",
|
|
1989
|
+
// Primary background using CSS var
|
|
1990
|
+
text: "text-primary-foreground",
|
|
1991
|
+
// Primary text using CSS var
|
|
1992
|
+
hover: "hover:bg-primary/90"
|
|
1993
|
+
// Primary hover using CSS var
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
/**
|
|
1997
|
+
* Transition tokens for CTA buttons
|
|
1998
|
+
* References MOTION_TOKENS for transitions
|
|
1999
|
+
*/
|
|
2000
|
+
transition: {
|
|
2001
|
+
colors: "transition-colors"
|
|
2002
|
+
// Color transition using motion tokens
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
1805
2006
|
};
|
|
1806
2007
|
|
|
1807
2008
|
// src/tokens/components/input.ts
|
|
@@ -1904,40 +2105,6 @@ var INPUT_TOKENS = {
|
|
|
1904
2105
|
text: "text-[hsl(var(--foreground))]"
|
|
1905
2106
|
// File input text color using CSS var
|
|
1906
2107
|
},
|
|
1907
|
-
/**
|
|
1908
|
-
* Select listbox tokens
|
|
1909
|
-
* Styling for select dropdown container
|
|
1910
|
-
*/
|
|
1911
|
-
selectListbox: {
|
|
1912
|
-
border: "border border-[hsl(var(--border))]",
|
|
1913
|
-
// Border color using CSS var
|
|
1914
|
-
background: "bg-[hsl(var(--popover))]",
|
|
1915
|
-
// Background using CSS var
|
|
1916
|
-
text: "text-[hsl(var(--popover-foreground))]",
|
|
1917
|
-
// Text color using CSS var
|
|
1918
|
-
radius: "rounded-md",
|
|
1919
|
-
// Radius token (6px)
|
|
1920
|
-
shadow: "shadow-md"
|
|
1921
|
-
// Shadow token
|
|
1922
|
-
},
|
|
1923
|
-
/**
|
|
1924
|
-
* Select option tokens
|
|
1925
|
-
* Styling for select option items
|
|
1926
|
-
*/
|
|
1927
|
-
selectOption: {
|
|
1928
|
-
focus: {
|
|
1929
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
1930
|
-
// Focus background using CSS var
|
|
1931
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
1932
|
-
// Focus text using CSS var
|
|
1933
|
-
},
|
|
1934
|
-
selected: {
|
|
1935
|
-
background: "bg-[hsl(var(--accent))]",
|
|
1936
|
-
// Selected background using CSS var
|
|
1937
|
-
text: "text-[hsl(var(--accent-foreground))]"
|
|
1938
|
-
// Selected text using CSS var
|
|
1939
|
-
}
|
|
1940
|
-
},
|
|
1941
2108
|
/**
|
|
1942
2109
|
* Variant-based tokens
|
|
1943
2110
|
* Border, background, and text colors for different variants
|
|
@@ -2151,6 +2318,188 @@ var INPUT_TOKENS = {
|
|
|
2151
2318
|
}
|
|
2152
2319
|
};
|
|
2153
2320
|
|
|
2321
|
+
// src/tokens/components/textarea.ts
|
|
2322
|
+
var TEXTAREA_TOKENS = {
|
|
2323
|
+
/**
|
|
2324
|
+
* Shadow token
|
|
2325
|
+
* Maps to foundation elevation shadow tokens
|
|
2326
|
+
*/
|
|
2327
|
+
shadow: "shadow-sm",
|
|
2328
|
+
// Maps to elevationShadows.sm
|
|
2329
|
+
/**
|
|
2330
|
+
* Variant-based tokens
|
|
2331
|
+
* Border, background, and text colors for different variants
|
|
2332
|
+
* All use CSS variable references for theme support
|
|
2333
|
+
*/
|
|
2334
|
+
variant: {
|
|
2335
|
+
primary: {
|
|
2336
|
+
border: "border-[hsl(var(--tm-primary))]",
|
|
2337
|
+
// Primary border color
|
|
2338
|
+
background: "bg-[hsl(var(--tm-primary))]",
|
|
2339
|
+
// Primary background
|
|
2340
|
+
text: "text-[hsl(var(--tm-primary-foreground))]",
|
|
2341
|
+
// Primary text color
|
|
2342
|
+
focus: "focus-visible:shadow-[var(--focus-ring-primary)]"
|
|
2343
|
+
// Primary focus ring
|
|
2344
|
+
},
|
|
2345
|
+
secondary: {
|
|
2346
|
+
border: "border-[hsl(var(--tm-secondary))]",
|
|
2347
|
+
// Secondary border color
|
|
2348
|
+
background: "bg-[hsl(var(--tm-secondary))]",
|
|
2349
|
+
// Secondary background
|
|
2350
|
+
text: "text-[hsl(var(--tm-secondary-foreground))]",
|
|
2351
|
+
// Secondary text color
|
|
2352
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2353
|
+
// Default focus ring
|
|
2354
|
+
},
|
|
2355
|
+
outline: {
|
|
2356
|
+
border: "border-[hsl(var(--input))]",
|
|
2357
|
+
// Input border color
|
|
2358
|
+
background: "bg-transparent",
|
|
2359
|
+
// Transparent background
|
|
2360
|
+
text: "text-[hsl(var(--foreground))]",
|
|
2361
|
+
// Foreground text color
|
|
2362
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2363
|
+
// Default focus ring
|
|
2364
|
+
},
|
|
2365
|
+
ghost: {
|
|
2366
|
+
border: "border-transparent",
|
|
2367
|
+
// Transparent border
|
|
2368
|
+
background: "bg-transparent",
|
|
2369
|
+
// Transparent background
|
|
2370
|
+
text: "text-[hsl(var(--foreground))]",
|
|
2371
|
+
// Foreground text color
|
|
2372
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2373
|
+
// Default focus ring
|
|
2374
|
+
},
|
|
2375
|
+
destructive: {
|
|
2376
|
+
border: "border-[hsl(var(--destructive))]",
|
|
2377
|
+
// Destructive border color
|
|
2378
|
+
background: "bg-[hsl(var(--destructive))]",
|
|
2379
|
+
// Destructive background
|
|
2380
|
+
text: "text-[hsl(var(--destructive-foreground))]",
|
|
2381
|
+
// Destructive text color
|
|
2382
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2383
|
+
// Default focus ring
|
|
2384
|
+
}
|
|
2385
|
+
},
|
|
2386
|
+
/**
|
|
2387
|
+
* State-based tokens
|
|
2388
|
+
* Border, background, and text colors for different states
|
|
2389
|
+
* All use CSS variable references for theme support
|
|
2390
|
+
*/
|
|
2391
|
+
state: {
|
|
2392
|
+
border: {
|
|
2393
|
+
default: "border-[hsl(var(--input))]",
|
|
2394
|
+
// Default border color using CSS var
|
|
2395
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]",
|
|
2396
|
+
// Focus ring using CSS var
|
|
2397
|
+
error: "border-[hsl(var(--destructive))]",
|
|
2398
|
+
// Error state border using CSS var
|
|
2399
|
+
success: "border-[hsl(var(--semantic-success))]",
|
|
2400
|
+
// Success state border using CSS var
|
|
2401
|
+
disabled: "border-[hsl(var(--input))]"
|
|
2402
|
+
// Disabled state border (same as default)
|
|
2403
|
+
},
|
|
2404
|
+
background: {
|
|
2405
|
+
default: "bg-transparent",
|
|
2406
|
+
// Default background
|
|
2407
|
+
disabled: "bg-transparent"
|
|
2408
|
+
// Disabled background (same as default)
|
|
2409
|
+
},
|
|
2410
|
+
text: {
|
|
2411
|
+
default: "text-[hsl(var(--foreground))]",
|
|
2412
|
+
// Default text color using CSS var
|
|
2413
|
+
placeholder: "placeholder:text-[hsl(var(--muted-foreground))]",
|
|
2414
|
+
// Placeholder text color using CSS var
|
|
2415
|
+
disabled: "disabled:opacity-50"
|
|
2416
|
+
// Disabled text opacity
|
|
2417
|
+
}
|
|
2418
|
+
},
|
|
2419
|
+
/**
|
|
2420
|
+
* Width tokens
|
|
2421
|
+
* Common width utilities
|
|
2422
|
+
*/
|
|
2423
|
+
width: {
|
|
2424
|
+
full: "w-full"
|
|
2425
|
+
// Full width (100%)
|
|
2426
|
+
},
|
|
2427
|
+
/**
|
|
2428
|
+
* Message tokens
|
|
2429
|
+
* Spacing, positioning, and styling for helper text and error messages
|
|
2430
|
+
*/
|
|
2431
|
+
message: {
|
|
2432
|
+
// 8px (0.5rem) - spacing between control and message
|
|
2433
|
+
position: {
|
|
2434
|
+
bottom: "bottom-sm",
|
|
2435
|
+
// 8px (0.5rem) - bottom position for character counter
|
|
2436
|
+
right: "right-sm"
|
|
2437
|
+
// 8px (0.5rem) - right position for character counter
|
|
2438
|
+
},
|
|
2439
|
+
color: {
|
|
2440
|
+
default: "text-[hsl(var(--muted-foreground))]",
|
|
2441
|
+
// Default message color
|
|
2442
|
+
error: "text-[hsl(var(--destructive))]"}
|
|
2443
|
+
},
|
|
2444
|
+
/**
|
|
2445
|
+
* Size-based token structure
|
|
2446
|
+
* Organized by size for easy access
|
|
2447
|
+
*/
|
|
2448
|
+
size: {
|
|
2449
|
+
xs: {
|
|
2450
|
+
padding: {
|
|
2451
|
+
horizontal: "px-xs",
|
|
2452
|
+
vertical: "py-xs"
|
|
2453
|
+
},
|
|
2454
|
+
radius: "rounded-sm",
|
|
2455
|
+
fontSize: "text-xs"},
|
|
2456
|
+
sm: {
|
|
2457
|
+
padding: {
|
|
2458
|
+
horizontal: "px-sm",
|
|
2459
|
+
vertical: "py-xs"
|
|
2460
|
+
},
|
|
2461
|
+
radius: "rounded-md",
|
|
2462
|
+
fontSize: "text-sm"},
|
|
2463
|
+
md: {
|
|
2464
|
+
padding: {
|
|
2465
|
+
horizontal: "px-sm",
|
|
2466
|
+
vertical: "py-xs"
|
|
2467
|
+
},
|
|
2468
|
+
radius: "rounded-md",
|
|
2469
|
+
fontSize: "text-base",
|
|
2470
|
+
fontSizeResponsive: "md:text-sm"},
|
|
2471
|
+
lg: {
|
|
2472
|
+
padding: {
|
|
2473
|
+
horizontal: "px-md",
|
|
2474
|
+
vertical: "py-sm"
|
|
2475
|
+
},
|
|
2476
|
+
radius: "rounded-md",
|
|
2477
|
+
fontSize: "text-base"},
|
|
2478
|
+
xl: {
|
|
2479
|
+
padding: {
|
|
2480
|
+
horizontal: "px-lg",
|
|
2481
|
+
vertical: "py-md"
|
|
2482
|
+
},
|
|
2483
|
+
radius: "rounded-lg",
|
|
2484
|
+
fontSize: "text-lg"}
|
|
2485
|
+
}
|
|
2486
|
+
};
|
|
2487
|
+
|
|
2488
|
+
// src/tokens/components/form.ts
|
|
2489
|
+
var FORM_TOKENS = {
|
|
2490
|
+
/**
|
|
2491
|
+
* Label tokens
|
|
2492
|
+
* Spacing and styling for labels
|
|
2493
|
+
*/
|
|
2494
|
+
label: {
|
|
2495
|
+
// 8px (0.5rem) - spacing between label and control
|
|
2496
|
+
/**
|
|
2497
|
+
* Color for required asterisk mark
|
|
2498
|
+
*/
|
|
2499
|
+
requiredMark: "text-destructive"
|
|
2500
|
+
// Color for required asterisk
|
|
2501
|
+
}};
|
|
2502
|
+
|
|
2154
2503
|
// src/tokens/components/checkbox.ts
|
|
2155
2504
|
var CHECKBOX_TOKENS = {
|
|
2156
2505
|
/**
|
|
@@ -2925,8 +3274,16 @@ var TEXT_TOKENS = {
|
|
|
2925
3274
|
// Maps to fontSize.base[0]
|
|
2926
3275
|
lg: "text-lg",
|
|
2927
3276
|
// Maps to fontSize.lg[0]
|
|
2928
|
-
xl: "text-xl"
|
|
3277
|
+
xl: "text-xl",
|
|
2929
3278
|
// Maps to fontSize.xl[0]
|
|
3279
|
+
"2xl": "text-2xl",
|
|
3280
|
+
// Maps to fontSize.2xl[0]
|
|
3281
|
+
"3xl": "text-3xl",
|
|
3282
|
+
// Maps to fontSize.3xl[0]
|
|
3283
|
+
"4xl": "text-4xl",
|
|
3284
|
+
// Maps to fontSize.4xl[0]
|
|
3285
|
+
"5xl": "text-5xl"
|
|
3286
|
+
// Maps to fontSize.5xl[0]
|
|
2930
3287
|
},
|
|
2931
3288
|
/**
|
|
2932
3289
|
* Font weights by weight variant
|
|
@@ -2951,6 +3308,8 @@ var TEXT_TOKENS = {
|
|
|
2951
3308
|
// Maps to lineHeight.none
|
|
2952
3309
|
tight: "leading-tight",
|
|
2953
3310
|
// Maps to lineHeight.tight
|
|
3311
|
+
snug: "leading-snug",
|
|
3312
|
+
// Maps to lineHeight.snug
|
|
2954
3313
|
normal: "leading-normal",
|
|
2955
3314
|
// Maps to lineHeight.normal
|
|
2956
3315
|
relaxed: "leading-relaxed",
|
|
@@ -3474,9 +3833,9 @@ var TOAST_TOKENS = {
|
|
|
3474
3833
|
// Default opacity (hidden)
|
|
3475
3834
|
groupHover: "group-hover:opacity-100",
|
|
3476
3835
|
// Visible on group hover
|
|
3477
|
-
focus: "focus:opacity-100",
|
|
3836
|
+
focus: "focus-visible:opacity-100",
|
|
3478
3837
|
// Visible on focus
|
|
3479
|
-
focusRing: "focus:outline-none focus:ring-1"
|
|
3838
|
+
focusRing: "focus-visible:outline-none focus-visible:ring-1"
|
|
3480
3839
|
// Focus ring styling
|
|
3481
3840
|
}
|
|
3482
3841
|
}
|
|
@@ -4218,19 +4577,27 @@ var DROPDOWN_TOKENS = {
|
|
|
4218
4577
|
// 256px
|
|
4219
4578
|
}
|
|
4220
4579
|
},
|
|
4580
|
+
/**
|
|
4581
|
+
* Width tokens
|
|
4582
|
+
* Common width utilities
|
|
4583
|
+
*/
|
|
4584
|
+
width: {
|
|
4585
|
+
full: "w-full"
|
|
4586
|
+
// Full width (100%)
|
|
4587
|
+
},
|
|
4221
4588
|
/**
|
|
4222
4589
|
* Item tokens by size
|
|
4223
4590
|
* Individual menu item
|
|
4224
4591
|
*/
|
|
4225
4592
|
item: {
|
|
4226
4593
|
background: {
|
|
4227
|
-
focus: "focus:bg-[hsl(var(--accent))]",
|
|
4594
|
+
focus: "focus-visible:bg-[hsl(var(--accent))]",
|
|
4228
4595
|
// Focus background using CSS var
|
|
4229
4596
|
selected: "bg-[hsl(var(--accent))]"
|
|
4230
4597
|
// Selected background using CSS var
|
|
4231
4598
|
},
|
|
4232
4599
|
text: {
|
|
4233
|
-
focus: "focus:text-[hsl(var(--accent-foreground))]",
|
|
4600
|
+
focus: "focus-visible:text-[hsl(var(--accent-foreground))]",
|
|
4234
4601
|
// Focus text using CSS var
|
|
4235
4602
|
selected: "text-[hsl(var(--accent-foreground))]"
|
|
4236
4603
|
// Selected text using CSS var
|
|
@@ -4482,9 +4849,9 @@ var SELECT_TOKENS = {
|
|
|
4482
4849
|
indicator: {
|
|
4483
4850
|
size: "size-4"},
|
|
4484
4851
|
focus: {
|
|
4485
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
4852
|
+
background: "focus-visible:bg-[hsl(var(--accent))]",
|
|
4486
4853
|
// Focus background using CSS var
|
|
4487
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
4854
|
+
text: "focus-visible:text-[hsl(var(--accent-foreground))]"
|
|
4488
4855
|
// Focus text using CSS var
|
|
4489
4856
|
},
|
|
4490
4857
|
disabled: {
|
|
@@ -5027,26 +5394,314 @@ var MODAL_TOKENS = {
|
|
|
5027
5394
|
}
|
|
5028
5395
|
};
|
|
5029
5396
|
|
|
5030
|
-
// src/tokens/
|
|
5031
|
-
var
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5397
|
+
// src/tokens/components/table.ts
|
|
5398
|
+
var TABLE_TOKENS = {
|
|
5399
|
+
/**
|
|
5400
|
+
* Table cell and header padding by size
|
|
5401
|
+
* Maps to semantic spacing tokens
|
|
5402
|
+
*/
|
|
5403
|
+
padding: {
|
|
5404
|
+
cell: {
|
|
5405
|
+
sm: "p-xs",
|
|
5406
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5407
|
+
md: "p-sm",
|
|
5408
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5409
|
+
lg: "p-md"
|
|
5410
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5411
|
+
},
|
|
5412
|
+
header: {
|
|
5413
|
+
sm: "px-xs py-sm",
|
|
5414
|
+
// 4px horizontal, 8px vertical
|
|
5415
|
+
md: "px-sm py-md",
|
|
5416
|
+
// 8px horizontal, 16px vertical
|
|
5417
|
+
lg: "px-md py-lg"
|
|
5418
|
+
// 16px horizontal, 24px vertical
|
|
5419
|
+
}
|
|
5420
|
+
},
|
|
5421
|
+
/**
|
|
5422
|
+
* Border radius for table
|
|
5423
|
+
*/
|
|
5424
|
+
radius: {
|
|
5425
|
+
default: "rounded-md"
|
|
5426
|
+
// 6px (0.375rem) - maps to borderRadius.md
|
|
5427
|
+
},
|
|
5428
|
+
/**
|
|
5429
|
+
* Shadow tokens for table
|
|
5430
|
+
* Maps to foundation elevation shadow tokens
|
|
5431
|
+
*/
|
|
5432
|
+
shadow: {
|
|
5433
|
+
// No shadow
|
|
5434
|
+
subtle: "shadow-sm"
|
|
5435
|
+
// Maps to elevationShadows.sm
|
|
5436
|
+
},
|
|
5437
|
+
/**
|
|
5438
|
+
* Typography tokens for table headers and cells
|
|
5439
|
+
* Maps to foundation typography fontSize tokens
|
|
5440
|
+
*/
|
|
5441
|
+
typography: {
|
|
5442
|
+
header: {
|
|
5443
|
+
fontSize: "text-sm",
|
|
5444
|
+
// Maps to fontSize.sm[0]
|
|
5445
|
+
fontWeight: "font-semibold"
|
|
5446
|
+
// Maps to fontWeight.semibold
|
|
5447
|
+
},
|
|
5448
|
+
cell: {
|
|
5449
|
+
fontSize: "text-sm",
|
|
5450
|
+
// Maps to fontSize.sm[0]
|
|
5451
|
+
fontWeight: "font-normal"
|
|
5452
|
+
// Maps to fontWeight.normal
|
|
5453
|
+
}
|
|
5454
|
+
},
|
|
5455
|
+
/**
|
|
5456
|
+
* Color tokens for table states
|
|
5457
|
+
* Uses semantic color tokens
|
|
5458
|
+
*/
|
|
5459
|
+
colors: {
|
|
5460
|
+
border: "border-border",
|
|
5461
|
+
// Border color
|
|
5462
|
+
rowHover: "hover:bg-muted/50",
|
|
5463
|
+
// Row hover background
|
|
5464
|
+
rowSelected: "bg-muted"
|
|
5465
|
+
// Selected row background
|
|
5466
|
+
},
|
|
5467
|
+
/**
|
|
5468
|
+
* Border tokens for table
|
|
5469
|
+
*/
|
|
5470
|
+
border: {
|
|
5471
|
+
bottom: "border-b"
|
|
5472
|
+
// Border bottom for rows and headers
|
|
5473
|
+
},
|
|
5474
|
+
/**
|
|
5475
|
+
* Layout tokens for table container and base styles
|
|
5476
|
+
*/
|
|
5477
|
+
layout: {
|
|
5478
|
+
overflow: "overflow-x-auto",
|
|
5479
|
+
// Table container overflow
|
|
5480
|
+
table: "w-full border-collapse"
|
|
5481
|
+
// Table base styles
|
|
5482
|
+
},
|
|
5483
|
+
/**
|
|
5484
|
+
* Sticky header tokens
|
|
5485
|
+
* For sticky header positioning and styling
|
|
5486
|
+
*/
|
|
5487
|
+
sticky: {
|
|
5488
|
+
header: "sticky top-0 z-10 bg-background"
|
|
5489
|
+
// Sticky header styles
|
|
5490
|
+
},
|
|
5491
|
+
/**
|
|
5492
|
+
* Expandable row tokens
|
|
5493
|
+
* For expandable content styling
|
|
5494
|
+
*/
|
|
5495
|
+
expandable: {
|
|
5496
|
+
padding: "p-md",
|
|
5497
|
+
// Expandable content padding - maps to semanticSpacing.md
|
|
5498
|
+
container: "p-0",
|
|
5499
|
+
// Expandable container padding
|
|
5500
|
+
transition: "overflow-hidden transition-all duration-normal ease-in-out",
|
|
5501
|
+
// Transition styles
|
|
5502
|
+
expanded: "max-h-[100vh] opacity-100",
|
|
5503
|
+
// Expanded state
|
|
5504
|
+
collapsed: "max-h-0 opacity-0",
|
|
5505
|
+
// Collapsed state
|
|
5506
|
+
cursor: "cursor-pointer",
|
|
5507
|
+
// Cursor for expandable rows
|
|
5508
|
+
content: {
|
|
5509
|
+
expanded: "block",
|
|
5510
|
+
// Expanded content display
|
|
5511
|
+
collapsed: "hidden"
|
|
5512
|
+
// Collapsed content display
|
|
5513
|
+
}
|
|
5514
|
+
},
|
|
5515
|
+
/**
|
|
5516
|
+
* Loading state tokens
|
|
5517
|
+
* For loading state cell styling
|
|
5518
|
+
*/
|
|
5519
|
+
loading: {
|
|
5520
|
+
cellPadding: "p-sm",
|
|
5521
|
+
// Loading state cell padding - maps to semanticSpacing.sm
|
|
5522
|
+
skeletonWidth: "w-full"
|
|
5523
|
+
// Skeleton width
|
|
5524
|
+
},
|
|
5525
|
+
/**
|
|
5526
|
+
* Empty state tokens
|
|
5527
|
+
* For empty state cell styling
|
|
5528
|
+
*/
|
|
5529
|
+
empty: {
|
|
5530
|
+
padding: "p-8"
|
|
5531
|
+
// Empty state padding - maps to semanticSpacing.2xl
|
|
5532
|
+
},
|
|
5533
|
+
/**
|
|
5534
|
+
* Sortable header tokens
|
|
5535
|
+
* For sortable header styling and interactions
|
|
5536
|
+
*/
|
|
5537
|
+
sortable: {
|
|
5538
|
+
hover: "hover:bg-muted/50",
|
|
5539
|
+
// Sortable header hover
|
|
5540
|
+
gap: "gap-2",
|
|
5541
|
+
// Sort icon gap - maps to semanticSpacing.sm
|
|
5542
|
+
cursor: "cursor-pointer select-none",
|
|
5543
|
+
// Sortable cursor
|
|
5544
|
+
container: "flex items-center",
|
|
5545
|
+
// Sortable header container
|
|
5546
|
+
icon: {
|
|
5547
|
+
base: "inline-flex size-4 items-center text-muted-foreground transition-transform",
|
|
5548
|
+
// Sort icon base styles
|
|
5549
|
+
rotated: "rotate-180",
|
|
5550
|
+
// Rotated state (descending)
|
|
5551
|
+
inactive: "opacity-30"
|
|
5552
|
+
// Inactive state (no sort)
|
|
5553
|
+
}
|
|
5554
|
+
}
|
|
5555
|
+
};
|
|
5556
|
+
|
|
5557
|
+
// src/tokens/components/data-list.ts
|
|
5558
|
+
var DATA_LIST_TOKENS = {
|
|
5559
|
+
/**
|
|
5560
|
+
* Spacing tokens for DataList
|
|
5561
|
+
* Maps to semantic spacing tokens
|
|
5562
|
+
*/
|
|
5563
|
+
spacing: {
|
|
5564
|
+
gap: "gap-md"},
|
|
5565
|
+
/**
|
|
5566
|
+
* Label width tokens (for desktop horizontal layout)
|
|
5567
|
+
* Maps to Tailwind width utilities
|
|
5568
|
+
*/
|
|
5569
|
+
labelWidth: {
|
|
5570
|
+
// 96px (6rem) - small label width
|
|
5571
|
+
md: "w-32"},
|
|
5572
|
+
/**
|
|
5573
|
+
* Row padding tokens
|
|
5574
|
+
* Maps to semantic spacing tokens
|
|
5575
|
+
*/
|
|
5576
|
+
rowPadding: {
|
|
5577
|
+
sm: "py-xs",
|
|
5578
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5579
|
+
md: "py-sm",
|
|
5580
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5581
|
+
lg: "py-md"
|
|
5582
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5583
|
+
},
|
|
5584
|
+
/**
|
|
5585
|
+
* Item tokens
|
|
5586
|
+
* For individual DataList item styling
|
|
5587
|
+
*/
|
|
5588
|
+
item: {
|
|
5589
|
+
/**
|
|
5590
|
+
* Border tokens for items
|
|
5591
|
+
*/
|
|
5592
|
+
border: "border-b border-border last:border-0",
|
|
5593
|
+
// Item borders
|
|
5594
|
+
/**
|
|
5595
|
+
* Responsive layout tokens
|
|
5596
|
+
*/
|
|
5597
|
+
layout: {
|
|
5598
|
+
mobile: "flex flex-col",
|
|
5599
|
+
// Mobile layout - vertical
|
|
5600
|
+
desktop: "md:flex-row md:items-center"
|
|
5601
|
+
// Desktop layout - horizontal
|
|
5602
|
+
}
|
|
5603
|
+
},
|
|
5604
|
+
/**
|
|
5605
|
+
* Label tokens
|
|
5606
|
+
* For DataList label styling
|
|
5607
|
+
*/
|
|
5608
|
+
label: {
|
|
5609
|
+
mobile: "mb-1 font-semibold text-foreground",
|
|
5610
|
+
// Mobile label styles
|
|
5611
|
+
desktop: "md:mb-0"
|
|
5612
|
+
// Desktop label margin override
|
|
5613
|
+
},
|
|
5614
|
+
/**
|
|
5615
|
+
* Value tokens
|
|
5616
|
+
* For DataList value styling
|
|
5617
|
+
*/
|
|
5618
|
+
value: {
|
|
5619
|
+
color: "text-muted-foreground",
|
|
5620
|
+
// Value text color
|
|
5621
|
+
flex: "flex-1"
|
|
5622
|
+
// Value flex grow
|
|
5623
|
+
}
|
|
5624
|
+
};
|
|
5625
|
+
|
|
5626
|
+
// src/tokens/components/empty-state.ts
|
|
5627
|
+
var EMPTY_STATE_TOKENS = {
|
|
5628
|
+
/**
|
|
5629
|
+
* Spacing tokens for EmptyState
|
|
5630
|
+
* Maps to semantic spacing tokens
|
|
5631
|
+
*/
|
|
5632
|
+
spacing: {
|
|
5633
|
+
// 24px (1.5rem) - container padding - maps to semanticSpacing.lg
|
|
5634
|
+
action: "mt-2"
|
|
5635
|
+
// Action button margin top - maps to semanticSpacing.xs
|
|
5636
|
+
},
|
|
5637
|
+
/**
|
|
5638
|
+
* Icon sizes by variant
|
|
5639
|
+
* Maps to Tailwind size utilities
|
|
5640
|
+
*/
|
|
5641
|
+
icon: {
|
|
5642
|
+
size: {
|
|
5643
|
+
sm: "size-8",
|
|
5644
|
+
// 32px (2rem)
|
|
5645
|
+
md: "size-12",
|
|
5646
|
+
// 48px (3rem)
|
|
5647
|
+
lg: "size-16"
|
|
5648
|
+
// 64px (4rem)
|
|
5649
|
+
},
|
|
5650
|
+
container: "flex items-center justify-center text-muted-foreground"
|
|
5651
|
+
// Icon container styles
|
|
5652
|
+
},
|
|
5653
|
+
/**
|
|
5654
|
+
* Typography tokens for EmptyState
|
|
5655
|
+
* Maps to foundation typography tokens
|
|
5656
|
+
*/
|
|
5657
|
+
typography: {
|
|
5658
|
+
title: {
|
|
5659
|
+
fontSize: "text-lg",
|
|
5660
|
+
// Maps to fontSize.lg[0]
|
|
5661
|
+
fontWeight: "font-semibold",
|
|
5662
|
+
// Maps to fontWeight.semibold
|
|
5663
|
+
color: "text-foreground"
|
|
5664
|
+
// Title text color
|
|
5665
|
+
},
|
|
5666
|
+
description: {
|
|
5667
|
+
fontSize: "text-sm",
|
|
5668
|
+
// Maps to fontSize.sm[0]
|
|
5669
|
+
fontWeight: "font-normal",
|
|
5670
|
+
// Maps to fontWeight.normal
|
|
5671
|
+
color: "text-muted-foreground",
|
|
5672
|
+
// Description text color
|
|
5673
|
+
maxWidth: "max-w-md"
|
|
5674
|
+
// Maximum width for description
|
|
5675
|
+
}
|
|
5676
|
+
},
|
|
5677
|
+
/**
|
|
5678
|
+
* Alignment tokens
|
|
5679
|
+
* For text alignment in EmptyState
|
|
5680
|
+
*/
|
|
5681
|
+
alignment: {
|
|
5682
|
+
center: "text-center"}
|
|
5683
|
+
};
|
|
5684
|
+
|
|
5685
|
+
// src/tokens/motion/v2.ts
|
|
5686
|
+
var motionV2Durations = {
|
|
5687
|
+
fast: "150ms",
|
|
5688
|
+
// Quick interactions
|
|
5689
|
+
normal: "250ms",
|
|
5690
|
+
// Default transitions
|
|
5691
|
+
slow: "350ms",
|
|
5692
|
+
// Emphasized animations
|
|
5693
|
+
reduced: "0ms"
|
|
5694
|
+
// For prefers-reduced-motion
|
|
5695
|
+
};
|
|
5696
|
+
var motionV2Easings = {
|
|
5697
|
+
soft: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
5698
|
+
// Gentle, smooth
|
|
5699
|
+
standard: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
5700
|
+
// Material Design standard
|
|
5701
|
+
emphasized: "cubic-bezier(0.2, 0, 0, 1)"
|
|
5702
|
+
// Strong, decisive
|
|
5703
|
+
};
|
|
5704
|
+
var motionV2Transitions = {
|
|
5050
5705
|
fast: `${motionV2Durations.fast} ${motionV2Easings.standard}`,
|
|
5051
5706
|
normal: `${motionV2Durations.normal} ${motionV2Easings.standard}`,
|
|
5052
5707
|
slow: `${motionV2Durations.slow} ${motionV2Easings.emphasized}`,
|
|
@@ -5294,54 +5949,54 @@ var transitions = {
|
|
|
5294
5949
|
var keyframes = {
|
|
5295
5950
|
// Fade animations
|
|
5296
5951
|
fadeIn: {
|
|
5297
|
-
from: { opacity: 0 },
|
|
5298
|
-
to: { opacity: 1 }
|
|
5952
|
+
from: { opacity: "0" },
|
|
5953
|
+
to: { opacity: "1" }
|
|
5299
5954
|
},
|
|
5300
5955
|
fadeOut: {
|
|
5301
|
-
from: { opacity: 1 },
|
|
5302
|
-
to: { opacity: 0 }
|
|
5956
|
+
from: { opacity: "1" },
|
|
5957
|
+
to: { opacity: "0" }
|
|
5303
5958
|
},
|
|
5304
5959
|
// Slide animations
|
|
5305
5960
|
slideInUp: {
|
|
5306
|
-
from: { transform: "translateY(100%)", opacity: 0 },
|
|
5307
|
-
to: { transform: "translateY(0)", opacity: 1 }
|
|
5961
|
+
from: { transform: "translateY(100%)", opacity: "0" },
|
|
5962
|
+
to: { transform: "translateY(0)", opacity: "1" }
|
|
5308
5963
|
},
|
|
5309
5964
|
slideInDown: {
|
|
5310
|
-
from: { transform: "translateY(-100%)", opacity: 0 },
|
|
5311
|
-
to: { transform: "translateY(0)", opacity: 1 }
|
|
5965
|
+
from: { transform: "translateY(-100%)", opacity: "0" },
|
|
5966
|
+
to: { transform: "translateY(0)", opacity: "1" }
|
|
5312
5967
|
},
|
|
5313
5968
|
slideInLeft: {
|
|
5314
|
-
from: { transform: "translateX(-100%)", opacity: 0 },
|
|
5315
|
-
to: { transform: "translateX(0)", opacity: 1 }
|
|
5969
|
+
from: { transform: "translateX(-100%)", opacity: "0" },
|
|
5970
|
+
to: { transform: "translateX(0)", opacity: "1" }
|
|
5316
5971
|
},
|
|
5317
5972
|
slideInRight: {
|
|
5318
|
-
from: { transform: "translateX(100%)", opacity: 0 },
|
|
5319
|
-
to: { transform: "translateX(0)", opacity: 1 }
|
|
5973
|
+
from: { transform: "translateX(100%)", opacity: "0" },
|
|
5974
|
+
to: { transform: "translateX(0)", opacity: "1" }
|
|
5320
5975
|
},
|
|
5321
5976
|
slideOutUp: {
|
|
5322
|
-
from: { transform: "translateY(0)", opacity: 1 },
|
|
5323
|
-
to: { transform: "translateY(-100%)", opacity: 0 }
|
|
5977
|
+
from: { transform: "translateY(0)", opacity: "1" },
|
|
5978
|
+
to: { transform: "translateY(-100%)", opacity: "0" }
|
|
5324
5979
|
},
|
|
5325
5980
|
slideOutDown: {
|
|
5326
|
-
from: { transform: "translateY(0)", opacity: 1 },
|
|
5327
|
-
to: { transform: "translateY(100%)", opacity: 0 }
|
|
5981
|
+
from: { transform: "translateY(0)", opacity: "1" },
|
|
5982
|
+
to: { transform: "translateY(100%)", opacity: "0" }
|
|
5328
5983
|
},
|
|
5329
5984
|
slideOutLeft: {
|
|
5330
|
-
from: { transform: "translateX(0)", opacity: 1 },
|
|
5331
|
-
to: { transform: "translateX(-100%)", opacity: 0 }
|
|
5985
|
+
from: { transform: "translateX(0)", opacity: "1" },
|
|
5986
|
+
to: { transform: "translateX(-100%)", opacity: "0" }
|
|
5332
5987
|
},
|
|
5333
5988
|
slideOutRight: {
|
|
5334
|
-
from: { transform: "translateX(0)", opacity: 1 },
|
|
5335
|
-
to: { transform: "translateX(100%)", opacity: 0 }
|
|
5989
|
+
from: { transform: "translateX(0)", opacity: "1" },
|
|
5990
|
+
to: { transform: "translateX(100%)", opacity: "0" }
|
|
5336
5991
|
},
|
|
5337
5992
|
// Scale animations
|
|
5338
5993
|
scaleIn: {
|
|
5339
|
-
from: { transform: "scale(0.95)", opacity: 0 },
|
|
5340
|
-
to: { transform: "scale(1)", opacity: 1 }
|
|
5994
|
+
from: { transform: "scale(0.95)", opacity: "0" },
|
|
5995
|
+
to: { transform: "scale(1)", opacity: "1" }
|
|
5341
5996
|
},
|
|
5342
5997
|
scaleOut: {
|
|
5343
|
-
from: { transform: "scale(1)", opacity: 1 },
|
|
5344
|
-
to: { transform: "scale(0.95)", opacity: 0 }
|
|
5998
|
+
from: { transform: "scale(1)", opacity: "1" },
|
|
5999
|
+
to: { transform: "scale(0.95)", opacity: "0" }
|
|
5345
6000
|
},
|
|
5346
6001
|
scaleUp: {
|
|
5347
6002
|
from: { transform: "scale(1)" },
|
|
@@ -5362,8 +6017,8 @@ var keyframes = {
|
|
|
5362
6017
|
},
|
|
5363
6018
|
// Pulse and bounce
|
|
5364
6019
|
pulse: {
|
|
5365
|
-
"0%, 100%": { opacity: 1 },
|
|
5366
|
-
"50%": { opacity: 0.5 }
|
|
6020
|
+
"0%, 100%": { opacity: "1" },
|
|
6021
|
+
"50%": { opacity: "0.5" }
|
|
5367
6022
|
},
|
|
5368
6023
|
bounce: {
|
|
5369
6024
|
"0%, 100%": {
|
|
@@ -5385,7 +6040,7 @@ var keyframes = {
|
|
|
5385
6040
|
ping: {
|
|
5386
6041
|
"75%, 100%": {
|
|
5387
6042
|
transform: "scale(2)",
|
|
5388
|
-
opacity: 0
|
|
6043
|
+
opacity: "0"
|
|
5389
6044
|
}
|
|
5390
6045
|
},
|
|
5391
6046
|
// Accordion animations (for Radix UI)
|
|
@@ -6344,41 +6999,179 @@ var tokenSystemSummary = {
|
|
|
6344
6999
|
|
|
6345
7000
|
// src/tokens/theme.ts
|
|
6346
7001
|
var UI_COLORS = tailwindThemeColors;
|
|
7002
|
+
var FORBIDDEN_PATTERNS = [
|
|
7003
|
+
// Raw color utilities (bg-red-500, text-blue-600, etc.)
|
|
7004
|
+
// These are always forbidden as they bypass the color token system
|
|
7005
|
+
/\b(bg|text|border|ring|outline)-(red|blue|green|yellow|purple|pink|indigo|gray|slate|zinc|neutral|stone|orange|amber|emerald|teal|cyan|sky|violet|fuchsia|rose)-\d+/,
|
|
7006
|
+
// Raw spacing utilities with arbitrary numbers (p-4, m-2, gap-3, etc.)
|
|
7007
|
+
// Allow semantic spacing tokens (px-sm, py-md, etc.) which use token names
|
|
7008
|
+
/\b(p|m|px|py|pt|pb|pl|pr|mx|my|mt|mb|ml|mr|gap|space-[xy])-(\d+|\[)/,
|
|
7009
|
+
// Raw size utilities with arbitrary numbers (w-4, h-6, etc.)
|
|
7010
|
+
// Allow semantic size tokens (h-8, w-9, etc.) which are standard design system values
|
|
7011
|
+
// Only flag arbitrary values like w-[123px] or h-[calc(...)]
|
|
7012
|
+
/\b(w|h|min-w|min-h|max-w|max-h)-\[/
|
|
7013
|
+
];
|
|
7014
|
+
function validateTokenUsage(classes, context) {
|
|
7015
|
+
if (process.env.NODE_ENV === "production") {
|
|
7016
|
+
return;
|
|
7017
|
+
}
|
|
7018
|
+
for (const pattern of FORBIDDEN_PATTERNS) {
|
|
7019
|
+
if (pattern.test(classes)) {
|
|
7020
|
+
console.warn(
|
|
7021
|
+
`[tokenCVA] Potential hardcoded Tailwind utility detected in ${context}:
|
|
7022
|
+
"${classes}"
|
|
7023
|
+
Pattern: ${pattern}
|
|
7024
|
+
Please use token-based utilities instead (e.g., from component tokens).`
|
|
7025
|
+
);
|
|
7026
|
+
}
|
|
7027
|
+
}
|
|
7028
|
+
}
|
|
7029
|
+
function validateVariantConfig(value, path, visited = /* @__PURE__ */ new Set()) {
|
|
7030
|
+
if (value === void 0 || value === null) {
|
|
7031
|
+
return;
|
|
7032
|
+
}
|
|
7033
|
+
const key = `${path}-${String(value)}`;
|
|
7034
|
+
if (visited.has(key)) {
|
|
7035
|
+
return;
|
|
7036
|
+
}
|
|
7037
|
+
visited.add(key);
|
|
7038
|
+
if (typeof value === "string") {
|
|
7039
|
+
validateTokenUsage(value, path);
|
|
7040
|
+
} else if (Array.isArray(value)) {
|
|
7041
|
+
value.forEach((item, index2) => {
|
|
7042
|
+
validateVariantConfig(item, `${path}[${index2}]`, visited);
|
|
7043
|
+
});
|
|
7044
|
+
} else if (typeof value === "object") {
|
|
7045
|
+
Object.entries(value).forEach(([key2, val]) => {
|
|
7046
|
+
validateVariantConfig(val, `${path}.${key2}`, visited);
|
|
7047
|
+
});
|
|
7048
|
+
}
|
|
7049
|
+
}
|
|
7050
|
+
function tokenCVA(config) {
|
|
7051
|
+
if (process.env.NODE_ENV !== "production") {
|
|
7052
|
+
if (config.base) {
|
|
7053
|
+
validateVariantConfig(config.base, "base");
|
|
7054
|
+
}
|
|
7055
|
+
if (config.variants) {
|
|
7056
|
+
Object.entries(config.variants).forEach(([variantKey, variantValues]) => {
|
|
7057
|
+
Object.entries(variantValues).forEach(([valueKey, value]) => {
|
|
7058
|
+
validateVariantConfig(value, `variants.${variantKey}.${valueKey}`);
|
|
7059
|
+
});
|
|
7060
|
+
});
|
|
7061
|
+
}
|
|
7062
|
+
if (config.compoundVariants) {
|
|
7063
|
+
config.compoundVariants.forEach((compound, index2) => {
|
|
7064
|
+
if (compound.class) {
|
|
7065
|
+
validateVariantConfig(compound.class, `compoundVariants[${index2}].class`);
|
|
7066
|
+
}
|
|
7067
|
+
if (compound.className) {
|
|
7068
|
+
validateVariantConfig(compound.className, `compoundVariants[${index2}].className`);
|
|
7069
|
+
}
|
|
7070
|
+
});
|
|
7071
|
+
}
|
|
7072
|
+
}
|
|
7073
|
+
return cva(config.base, {
|
|
7074
|
+
variants: config.variants,
|
|
7075
|
+
compoundVariants: config.compoundVariants,
|
|
7076
|
+
defaultVariants: config.defaultVariants
|
|
7077
|
+
});
|
|
7078
|
+
}
|
|
6347
7079
|
function cn(...inputs) {
|
|
6348
7080
|
return twMerge(clsx(inputs));
|
|
6349
7081
|
}
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6355
|
-
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
|
|
6360
|
-
|
|
6361
|
-
}
|
|
6362
|
-
|
|
6363
|
-
|
|
6364
|
-
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
}
|
|
7082
|
+
function formatDate(date) {
|
|
7083
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
7084
|
+
month: "long",
|
|
7085
|
+
day: "numeric",
|
|
7086
|
+
year: "numeric"
|
|
7087
|
+
}).format(new Date(date));
|
|
7088
|
+
}
|
|
7089
|
+
var buttonVariants = tokenCVA({
|
|
7090
|
+
base: `inline-flex items-center justify-center whitespace-nowrap ${BUTTON_TOKENS.radius} font-medium ${BUTTON_TOKENS.transition.colors} ${BUTTON_TOKENS.state.focus.outline} ${BUTTON_TOKENS.state.focus.ring} ${BUTTON_TOKENS.state.disabled.cursor} ${BUTTON_TOKENS.state.disabled.pointerEvents} [&_svg]:pointer-events-none [&_svg]:shrink-0`,
|
|
7091
|
+
variants: {
|
|
7092
|
+
variant: {
|
|
7093
|
+
primary: `${BUTTON_TOKENS.variant.primary.background} ${BUTTON_TOKENS.variant.primary.text} ${BUTTON_TOKENS.shadow.primary} ${BUTTON_TOKENS.variant.primary.hover} ${BUTTON_TOKENS.variant.primary.active} ${BUTTON_TOKENS.variant.primary.focus} ${BUTTON_TOKENS.variant.primary.disabled.background} ${BUTTON_TOKENS.variant.primary.disabled.text}`,
|
|
7094
|
+
secondary: `${BUTTON_TOKENS.variant.secondary.background} ${BUTTON_TOKENS.variant.secondary.text} ${BUTTON_TOKENS.shadow.default} ${BUTTON_TOKENS.variant.secondary.hover} ${BUTTON_TOKENS.variant.secondary.active} ${BUTTON_TOKENS.variant.secondary.disabled.background} ${BUTTON_TOKENS.variant.secondary.disabled.text}`,
|
|
7095
|
+
accent: `${BUTTON_TOKENS.variant.accent.background} ${BUTTON_TOKENS.variant.accent.text} ${BUTTON_TOKENS.shadow.default} ${BUTTON_TOKENS.variant.accent.hover} ${BUTTON_TOKENS.variant.accent.active} ${BUTTON_TOKENS.variant.accent.disabled.background} ${BUTTON_TOKENS.variant.accent.disabled.text}`,
|
|
7096
|
+
outline: `${BUTTON_TOKENS.variant.outline.border} ${BUTTON_TOKENS.variant.outline.background} ${BUTTON_TOKENS.variant.outline.text} ${BUTTON_TOKENS.shadow.default} ${BUTTON_TOKENS.variant.outline.hover.background} ${BUTTON_TOKENS.variant.outline.hover.text} ${BUTTON_TOKENS.variant.outline.hover.border} ${BUTTON_TOKENS.variant.outline.active.background} ${BUTTON_TOKENS.variant.outline.active.text} ${BUTTON_TOKENS.variant.outline.active.border} ${BUTTON_TOKENS.variant.outline.disabled.background} ${BUTTON_TOKENS.variant.outline.disabled.text} ${BUTTON_TOKENS.variant.outline.disabled.border}`,
|
|
7097
|
+
ghost: `${BUTTON_TOKENS.variant.ghost.background} ${BUTTON_TOKENS.variant.ghost.text} ${BUTTON_TOKENS.variant.ghost.hover.background} ${BUTTON_TOKENS.variant.ghost.hover.text} ${BUTTON_TOKENS.variant.ghost.active.background} ${BUTTON_TOKENS.variant.ghost.active.text} ${BUTTON_TOKENS.variant.ghost.disabled.background} ${BUTTON_TOKENS.variant.ghost.disabled.text}`,
|
|
7098
|
+
destructive: `${BUTTON_TOKENS.variant.destructive.background} ${BUTTON_TOKENS.variant.destructive.text} ${BUTTON_TOKENS.shadow.default} ${BUTTON_TOKENS.variant.destructive.hover} ${BUTTON_TOKENS.variant.destructive.active} ${BUTTON_TOKENS.variant.destructive.disabled.background} ${BUTTON_TOKENS.variant.destructive.disabled.text}`
|
|
6368
7099
|
},
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
7100
|
+
size: {
|
|
7101
|
+
sm: `${BUTTON_TOKENS.height.sm} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.sm} ${BUTTON_TOKENS.padding.vertical.sm} ${BUTTON_TOKENS.fontSize.sm} ${BUTTON_TOKENS.gap.sm} [&_svg]:${BUTTON_TOKENS.iconSize.sm}`,
|
|
7102
|
+
md: `${BUTTON_TOKENS.height.md} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.md} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.md} ${BUTTON_TOKENS.gap.md} [&_svg]:${BUTTON_TOKENS.iconSize.md}`,
|
|
7103
|
+
lg: `${BUTTON_TOKENS.height.lg} ${BUTTON_TOKENS.radius} ${BUTTON_TOKENS.padding.horizontal.lg} ${BUTTON_TOKENS.padding.vertical.md} ${BUTTON_TOKENS.fontSize.lg} ${BUTTON_TOKENS.gap.lg} [&_svg]:${BUTTON_TOKENS.iconSize.lg}`,
|
|
7104
|
+
icon: `${BUTTON_TOKENS.height.icon} ${BUTTON_TOKENS.width.icon} [&_svg]:${BUTTON_TOKENS.iconSize.icon}`
|
|
6372
7105
|
}
|
|
7106
|
+
},
|
|
7107
|
+
defaultVariants: {
|
|
7108
|
+
variant: "primary",
|
|
7109
|
+
size: "md"
|
|
6373
7110
|
}
|
|
6374
|
-
);
|
|
7111
|
+
});
|
|
6375
7112
|
var Button = React49.forwardRef(
|
|
6376
7113
|
({ className, variant, size: size3, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
|
|
6377
7114
|
const Comp = asChild ? Slot : "button";
|
|
6378
|
-
|
|
6379
|
-
|
|
7115
|
+
const finalClassName = cn(buttonVariants({ variant, size: size3, className }));
|
|
7116
|
+
const iconSizeMap = {
|
|
7117
|
+
"size-3.5": "[&_svg]:w-3.5 [&_svg]:h-3.5",
|
|
7118
|
+
"size-4": "[&_svg]:w-4 [&_svg]:h-4",
|
|
7119
|
+
"size-5": "[&_svg]:w-5 [&_svg]:h-5"
|
|
7120
|
+
};
|
|
7121
|
+
const iconSizeToken = size3 ? BUTTON_TOKENS.iconSize[size3] : BUTTON_TOKENS.iconSize.md;
|
|
7122
|
+
const iconSizeClass = iconSizeMap[iconSizeToken] || "[&_svg]:w-4 [&_svg]:h-4";
|
|
7123
|
+
if (typeof window !== "undefined" && variant === "primary") {
|
|
7124
|
+
const hasHoverClass = finalClassName.includes(
|
|
7125
|
+
"hover:bg-[hsl(var(--button-primary-hover-bg))]"
|
|
7126
|
+
);
|
|
7127
|
+
const hasActiveClass = finalClassName.includes(
|
|
7128
|
+
"active:bg-[hsl(var(--button-primary-active-bg))]"
|
|
7129
|
+
);
|
|
7130
|
+
fetch("http://127.0.0.1:7243/ingest/ff5d1e20-0815-4ca0-af82-fcbd3cfa35b1", {
|
|
7131
|
+
method: "POST",
|
|
7132
|
+
headers: { "Content-Type": "application/json" },
|
|
7133
|
+
body: JSON.stringify({
|
|
7134
|
+
location: "button.tsx:137",
|
|
7135
|
+
message: "Button className check (State Authority Contract)",
|
|
7136
|
+
data: {
|
|
7137
|
+
variant,
|
|
7138
|
+
size: size3,
|
|
7139
|
+
className: finalClassName,
|
|
7140
|
+
hasHoverClass,
|
|
7141
|
+
hasActiveClass,
|
|
7142
|
+
hoverClassInString: finalClassName.includes("hover"),
|
|
7143
|
+
allClasses: finalClassName.split(" ").filter((c) => c.includes("hover") || c.includes("active") || c.includes("disabled"))
|
|
7144
|
+
},
|
|
7145
|
+
timestamp: Date.now(),
|
|
7146
|
+
sessionId: "debug-session",
|
|
7147
|
+
runId: "state-authority-contract",
|
|
7148
|
+
hypothesisId: "A"
|
|
7149
|
+
})
|
|
7150
|
+
}).catch(() => {
|
|
7151
|
+
});
|
|
7152
|
+
}
|
|
7153
|
+
return /* @__PURE__ */ jsxs(Comp, { className: finalClassName, ref, ...props, children: [
|
|
7154
|
+
leftIcon && /* @__PURE__ */ jsx(
|
|
7155
|
+
"span",
|
|
7156
|
+
{
|
|
7157
|
+
className: cn(
|
|
7158
|
+
"pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
|
|
7159
|
+
iconSizeClass
|
|
7160
|
+
),
|
|
7161
|
+
children: leftIcon
|
|
7162
|
+
}
|
|
7163
|
+
),
|
|
6380
7164
|
children,
|
|
6381
|
-
rightIcon && /* @__PURE__ */ jsx(
|
|
7165
|
+
rightIcon && /* @__PURE__ */ jsx(
|
|
7166
|
+
"span",
|
|
7167
|
+
{
|
|
7168
|
+
className: cn(
|
|
7169
|
+
"pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
|
|
7170
|
+
iconSizeClass
|
|
7171
|
+
),
|
|
7172
|
+
children: rightIcon
|
|
7173
|
+
}
|
|
7174
|
+
)
|
|
6382
7175
|
] });
|
|
6383
7176
|
}
|
|
6384
7177
|
);
|
|
@@ -6473,14 +7266,14 @@ Alert.displayName = "Alert";
|
|
|
6473
7266
|
var bodyVariants = cva("font-sans text-foreground", {
|
|
6474
7267
|
variants: {
|
|
6475
7268
|
size: {
|
|
6476
|
-
md:
|
|
6477
|
-
lg:
|
|
7269
|
+
md: `${TEXT_TOKENS.fontSize.md} ${TEXT_TOKENS.lineHeight.relaxed} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7270
|
+
lg: `${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.lineHeight.relaxed} ${TEXT_TOKENS.letterSpacing.normal}`
|
|
6478
7271
|
},
|
|
6479
7272
|
weight: {
|
|
6480
|
-
normal:
|
|
6481
|
-
medium:
|
|
6482
|
-
semibold:
|
|
6483
|
-
bold:
|
|
7273
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7274
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7275
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7276
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
6484
7277
|
},
|
|
6485
7278
|
muted: {
|
|
6486
7279
|
true: "text-muted-foreground",
|
|
@@ -6508,22 +7301,31 @@ var Body = React49.forwardRef(
|
|
|
6508
7301
|
}
|
|
6509
7302
|
);
|
|
6510
7303
|
Body.displayName = "Body";
|
|
6511
|
-
var captionVariants = cva(
|
|
6512
|
-
|
|
6513
|
-
|
|
6514
|
-
|
|
6515
|
-
|
|
7304
|
+
var captionVariants = cva(
|
|
7305
|
+
[
|
|
7306
|
+
"font-sans",
|
|
7307
|
+
"text-foreground",
|
|
7308
|
+
TEXT_TOKENS.fontSize.xs,
|
|
7309
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7310
|
+
TEXT_TOKENS.letterSpacing.wide
|
|
7311
|
+
].filter(Boolean).join(" "),
|
|
7312
|
+
{
|
|
7313
|
+
variants: {
|
|
7314
|
+
weight: {
|
|
7315
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7316
|
+
medium: TEXT_TOKENS.fontWeight.medium
|
|
7317
|
+
},
|
|
7318
|
+
muted: {
|
|
7319
|
+
true: "text-muted-foreground",
|
|
7320
|
+
false: ""
|
|
7321
|
+
}
|
|
6516
7322
|
},
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
7323
|
+
defaultVariants: {
|
|
7324
|
+
weight: "normal",
|
|
7325
|
+
muted: true
|
|
6520
7326
|
}
|
|
6521
|
-
},
|
|
6522
|
-
defaultVariants: {
|
|
6523
|
-
weight: "normal",
|
|
6524
|
-
muted: true
|
|
6525
7327
|
}
|
|
6526
|
-
|
|
7328
|
+
);
|
|
6527
7329
|
var Caption = React49.forwardRef(
|
|
6528
7330
|
({ className, weight, muted, as = "span", children, ...props }, ref) => {
|
|
6529
7331
|
const Component = as;
|
|
@@ -6531,11 +7333,7 @@ var Caption = React49.forwardRef(
|
|
|
6531
7333
|
Component,
|
|
6532
7334
|
{
|
|
6533
7335
|
ref,
|
|
6534
|
-
className: cn(
|
|
6535
|
-
"text-xs leading-tight tracking-wide",
|
|
6536
|
-
captionVariants({ weight, muted }),
|
|
6537
|
-
className
|
|
6538
|
-
),
|
|
7336
|
+
className: cn(captionVariants({ weight, muted }), className),
|
|
6539
7337
|
...props,
|
|
6540
7338
|
children
|
|
6541
7339
|
}
|
|
@@ -6543,11 +7341,43 @@ var Caption = React49.forwardRef(
|
|
|
6543
7341
|
}
|
|
6544
7342
|
);
|
|
6545
7343
|
Caption.displayName = "Caption";
|
|
7344
|
+
|
|
7345
|
+
// src/tokens/components/code.ts
|
|
7346
|
+
var CODE_TOKENS = {
|
|
7347
|
+
/**
|
|
7348
|
+
* Background color tokens
|
|
7349
|
+
* Uses semantic color tokens
|
|
7350
|
+
*/
|
|
7351
|
+
background: {
|
|
7352
|
+
muted: "bg-muted"
|
|
7353
|
+
// Muted background for code blocks
|
|
7354
|
+
},
|
|
7355
|
+
/**
|
|
7356
|
+
* Border radius tokens
|
|
7357
|
+
* Maps to foundation borderRadius tokens
|
|
7358
|
+
*/
|
|
7359
|
+
radius: {
|
|
7360
|
+
inline: "rounded",
|
|
7361
|
+
// Small radius for inline code
|
|
7362
|
+
block: "rounded-md"
|
|
7363
|
+
// Medium radius for code blocks
|
|
7364
|
+
},
|
|
7365
|
+
/**
|
|
7366
|
+
* Padding tokens
|
|
7367
|
+
* Maps to foundation spacing tokens
|
|
7368
|
+
*/
|
|
7369
|
+
padding: {
|
|
7370
|
+
inline: "px-xs py-0.5",
|
|
7371
|
+
// 4px horizontal, 4px vertical for inline code
|
|
7372
|
+
block: "p-md"
|
|
7373
|
+
// 16px padding for code blocks
|
|
7374
|
+
}
|
|
7375
|
+
};
|
|
6546
7376
|
var codeVariants = cva("font-mono text-foreground", {
|
|
6547
7377
|
variants: {
|
|
6548
7378
|
variant: {
|
|
6549
|
-
inline:
|
|
6550
|
-
block:
|
|
7379
|
+
inline: `${CODE_TOKENS.radius.inline} ${CODE_TOKENS.background.muted} ${CODE_TOKENS.padding.inline} ${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
7380
|
+
block: `block ${CODE_TOKENS.radius.block} ${CODE_TOKENS.background.muted} ${CODE_TOKENS.padding.block} ${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.semibold}`
|
|
6551
7381
|
},
|
|
6552
7382
|
muted: {
|
|
6553
7383
|
true: "text-muted-foreground",
|
|
@@ -6577,19 +7407,19 @@ Code.displayName = "Code";
|
|
|
6577
7407
|
var displayVariants = cva("font-display text-foreground", {
|
|
6578
7408
|
variants: {
|
|
6579
7409
|
size: {
|
|
6580
|
-
xl:
|
|
6581
|
-
"2xl": "
|
|
6582
|
-
"3xl": "
|
|
6583
|
-
"4xl": "
|
|
7410
|
+
xl: `${TEXT_TOKENS.fontSize.xl} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7411
|
+
"2xl": `${TEXT_TOKENS.fontSize["2xl"]} ${TEXT_TOKENS.lineHeight.tight} ${TEXT_TOKENS.letterSpacing.tight}`,
|
|
7412
|
+
"3xl": `${TEXT_TOKENS.fontSize["3xl"]} ${TEXT_TOKENS.lineHeight.tight} ${TEXT_TOKENS.letterSpacing.tight}`,
|
|
7413
|
+
"4xl": `${TEXT_TOKENS.fontSize["4xl"]} ${TEXT_TOKENS.lineHeight.none} ${TEXT_TOKENS.letterSpacing.tight}`
|
|
6584
7414
|
},
|
|
6585
7415
|
weight: {
|
|
6586
|
-
normal:
|
|
6587
|
-
medium:
|
|
6588
|
-
semibold:
|
|
6589
|
-
bold:
|
|
6590
|
-
},
|
|
6591
|
-
muted: {
|
|
6592
|
-
true: "text-muted-foreground",
|
|
7416
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7417
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7418
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7419
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
7420
|
+
},
|
|
7421
|
+
muted: {
|
|
7422
|
+
true: "text-muted-foreground",
|
|
6593
7423
|
false: ""
|
|
6594
7424
|
}
|
|
6595
7425
|
},
|
|
@@ -6618,149 +7448,87 @@ var Display = React49.forwardRef(
|
|
|
6618
7448
|
}
|
|
6619
7449
|
);
|
|
6620
7450
|
Display.displayName = "Display";
|
|
7451
|
+
var levelConfig = {
|
|
7452
|
+
1: [
|
|
7453
|
+
TEXT_TOKENS.fontSize["5xl"],
|
|
7454
|
+
TEXT_TOKENS.fontWeight.bold,
|
|
7455
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7456
|
+
TEXT_TOKENS.letterSpacing.tight
|
|
7457
|
+
],
|
|
7458
|
+
2: [
|
|
7459
|
+
TEXT_TOKENS.fontSize["4xl"],
|
|
7460
|
+
TEXT_TOKENS.fontWeight.bold,
|
|
7461
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7462
|
+
TEXT_TOKENS.letterSpacing.tight
|
|
7463
|
+
],
|
|
7464
|
+
3: [
|
|
7465
|
+
TEXT_TOKENS.fontSize["3xl"],
|
|
7466
|
+
TEXT_TOKENS.fontWeight.semibold,
|
|
7467
|
+
TEXT_TOKENS.lineHeight.snug,
|
|
7468
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7469
|
+
],
|
|
7470
|
+
4: [
|
|
7471
|
+
TEXT_TOKENS.fontSize["2xl"],
|
|
7472
|
+
TEXT_TOKENS.fontWeight.semibold,
|
|
7473
|
+
TEXT_TOKENS.lineHeight.snug,
|
|
7474
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7475
|
+
],
|
|
7476
|
+
5: [
|
|
7477
|
+
TEXT_TOKENS.fontSize.xl,
|
|
7478
|
+
TEXT_TOKENS.fontWeight.medium,
|
|
7479
|
+
TEXT_TOKENS.lineHeight.normal,
|
|
7480
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7481
|
+
],
|
|
7482
|
+
6: [
|
|
7483
|
+
TEXT_TOKENS.fontSize.lg,
|
|
7484
|
+
TEXT_TOKENS.fontWeight.medium,
|
|
7485
|
+
TEXT_TOKENS.lineHeight.normal,
|
|
7486
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7487
|
+
]
|
|
7488
|
+
};
|
|
7489
|
+
var levelVariants = Object.entries(levelConfig).reduce(
|
|
7490
|
+
(acc, [level, [fontSize2, defaultWeight, lineHeight2, letterSpacing2]]) => {
|
|
7491
|
+
acc[Number(level)] = `${fontSize2} ${defaultWeight} ${lineHeight2} ${letterSpacing2}`;
|
|
7492
|
+
return acc;
|
|
7493
|
+
},
|
|
7494
|
+
{}
|
|
7495
|
+
);
|
|
7496
|
+
var generateWeightVariants = () => {
|
|
7497
|
+
const weights = [
|
|
7498
|
+
"normal",
|
|
7499
|
+
"medium",
|
|
7500
|
+
"semibold",
|
|
7501
|
+
"bold"
|
|
7502
|
+
];
|
|
7503
|
+
const levels = [1, 2, 3, 4, 5, 6];
|
|
7504
|
+
const variants = [];
|
|
7505
|
+
for (const level of levels) {
|
|
7506
|
+
const [fontSize2, , lineHeight2, letterSpacing2] = levelConfig[level];
|
|
7507
|
+
for (const weight of weights) {
|
|
7508
|
+
variants.push({
|
|
7509
|
+
level,
|
|
7510
|
+
weight,
|
|
7511
|
+
class: `${fontSize2} ${TEXT_TOKENS.fontWeight[weight]} ${lineHeight2} ${letterSpacing2}`
|
|
7512
|
+
});
|
|
7513
|
+
}
|
|
7514
|
+
}
|
|
7515
|
+
return variants;
|
|
7516
|
+
};
|
|
6621
7517
|
var headingVariants = cva("font-display text-foreground", {
|
|
6622
7518
|
variants: {
|
|
6623
|
-
level:
|
|
6624
|
-
1: "text-5xl font-bold leading-tight tracking-tight",
|
|
6625
|
-
2: "text-4xl font-bold leading-tight tracking-tight",
|
|
6626
|
-
3: "text-3xl font-semibold leading-snug tracking-normal",
|
|
6627
|
-
4: "text-2xl font-semibold leading-snug tracking-normal",
|
|
6628
|
-
5: "text-xl font-medium leading-normal tracking-normal",
|
|
6629
|
-
6: "text-lg font-medium leading-normal tracking-normal"
|
|
6630
|
-
},
|
|
7519
|
+
level: levelVariants,
|
|
6631
7520
|
weight: {
|
|
6632
|
-
normal:
|
|
6633
|
-
medium:
|
|
6634
|
-
semibold:
|
|
6635
|
-
bold:
|
|
7521
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7522
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7523
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7524
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
6636
7525
|
},
|
|
6637
7526
|
muted: {
|
|
6638
7527
|
true: "text-muted-foreground",
|
|
6639
7528
|
false: ""
|
|
6640
7529
|
}
|
|
6641
7530
|
},
|
|
6642
|
-
compoundVariants:
|
|
6643
|
-
{
|
|
6644
|
-
level: 1,
|
|
6645
|
-
weight: "normal",
|
|
6646
|
-
class: "text-5xl font-normal"
|
|
6647
|
-
},
|
|
6648
|
-
{
|
|
6649
|
-
level: 1,
|
|
6650
|
-
weight: "medium",
|
|
6651
|
-
class: "text-5xl font-medium"
|
|
6652
|
-
},
|
|
6653
|
-
{
|
|
6654
|
-
level: 1,
|
|
6655
|
-
weight: "semibold",
|
|
6656
|
-
class: "text-5xl font-semibold"
|
|
6657
|
-
},
|
|
6658
|
-
{
|
|
6659
|
-
level: 1,
|
|
6660
|
-
weight: "bold",
|
|
6661
|
-
class: "text-5xl font-bold"
|
|
6662
|
-
},
|
|
6663
|
-
{
|
|
6664
|
-
level: 2,
|
|
6665
|
-
weight: "normal",
|
|
6666
|
-
class: "text-4xl font-normal"
|
|
6667
|
-
},
|
|
6668
|
-
{
|
|
6669
|
-
level: 2,
|
|
6670
|
-
weight: "medium",
|
|
6671
|
-
class: "text-4xl font-medium"
|
|
6672
|
-
},
|
|
6673
|
-
{
|
|
6674
|
-
level: 2,
|
|
6675
|
-
weight: "semibold",
|
|
6676
|
-
class: "text-4xl font-semibold"
|
|
6677
|
-
},
|
|
6678
|
-
{
|
|
6679
|
-
level: 2,
|
|
6680
|
-
weight: "bold",
|
|
6681
|
-
class: "text-4xl font-bold"
|
|
6682
|
-
},
|
|
6683
|
-
{
|
|
6684
|
-
level: 3,
|
|
6685
|
-
weight: "normal",
|
|
6686
|
-
class: "text-3xl font-normal"
|
|
6687
|
-
},
|
|
6688
|
-
{
|
|
6689
|
-
level: 3,
|
|
6690
|
-
weight: "medium",
|
|
6691
|
-
class: "text-3xl font-medium"
|
|
6692
|
-
},
|
|
6693
|
-
{
|
|
6694
|
-
level: 3,
|
|
6695
|
-
weight: "semibold",
|
|
6696
|
-
class: "text-3xl font-semibold"
|
|
6697
|
-
},
|
|
6698
|
-
{
|
|
6699
|
-
level: 3,
|
|
6700
|
-
weight: "bold",
|
|
6701
|
-
class: "text-3xl font-bold"
|
|
6702
|
-
},
|
|
6703
|
-
{
|
|
6704
|
-
level: 4,
|
|
6705
|
-
weight: "normal",
|
|
6706
|
-
class: "text-2xl font-normal"
|
|
6707
|
-
},
|
|
6708
|
-
{
|
|
6709
|
-
level: 4,
|
|
6710
|
-
weight: "medium",
|
|
6711
|
-
class: "text-2xl font-medium"
|
|
6712
|
-
},
|
|
6713
|
-
{
|
|
6714
|
-
level: 4,
|
|
6715
|
-
weight: "semibold",
|
|
6716
|
-
class: "text-2xl font-semibold"
|
|
6717
|
-
},
|
|
6718
|
-
{
|
|
6719
|
-
level: 4,
|
|
6720
|
-
weight: "bold",
|
|
6721
|
-
class: "text-2xl font-bold"
|
|
6722
|
-
},
|
|
6723
|
-
{
|
|
6724
|
-
level: 5,
|
|
6725
|
-
weight: "normal",
|
|
6726
|
-
class: "text-xl font-normal"
|
|
6727
|
-
},
|
|
6728
|
-
{
|
|
6729
|
-
level: 5,
|
|
6730
|
-
weight: "medium",
|
|
6731
|
-
class: "text-xl font-medium"
|
|
6732
|
-
},
|
|
6733
|
-
{
|
|
6734
|
-
level: 5,
|
|
6735
|
-
weight: "semibold",
|
|
6736
|
-
class: "text-xl font-semibold"
|
|
6737
|
-
},
|
|
6738
|
-
{
|
|
6739
|
-
level: 5,
|
|
6740
|
-
weight: "bold",
|
|
6741
|
-
class: "text-xl font-bold"
|
|
6742
|
-
},
|
|
6743
|
-
{
|
|
6744
|
-
level: 6,
|
|
6745
|
-
weight: "normal",
|
|
6746
|
-
class: "text-lg font-normal"
|
|
6747
|
-
},
|
|
6748
|
-
{
|
|
6749
|
-
level: 6,
|
|
6750
|
-
weight: "medium",
|
|
6751
|
-
class: "text-lg font-medium"
|
|
6752
|
-
},
|
|
6753
|
-
{
|
|
6754
|
-
level: 6,
|
|
6755
|
-
weight: "semibold",
|
|
6756
|
-
class: "text-lg font-semibold"
|
|
6757
|
-
},
|
|
6758
|
-
{
|
|
6759
|
-
level: 6,
|
|
6760
|
-
weight: "bold",
|
|
6761
|
-
class: "text-lg font-bold"
|
|
6762
|
-
}
|
|
6763
|
-
],
|
|
7531
|
+
compoundVariants: generateWeightVariants(),
|
|
6764
7532
|
defaultVariants: {
|
|
6765
7533
|
level: 1,
|
|
6766
7534
|
muted: false
|
|
@@ -6784,8 +7552,8 @@ Heading.displayName = "Heading";
|
|
|
6784
7552
|
var leadVariants = cva("font-sans text-foreground", {
|
|
6785
7553
|
variants: {
|
|
6786
7554
|
size: {
|
|
6787
|
-
lg:
|
|
6788
|
-
xl:
|
|
7555
|
+
lg: `${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7556
|
+
xl: `${TEXT_TOKENS.fontSize.xl} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`
|
|
6789
7557
|
},
|
|
6790
7558
|
muted: {
|
|
6791
7559
|
true: "text-muted-foreground",
|
|
@@ -6922,7 +7690,7 @@ function getSpacingPx(token) {
|
|
|
6922
7690
|
return 4;
|
|
6923
7691
|
}
|
|
6924
7692
|
var selectTriggerVariants = cva(
|
|
6925
|
-
`flex items-center justify-between outline-none ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed [&>span]:line-clamp-1`,
|
|
7693
|
+
`flex items-center justify-between outline-none ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed [&>span]:line-clamp-1`,
|
|
6926
7694
|
{
|
|
6927
7695
|
variants: {
|
|
6928
7696
|
size: {
|
|
@@ -7381,7 +8149,7 @@ var ModalClose = React49.forwardRef(
|
|
|
7381
8149
|
MODAL_TOKENS.close.radius,
|
|
7382
8150
|
MODAL_TOKENS.close.opacity.default,
|
|
7383
8151
|
MODAL_TOKENS.close.opacity.hover,
|
|
7384
|
-
"ring-offset-background transition-opacity focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",
|
|
8152
|
+
"ring-offset-background transition-opacity focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",
|
|
7385
8153
|
className
|
|
7386
8154
|
),
|
|
7387
8155
|
...props,
|
|
@@ -7973,8 +8741,10 @@ var Input = React49.forwardRef(
|
|
|
7973
8741
|
}
|
|
7974
8742
|
return void 0;
|
|
7975
8743
|
});
|
|
8744
|
+
const baseVariant = getBaseValue(variant);
|
|
8745
|
+
const baseSize = getBaseValue(size3);
|
|
7976
8746
|
const inputClasses = cn(
|
|
7977
|
-
inputVariants({ variant, size:
|
|
8747
|
+
inputVariants({ variant: baseVariant, size: baseSize, state, fullWidth }),
|
|
7978
8748
|
// Add padding for icons if present
|
|
7979
8749
|
iconLeft && INPUT_TOKENS.icon.paddingLeft,
|
|
7980
8750
|
iconRight && INPUT_TOKENS.icon.paddingRight,
|
|
@@ -8312,31 +9082,31 @@ var Radio = React49.forwardRef(
|
|
|
8312
9082
|
);
|
|
8313
9083
|
Radio.displayName = "Radio";
|
|
8314
9084
|
var textareaVariants = cva(
|
|
8315
|
-
`flex min-h-[80px] ${
|
|
9085
|
+
`flex min-h-[80px] ${TEXTAREA_TOKENS.shadow} ${MOTION_TOKENS.transition.colors} disabled:cursor-not-allowed focus-visible:outline-none resize-y`,
|
|
8316
9086
|
{
|
|
8317
9087
|
variants: {
|
|
8318
9088
|
variant: {
|
|
8319
|
-
primary: `${
|
|
8320
|
-
secondary: `${
|
|
8321
|
-
outline: `${
|
|
8322
|
-
ghost: `${
|
|
8323
|
-
destructive: `${
|
|
9089
|
+
primary: `${TEXTAREA_TOKENS.variant.primary.border} ${TEXTAREA_TOKENS.variant.primary.background} ${TEXTAREA_TOKENS.variant.primary.text} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.variant.primary.focus}`,
|
|
9090
|
+
secondary: `${TEXTAREA_TOKENS.variant.secondary.border} ${TEXTAREA_TOKENS.variant.secondary.background} ${TEXTAREA_TOKENS.variant.secondary.text} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.variant.secondary.focus}`,
|
|
9091
|
+
outline: `${TEXTAREA_TOKENS.variant.outline.border} ${TEXTAREA_TOKENS.variant.outline.background} ${TEXTAREA_TOKENS.variant.outline.text} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.variant.outline.focus}`,
|
|
9092
|
+
ghost: `${TEXTAREA_TOKENS.variant.ghost.border} ${TEXTAREA_TOKENS.variant.ghost.background} ${TEXTAREA_TOKENS.variant.ghost.text} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.variant.ghost.focus}`,
|
|
9093
|
+
destructive: `${TEXTAREA_TOKENS.variant.destructive.border} ${TEXTAREA_TOKENS.variant.destructive.background} ${TEXTAREA_TOKENS.variant.destructive.text} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.variant.destructive.focus}`
|
|
8324
9094
|
},
|
|
8325
9095
|
size: {
|
|
8326
|
-
xs: `${
|
|
8327
|
-
sm: `${
|
|
8328
|
-
md: `${
|
|
8329
|
-
lg: `${
|
|
8330
|
-
xl: `${
|
|
9096
|
+
xs: `${TEXTAREA_TOKENS.size.xs.padding.horizontal} ${TEXTAREA_TOKENS.size.xs.padding.vertical} ${TEXTAREA_TOKENS.size.xs.radius} ${TEXTAREA_TOKENS.size.xs.fontSize}`,
|
|
9097
|
+
sm: `${TEXTAREA_TOKENS.size.sm.padding.horizontal} ${TEXTAREA_TOKENS.size.sm.padding.vertical} ${TEXTAREA_TOKENS.size.sm.radius} ${TEXTAREA_TOKENS.size.sm.fontSize}`,
|
|
9098
|
+
md: `${TEXTAREA_TOKENS.size.md.padding.horizontal} ${TEXTAREA_TOKENS.size.md.padding.vertical} ${TEXTAREA_TOKENS.size.md.radius} ${TEXTAREA_TOKENS.size.md.fontSize} ${TEXTAREA_TOKENS.size.md.fontSizeResponsive}`,
|
|
9099
|
+
lg: `${TEXTAREA_TOKENS.size.lg.padding.horizontal} ${TEXTAREA_TOKENS.size.lg.padding.vertical} ${TEXTAREA_TOKENS.size.lg.radius} ${TEXTAREA_TOKENS.size.lg.fontSize}`,
|
|
9100
|
+
xl: `${TEXTAREA_TOKENS.size.xl.padding.horizontal} ${TEXTAREA_TOKENS.size.xl.padding.vertical} ${TEXTAREA_TOKENS.size.xl.radius} ${TEXTAREA_TOKENS.size.xl.fontSize}`
|
|
8331
9101
|
},
|
|
8332
9102
|
state: {
|
|
8333
|
-
default: `${
|
|
8334
|
-
error: `${
|
|
8335
|
-
success: `${
|
|
8336
|
-
disabled: `${
|
|
9103
|
+
default: `${TEXTAREA_TOKENS.state.border.default} ${TEXTAREA_TOKENS.state.background.default} ${TEXTAREA_TOKENS.state.text.default} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.state.border.focus}`,
|
|
9104
|
+
error: `${TEXTAREA_TOKENS.state.border.error} ${TEXTAREA_TOKENS.state.background.default} ${TEXTAREA_TOKENS.state.text.default} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.state.border.focus}`,
|
|
9105
|
+
success: `${TEXTAREA_TOKENS.state.border.success} ${TEXTAREA_TOKENS.state.background.default} ${TEXTAREA_TOKENS.state.text.default} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.state.border.focus}`,
|
|
9106
|
+
disabled: `${TEXTAREA_TOKENS.state.border.disabled} ${TEXTAREA_TOKENS.state.background.disabled} ${TEXTAREA_TOKENS.state.text.default} ${TEXTAREA_TOKENS.state.text.placeholder} ${TEXTAREA_TOKENS.state.text.disabled}`
|
|
8337
9107
|
},
|
|
8338
9108
|
fullWidth: {
|
|
8339
|
-
true:
|
|
9109
|
+
true: TEXTAREA_TOKENS.width.full,
|
|
8340
9110
|
false: ""
|
|
8341
9111
|
}
|
|
8342
9112
|
},
|
|
@@ -8380,7 +9150,7 @@ var Textarea = React49.forwardRef(
|
|
|
8380
9150
|
const currentLength = typeof currentValue === "string" ? currentValue.length : 0;
|
|
8381
9151
|
const shouldShowCounter = showCharacterCount && maxLength !== void 0;
|
|
8382
9152
|
if (shouldShowCounter) {
|
|
8383
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("relative", fullWidth !== false &&
|
|
9153
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("relative", fullWidth !== false && TEXTAREA_TOKENS.width.full), children: [
|
|
8384
9154
|
/* @__PURE__ */ jsx(
|
|
8385
9155
|
"textarea",
|
|
8386
9156
|
{
|
|
@@ -8400,11 +9170,11 @@ var Textarea = React49.forwardRef(
|
|
|
8400
9170
|
{
|
|
8401
9171
|
className: cn(
|
|
8402
9172
|
"absolute",
|
|
8403
|
-
|
|
8404
|
-
|
|
9173
|
+
TEXTAREA_TOKENS.message.position.bottom,
|
|
9174
|
+
TEXTAREA_TOKENS.message.position.right,
|
|
8405
9175
|
TEXT_TOKENS.fontSize.xs,
|
|
8406
|
-
|
|
8407
|
-
currentLength > maxLength &&
|
|
9176
|
+
TEXTAREA_TOKENS.message.color.default,
|
|
9177
|
+
currentLength > maxLength && TEXTAREA_TOKENS.message.color.error
|
|
8408
9178
|
),
|
|
8409
9179
|
children: [
|
|
8410
9180
|
currentLength,
|
|
@@ -8439,45 +9209,6 @@ function shadowToClass(value) {
|
|
|
8439
9209
|
if (!value || value === "none") return void 0;
|
|
8440
9210
|
return `shadow-${value}`;
|
|
8441
9211
|
}
|
|
8442
|
-
function displayToClass(value) {
|
|
8443
|
-
if (!value) return void 0;
|
|
8444
|
-
if (value === "inline") return "inline";
|
|
8445
|
-
if (value === "inline-block") return "inline-block";
|
|
8446
|
-
if (value === "flex") return "flex";
|
|
8447
|
-
if (value === "inline-flex") return "inline-flex";
|
|
8448
|
-
if (value === "grid") return "grid";
|
|
8449
|
-
if (value === "inline-grid") return "inline-grid";
|
|
8450
|
-
if (value === "block") return "block";
|
|
8451
|
-
if (value === "none") return "hidden";
|
|
8452
|
-
return void 0;
|
|
8453
|
-
}
|
|
8454
|
-
function flexDirectionToClass(value) {
|
|
8455
|
-
if (!value) return void 0;
|
|
8456
|
-
if (value === "row") return "flex-row";
|
|
8457
|
-
if (value === "column") return "flex-col";
|
|
8458
|
-
if (value === "row-reverse") return "flex-row-reverse";
|
|
8459
|
-
if (value === "column-reverse") return "flex-col-reverse";
|
|
8460
|
-
return void 0;
|
|
8461
|
-
}
|
|
8462
|
-
function alignToClass(value) {
|
|
8463
|
-
if (!value) return void 0;
|
|
8464
|
-
if (value === "start") return "items-start";
|
|
8465
|
-
if (value === "end") return "items-end";
|
|
8466
|
-
if (value === "center") return "items-center";
|
|
8467
|
-
if (value === "baseline") return "items-baseline";
|
|
8468
|
-
if (value === "stretch") return "items-stretch";
|
|
8469
|
-
return void 0;
|
|
8470
|
-
}
|
|
8471
|
-
function justifyToClass(value) {
|
|
8472
|
-
if (!value) return void 0;
|
|
8473
|
-
if (value === "start") return "justify-start";
|
|
8474
|
-
if (value === "end") return "justify-end";
|
|
8475
|
-
if (value === "center") return "justify-center";
|
|
8476
|
-
if (value === "between") return "justify-between";
|
|
8477
|
-
if (value === "around") return "justify-around";
|
|
8478
|
-
if (value === "evenly") return "justify-evenly";
|
|
8479
|
-
return void 0;
|
|
8480
|
-
}
|
|
8481
9212
|
var Box = React49.forwardRef(
|
|
8482
9213
|
({
|
|
8483
9214
|
as: Component = "div",
|
|
@@ -8495,14 +9226,9 @@ var Box = React49.forwardRef(
|
|
|
8495
9226
|
mr,
|
|
8496
9227
|
mb,
|
|
8497
9228
|
ml,
|
|
8498
|
-
display,
|
|
8499
|
-
flexDirection,
|
|
8500
9229
|
radius,
|
|
8501
9230
|
shadow,
|
|
8502
9231
|
bg,
|
|
8503
|
-
gap,
|
|
8504
|
-
align,
|
|
8505
|
-
justify,
|
|
8506
9232
|
className,
|
|
8507
9233
|
style,
|
|
8508
9234
|
...props
|
|
@@ -8523,7 +9249,6 @@ var Box = React49.forwardRef(
|
|
|
8523
9249
|
const mlValue = getBaseValue2(ml);
|
|
8524
9250
|
const radiusValue = getBaseValue2(radius);
|
|
8525
9251
|
const bgValue = getBaseValue2(bg);
|
|
8526
|
-
const gapValue = getBaseValue2(gap);
|
|
8527
9252
|
const inlineStyles = {
|
|
8528
9253
|
...pValue !== void 0 && { padding: getSpacingCSSVar(String(pValue)) },
|
|
8529
9254
|
...!p && pxValue !== void 0 && {
|
|
@@ -8553,18 +9278,9 @@ var Box = React49.forwardRef(
|
|
|
8553
9278
|
...!m && !mx && mlValue !== void 0 && { marginLeft: getSpacingCSSVar(String(mlValue)) },
|
|
8554
9279
|
...radiusValue !== void 0 && { borderRadius: getRadiusCSSVar(radiusValue) },
|
|
8555
9280
|
...bgValue !== void 0 && { backgroundColor: getColorCSSVar(bgValue) },
|
|
8556
|
-
...gapValue !== void 0 && { gap: getSpacingCSSVar(String(gapValue)) },
|
|
8557
9281
|
...style
|
|
8558
9282
|
};
|
|
8559
9283
|
const classes = cn(
|
|
8560
|
-
// Display
|
|
8561
|
-
displayToClass(display),
|
|
8562
|
-
// Flex direction
|
|
8563
|
-
flexDirectionToClass(flexDirection),
|
|
8564
|
-
// Align
|
|
8565
|
-
alignToClass(align),
|
|
8566
|
-
// Justify
|
|
8567
|
-
justifyToClass(justify),
|
|
8568
9284
|
// Shadow
|
|
8569
9285
|
shadowToClass(shadow),
|
|
8570
9286
|
className
|
|
@@ -8575,18 +9291,46 @@ var Box = React49.forwardRef(
|
|
|
8575
9291
|
}
|
|
8576
9292
|
);
|
|
8577
9293
|
Box.displayName = "Box";
|
|
9294
|
+
function alignToClass(value) {
|
|
9295
|
+
if (!value) return void 0;
|
|
9296
|
+
if (value === "start") return "items-start";
|
|
9297
|
+
if (value === "end") return "items-end";
|
|
9298
|
+
if (value === "center") return "items-center";
|
|
9299
|
+
if (value === "baseline") return "items-baseline";
|
|
9300
|
+
if (value === "stretch") return "items-stretch";
|
|
9301
|
+
return void 0;
|
|
9302
|
+
}
|
|
9303
|
+
function justifyToClass(value) {
|
|
9304
|
+
if (!value) return void 0;
|
|
9305
|
+
if (value === "start") return "justify-start";
|
|
9306
|
+
if (value === "end") return "justify-end";
|
|
9307
|
+
if (value === "center") return "justify-center";
|
|
9308
|
+
if (value === "between") return "justify-between";
|
|
9309
|
+
if (value === "around") return "justify-around";
|
|
9310
|
+
if (value === "evenly") return "justify-evenly";
|
|
9311
|
+
return void 0;
|
|
9312
|
+
}
|
|
8578
9313
|
var Stack = React49.forwardRef(
|
|
8579
|
-
({ direction = "vertical", spacing: spacing2, gap, align, justify, ...props }, ref) => {
|
|
9314
|
+
({ direction = "vertical", spacing: spacing2, gap, align, justify, className, style, ...props }, ref) => {
|
|
8580
9315
|
const gapValue = spacing2 ?? gap;
|
|
9316
|
+
const gapBaseValue = getBaseValue(gapValue);
|
|
9317
|
+
const flexClasses = cn(
|
|
9318
|
+
"flex",
|
|
9319
|
+
direction === "horizontal" ? "flex-row" : "flex-col",
|
|
9320
|
+
alignToClass(align),
|
|
9321
|
+
justifyToClass(justify),
|
|
9322
|
+
className
|
|
9323
|
+
);
|
|
9324
|
+
const inlineStyles = {
|
|
9325
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
9326
|
+
...style
|
|
9327
|
+
};
|
|
8581
9328
|
return /* @__PURE__ */ jsx(
|
|
8582
9329
|
Box,
|
|
8583
9330
|
{
|
|
8584
9331
|
ref,
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
gap: gapValue,
|
|
8588
|
-
align,
|
|
8589
|
-
justify,
|
|
9332
|
+
className: flexClasses,
|
|
9333
|
+
style: Object.keys(inlineStyles).length > 0 ? inlineStyles : void 0,
|
|
8590
9334
|
...props
|
|
8591
9335
|
}
|
|
8592
9336
|
);
|
|
@@ -8697,7 +9441,7 @@ function getFlexBaseValue(value) {
|
|
|
8697
9441
|
}
|
|
8698
9442
|
return value;
|
|
8699
9443
|
}
|
|
8700
|
-
function
|
|
9444
|
+
function flexDirectionToClass(value) {
|
|
8701
9445
|
if (!value) return void 0;
|
|
8702
9446
|
if (value === "row") return "flex-row";
|
|
8703
9447
|
if (value === "column") return "flex-col";
|
|
@@ -8750,8 +9494,10 @@ var Flex = React49.forwardRef(
|
|
|
8750
9494
|
const alignValue = getFlexBaseValue(align);
|
|
8751
9495
|
const justifyValue = getFlexBaseValue(justify);
|
|
8752
9496
|
const basisValue = getFlexBaseValue(basis);
|
|
9497
|
+
const gapBaseValue = getBaseValue(gap);
|
|
8753
9498
|
const flexClasses = cn(
|
|
8754
|
-
|
|
9499
|
+
"flex",
|
|
9500
|
+
flexDirectionToClass(directionValue),
|
|
8755
9501
|
flexWrapToClass(wrapValue),
|
|
8756
9502
|
growToClass(grow),
|
|
8757
9503
|
shrinkToClass(shrink),
|
|
@@ -8770,15 +9516,13 @@ var Flex = React49.forwardRef(
|
|
|
8770
9516
|
})();
|
|
8771
9517
|
const flexStyle = {
|
|
8772
9518
|
...flexBasisCSS ? { flexBasis: flexBasisCSS } : {},
|
|
9519
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
8773
9520
|
...style
|
|
8774
9521
|
};
|
|
8775
9522
|
return /* @__PURE__ */ jsx(
|
|
8776
9523
|
Box,
|
|
8777
9524
|
{
|
|
8778
9525
|
ref,
|
|
8779
|
-
display: "flex",
|
|
8780
|
-
flexDirection: directionValue,
|
|
8781
|
-
gap,
|
|
8782
9526
|
className: flexClasses,
|
|
8783
9527
|
style: Object.keys(flexStyle).length > 0 ? flexStyle : void 0,
|
|
8784
9528
|
...props
|
|
@@ -8845,7 +9589,22 @@ function justifyToClass3(value) {
|
|
|
8845
9589
|
return void 0;
|
|
8846
9590
|
}
|
|
8847
9591
|
var Grid = React49.forwardRef(
|
|
8848
|
-
({
|
|
9592
|
+
({
|
|
9593
|
+
cols,
|
|
9594
|
+
sm,
|
|
9595
|
+
md,
|
|
9596
|
+
lg,
|
|
9597
|
+
xl,
|
|
9598
|
+
"2xl": xl2,
|
|
9599
|
+
rows,
|
|
9600
|
+
gap,
|
|
9601
|
+
flow,
|
|
9602
|
+
align,
|
|
9603
|
+
justify,
|
|
9604
|
+
className,
|
|
9605
|
+
style,
|
|
9606
|
+
...props
|
|
9607
|
+
}, ref) => {
|
|
8849
9608
|
let colsValue = cols;
|
|
8850
9609
|
if (sm || md || lg || xl || xl2) {
|
|
8851
9610
|
if (cols !== void 0 && typeof cols !== "object") {
|
|
@@ -8914,23 +9673,25 @@ var Grid = React49.forwardRef(
|
|
|
8914
9673
|
justifyToClass3(justifyValue),
|
|
8915
9674
|
className
|
|
8916
9675
|
);
|
|
8917
|
-
|
|
9676
|
+
const gapBaseValue = gap ? getBaseValue(gap) : void 0;
|
|
9677
|
+
const gridStyle = {
|
|
9678
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
9679
|
+
...style
|
|
9680
|
+
};
|
|
9681
|
+
return /* @__PURE__ */ jsx(
|
|
9682
|
+
Box,
|
|
9683
|
+
{
|
|
9684
|
+
ref,
|
|
9685
|
+
className: cn("grid", gridClasses),
|
|
9686
|
+
style: Object.keys(gridStyle).length > 0 ? gridStyle : void 0,
|
|
9687
|
+
...props
|
|
9688
|
+
}
|
|
9689
|
+
);
|
|
8918
9690
|
}
|
|
8919
9691
|
);
|
|
8920
9692
|
Grid.displayName = "Grid";
|
|
8921
|
-
var Row = React49.forwardRef((
|
|
8922
|
-
return /* @__PURE__ */ jsx(
|
|
8923
|
-
Box,
|
|
8924
|
-
{
|
|
8925
|
-
ref,
|
|
8926
|
-
display: "flex",
|
|
8927
|
-
flexDirection: "row",
|
|
8928
|
-
gap,
|
|
8929
|
-
align,
|
|
8930
|
-
justify,
|
|
8931
|
-
...props
|
|
8932
|
-
}
|
|
8933
|
-
);
|
|
9693
|
+
var Row = React49.forwardRef((props, ref) => {
|
|
9694
|
+
return /* @__PURE__ */ jsx(Stack, { ref, direction: "horizontal", ...props });
|
|
8934
9695
|
});
|
|
8935
9696
|
Row.displayName = "Row";
|
|
8936
9697
|
var surfaceVariants = cva("", {
|
|
@@ -8965,7 +9726,7 @@ var labelVariants = cva(
|
|
|
8965
9726
|
var Label2 = React49.forwardRef(
|
|
8966
9727
|
({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
8967
9728
|
children,
|
|
8968
|
-
required && /* @__PURE__ */ jsx("span", { className: cn(
|
|
9729
|
+
required && /* @__PURE__ */ jsx("span", { className: cn(FORM_TOKENS.label.requiredMark, "ml-xs"), children: "*" })
|
|
8969
9730
|
] })
|
|
8970
9731
|
);
|
|
8971
9732
|
Label2.displayName = LabelPrimitive.Root.displayName;
|
|
@@ -9312,7 +10073,7 @@ var ToastRoot = React49.forwardRef(
|
|
|
9312
10073
|
altText: toast.action.label,
|
|
9313
10074
|
onClick: toast.action.onClick,
|
|
9314
10075
|
className: cn(
|
|
9315
|
-
"inline-flex shrink-0 items-center justify-center rounded-md border bg-transparent font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50",
|
|
10076
|
+
"inline-flex shrink-0 items-center justify-center rounded-md border bg-transparent font-medium transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
|
|
9316
10077
|
TOAST_TOKENS.action.height,
|
|
9317
10078
|
TOAST_TOKENS.action.padding,
|
|
9318
10079
|
TOAST_TOKENS.action.fontSize
|
|
@@ -9370,7 +10131,7 @@ var ToastAction = React49.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
9370
10131
|
{
|
|
9371
10132
|
ref,
|
|
9372
10133
|
className: cn(
|
|
9373
|
-
"inline-flex shrink-0 items-center justify-center rounded-md border bg-transparent font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50",
|
|
10134
|
+
"inline-flex shrink-0 items-center justify-center rounded-md border bg-transparent font-medium transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
|
|
9374
10135
|
TOAST_TOKENS.action.height,
|
|
9375
10136
|
TOAST_TOKENS.action.padding,
|
|
9376
10137
|
TOAST_TOKENS.action.fontSize,
|
|
@@ -9810,7 +10571,7 @@ var NotificationCenterItem = React49.forwardRef(
|
|
|
9810
10571
|
size: "icon",
|
|
9811
10572
|
onClick: handleDismiss,
|
|
9812
10573
|
"aria-label": "Dismiss notification",
|
|
9813
|
-
className: "absolute right-xs top-xs h-6 w-6 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100",
|
|
10574
|
+
className: "absolute right-xs top-xs h-6 w-6 opacity-0 transition-opacity hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 group-hover:opacity-100",
|
|
9814
10575
|
children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
|
|
9815
10576
|
}
|
|
9816
10577
|
)
|
|
@@ -10371,7 +11132,7 @@ var PopoverArrow = React49.forwardRef(
|
|
|
10371
11132
|
);
|
|
10372
11133
|
PopoverArrow.displayName = "PopoverArrow";
|
|
10373
11134
|
|
|
10374
|
-
// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
|
|
11135
|
+
// node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
|
|
10375
11136
|
var min = Math.min;
|
|
10376
11137
|
var max = Math.max;
|
|
10377
11138
|
var round = Math.round;
|
|
@@ -10502,7 +11263,7 @@ function rectToClientRect(rect) {
|
|
|
10502
11263
|
};
|
|
10503
11264
|
}
|
|
10504
11265
|
|
|
10505
|
-
// node_modules/@floating-ui/core/dist/floating-ui.core.mjs
|
|
11266
|
+
// node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs
|
|
10506
11267
|
function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
10507
11268
|
let {
|
|
10508
11269
|
reference,
|
|
@@ -10947,7 +11708,7 @@ var shift = function(options) {
|
|
|
10947
11708
|
};
|
|
10948
11709
|
};
|
|
10949
11710
|
|
|
10950
|
-
// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
|
|
11711
|
+
// node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
|
|
10951
11712
|
function hasWindow() {
|
|
10952
11713
|
return typeof window !== "undefined";
|
|
10953
11714
|
}
|
|
@@ -11100,7 +11861,7 @@ function getFrameElement(win) {
|
|
|
11100
11861
|
return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
|
|
11101
11862
|
}
|
|
11102
11863
|
|
|
11103
|
-
// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
|
|
11864
|
+
// node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
|
|
11104
11865
|
function getCssDimensions(element) {
|
|
11105
11866
|
const css = getComputedStyle2(element);
|
|
11106
11867
|
let width = parseFloat(css.width) || 0;
|
|
@@ -11954,7 +12715,7 @@ function usePositioning({
|
|
|
11954
12715
|
return offsetValue;
|
|
11955
12716
|
}
|
|
11956
12717
|
const baseOffset = getBaseValue(offsetValue);
|
|
11957
|
-
return baseOffset ? getSpacingPx(baseOffset) :
|
|
12718
|
+
return baseOffset ? getSpacingPx(baseOffset) : getSpacingPx(1);
|
|
11958
12719
|
}, [offsetValue]);
|
|
11959
12720
|
React49.useEffect(() => {
|
|
11960
12721
|
setMounted(true);
|
|
@@ -11965,7 +12726,7 @@ function usePositioning({
|
|
|
11965
12726
|
middlewareArray.push(flip3());
|
|
11966
12727
|
}
|
|
11967
12728
|
if (enableShift) {
|
|
11968
|
-
middlewareArray.push(shift3({ padding:
|
|
12729
|
+
middlewareArray.push(shift3({ padding: getSpacingPx(2) }));
|
|
11969
12730
|
}
|
|
11970
12731
|
return middlewareArray;
|
|
11971
12732
|
}, [offsetPx, enableFlip, enableShift]);
|
|
@@ -12324,7 +13085,7 @@ var DropdownMenuItem = React49.forwardRef(
|
|
|
12324
13085
|
MENU_TOKENS.item.padding.md,
|
|
12325
13086
|
MENU_TOKENS.item.radius.md,
|
|
12326
13087
|
inset && "pl-8",
|
|
12327
|
-
!disabled && "focus:bg-accent focus:text-accent-foreground",
|
|
13088
|
+
!disabled && "focus-visible:bg-accent focus-visible:text-accent-foreground",
|
|
12328
13089
|
selected && "bg-accent/50",
|
|
12329
13090
|
disabled && "pointer-events-none opacity-50",
|
|
12330
13091
|
className
|
|
@@ -12807,9 +13568,9 @@ var CONTEXT_MENU_TOKENS = {
|
|
|
12807
13568
|
radius: "rounded-sm",
|
|
12808
13569
|
// 4px (0.25rem)
|
|
12809
13570
|
focus: {
|
|
12810
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
13571
|
+
background: "focus-visible:bg-[hsl(var(--accent))]",
|
|
12811
13572
|
// Focus background using CSS var
|
|
12812
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
13573
|
+
text: "focus-visible:text-[hsl(var(--accent-foreground))]"
|
|
12813
13574
|
// Focus text using CSS var
|
|
12814
13575
|
},
|
|
12815
13576
|
disabled: {
|
|
@@ -13197,7 +13958,7 @@ var Skeleton = React49.forwardRef(
|
|
|
13197
13958
|
Skeleton.displayName = "Skeleton";
|
|
13198
13959
|
var EmptyStateAction = React49.forwardRef(
|
|
13199
13960
|
({ className, children, ...props }, ref) => {
|
|
13200
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn(
|
|
13961
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(EMPTY_STATE_TOKENS.spacing.action, className), ...props, children });
|
|
13201
13962
|
}
|
|
13202
13963
|
);
|
|
13203
13964
|
EmptyStateAction.displayName = "EmptyStateAction";
|
|
@@ -13208,9 +13969,10 @@ var EmptyStateDescription = React49.forwardRef(
|
|
|
13208
13969
|
{
|
|
13209
13970
|
ref,
|
|
13210
13971
|
className: cn(
|
|
13211
|
-
|
|
13212
|
-
|
|
13213
|
-
|
|
13972
|
+
EMPTY_STATE_TOKENS.typography.description.fontSize,
|
|
13973
|
+
EMPTY_STATE_TOKENS.typography.description.fontWeight,
|
|
13974
|
+
EMPTY_STATE_TOKENS.typography.description.color,
|
|
13975
|
+
EMPTY_STATE_TOKENS.typography.description.maxWidth,
|
|
13214
13976
|
className
|
|
13215
13977
|
),
|
|
13216
13978
|
...props,
|
|
@@ -13222,16 +13984,12 @@ var EmptyStateDescription = React49.forwardRef(
|
|
|
13222
13984
|
EmptyStateDescription.displayName = "EmptyStateDescription";
|
|
13223
13985
|
var EmptyStateIcon = React49.forwardRef(
|
|
13224
13986
|
({ children, size: size3 = "md", className, ...props }, ref) => {
|
|
13225
|
-
const iconSizeClass =
|
|
13987
|
+
const iconSizeClass = EMPTY_STATE_TOKENS.icon.size[size3];
|
|
13226
13988
|
return /* @__PURE__ */ jsx(
|
|
13227
13989
|
"div",
|
|
13228
13990
|
{
|
|
13229
13991
|
ref,
|
|
13230
|
-
className: cn(
|
|
13231
|
-
"flex items-center justify-center text-muted-foreground",
|
|
13232
|
-
iconSizeClass,
|
|
13233
|
-
className
|
|
13234
|
-
),
|
|
13992
|
+
className: cn(EMPTY_STATE_TOKENS.icon.container, iconSizeClass, className),
|
|
13235
13993
|
...props,
|
|
13236
13994
|
children
|
|
13237
13995
|
}
|
|
@@ -13246,9 +14004,9 @@ var EmptyStateTitle = React49.forwardRef(
|
|
|
13246
14004
|
{
|
|
13247
14005
|
ref,
|
|
13248
14006
|
className: cn(
|
|
13249
|
-
|
|
13250
|
-
|
|
13251
|
-
|
|
14007
|
+
EMPTY_STATE_TOKENS.typography.title.fontSize,
|
|
14008
|
+
EMPTY_STATE_TOKENS.typography.title.fontWeight,
|
|
14009
|
+
EMPTY_STATE_TOKENS.typography.title.color,
|
|
13252
14010
|
className
|
|
13253
14011
|
),
|
|
13254
14012
|
...props,
|
|
@@ -13269,7 +14027,7 @@ var EmptyState = React49.forwardRef(
|
|
|
13269
14027
|
variant: "flat",
|
|
13270
14028
|
radius: "xl",
|
|
13271
14029
|
p: "lg",
|
|
13272
|
-
className: cn(
|
|
14030
|
+
className: cn(EMPTY_STATE_TOKENS.alignment.center, className),
|
|
13273
14031
|
id: emptyStateId,
|
|
13274
14032
|
...props,
|
|
13275
14033
|
children: /* @__PURE__ */ jsx(Stack, { gap: "md", align: "center", justify: "center", children })
|
|
@@ -13286,14 +14044,16 @@ var DataListItem = React49.forwardRef(
|
|
|
13286
14044
|
({ padding = "md", className, children, ...props }, ref) => {
|
|
13287
14045
|
const paddingValue = getBaseValue(padding);
|
|
13288
14046
|
const paddingKey = paddingValue && ["sm", "md", "lg"].includes(String(paddingValue)) ? String(paddingValue) : "md";
|
|
13289
|
-
const paddingClass =
|
|
14047
|
+
const paddingClass = DATA_LIST_TOKENS.rowPadding[paddingKey];
|
|
13290
14048
|
return /* @__PURE__ */ jsx(
|
|
13291
14049
|
"div",
|
|
13292
14050
|
{
|
|
13293
14051
|
ref,
|
|
13294
14052
|
className: cn(
|
|
13295
14053
|
paddingClass,
|
|
13296
|
-
|
|
14054
|
+
DATA_LIST_TOKENS.item.layout.mobile,
|
|
14055
|
+
DATA_LIST_TOKENS.item.layout.desktop,
|
|
14056
|
+
DATA_LIST_TOKENS.item.border,
|
|
13297
14057
|
className
|
|
13298
14058
|
),
|
|
13299
14059
|
...props,
|
|
@@ -13310,9 +14070,9 @@ var DataListLabel = React49.forwardRef(
|
|
|
13310
14070
|
{
|
|
13311
14071
|
ref,
|
|
13312
14072
|
className: cn(
|
|
13313
|
-
|
|
13314
|
-
|
|
13315
|
-
|
|
14073
|
+
DATA_LIST_TOKENS.label.mobile,
|
|
14074
|
+
DATA_LIST_TOKENS.label.desktop,
|
|
14075
|
+
DATA_LIST_TOKENS.labelWidth.md,
|
|
13316
14076
|
className
|
|
13317
14077
|
),
|
|
13318
14078
|
...props,
|
|
@@ -13324,13 +14084,21 @@ var DataListLabel = React49.forwardRef(
|
|
|
13324
14084
|
DataListLabel.displayName = "DataListLabel";
|
|
13325
14085
|
var DataListValue = React49.forwardRef(
|
|
13326
14086
|
({ className, children, ...props }, ref) => {
|
|
13327
|
-
return /* @__PURE__ */ jsx(
|
|
14087
|
+
return /* @__PURE__ */ jsx(
|
|
14088
|
+
"dd",
|
|
14089
|
+
{
|
|
14090
|
+
ref,
|
|
14091
|
+
className: cn(DATA_LIST_TOKENS.value.flex, DATA_LIST_TOKENS.value.color, className),
|
|
14092
|
+
...props,
|
|
14093
|
+
children
|
|
14094
|
+
}
|
|
14095
|
+
);
|
|
13328
14096
|
}
|
|
13329
14097
|
);
|
|
13330
14098
|
DataListValue.displayName = "DataListValue";
|
|
13331
14099
|
var DataListRoot = React49.forwardRef(
|
|
13332
14100
|
({ labelWidth: _labelWidth = "md", className, children, ...props }, ref) => {
|
|
13333
|
-
return /* @__PURE__ */ jsx("dl", { ref, className: cn(
|
|
14101
|
+
return /* @__PURE__ */ jsx("dl", { ref, className: cn(DATA_LIST_TOKENS.spacing.gap, className), ...props, children });
|
|
13334
14102
|
}
|
|
13335
14103
|
);
|
|
13336
14104
|
DataListRoot.displayName = "DataListRoot";
|
|
@@ -13345,9 +14113,9 @@ var TableBody = React49.forwardRef(
|
|
|
13345
14113
|
TableBody.displayName = "TableBody";
|
|
13346
14114
|
var TableCell = React49.forwardRef(
|
|
13347
14115
|
({ align = "left", size: size3 = "md", className, ...props }, ref) => {
|
|
13348
|
-
const paddingClass =
|
|
13349
|
-
const typographyClass =
|
|
13350
|
-
const fontWeightClass =
|
|
14116
|
+
const paddingClass = TABLE_TOKENS.padding.cell[size3];
|
|
14117
|
+
const typographyClass = TABLE_TOKENS.typography.cell.fontSize;
|
|
14118
|
+
const fontWeightClass = TABLE_TOKENS.typography.cell.fontWeight;
|
|
13351
14119
|
const alignmentClasses = {
|
|
13352
14120
|
left: "text-left",
|
|
13353
14121
|
center: "text-center",
|
|
@@ -13373,7 +14141,7 @@ var TableCell = React49.forwardRef(
|
|
|
13373
14141
|
TableCell.displayName = "TableCell";
|
|
13374
14142
|
var TableEmpty = React49.forwardRef(
|
|
13375
14143
|
({ colSpan, message = "No data available", className, ...props }, ref) => {
|
|
13376
|
-
return /* @__PURE__ */ jsx("tr", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsx("td", { colSpan, className:
|
|
14144
|
+
return /* @__PURE__ */ jsx("tr", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsx("td", { colSpan, className: TABLE_TOKENS.empty.padding, children: /* @__PURE__ */ jsxs(EmptyState, { children: [
|
|
13377
14145
|
/* @__PURE__ */ jsx(EmptyStateIcon, { children: "\u{1F4ED}" }),
|
|
13378
14146
|
/* @__PURE__ */ jsx(EmptyStateTitle, { children: message })
|
|
13379
14147
|
] }) }) });
|
|
@@ -13388,13 +14156,22 @@ var TableExpandableContent = React49.forwardRef(
|
|
|
13388
14156
|
ref,
|
|
13389
14157
|
colSpan,
|
|
13390
14158
|
className: cn(
|
|
13391
|
-
|
|
13392
|
-
|
|
13393
|
-
expanded ?
|
|
14159
|
+
TABLE_TOKENS.expandable.container,
|
|
14160
|
+
TABLE_TOKENS.expandable.transition,
|
|
14161
|
+
expanded ? TABLE_TOKENS.expandable.expanded : TABLE_TOKENS.expandable.collapsed,
|
|
13394
14162
|
className
|
|
13395
14163
|
),
|
|
13396
14164
|
...props,
|
|
13397
|
-
children: /* @__PURE__ */ jsx(
|
|
14165
|
+
children: /* @__PURE__ */ jsx(
|
|
14166
|
+
"div",
|
|
14167
|
+
{
|
|
14168
|
+
className: cn(
|
|
14169
|
+
TABLE_TOKENS.expandable.padding,
|
|
14170
|
+
expanded ? TABLE_TOKENS.expandable.content.expanded : TABLE_TOKENS.expandable.content.collapsed
|
|
14171
|
+
),
|
|
14172
|
+
children
|
|
14173
|
+
}
|
|
14174
|
+
)
|
|
13398
14175
|
}
|
|
13399
14176
|
);
|
|
13400
14177
|
}
|
|
@@ -13407,9 +14184,9 @@ var TableSortIcon = React49.forwardRef(
|
|
|
13407
14184
|
{
|
|
13408
14185
|
ref,
|
|
13409
14186
|
className: cn(
|
|
13410
|
-
|
|
13411
|
-
direction === "desc" &&
|
|
13412
|
-
!direction &&
|
|
14187
|
+
TABLE_TOKENS.sortable.icon.base,
|
|
14188
|
+
direction === "desc" && TABLE_TOKENS.sortable.icon.rotated,
|
|
14189
|
+
!direction && TABLE_TOKENS.sortable.icon.inactive,
|
|
13413
14190
|
className
|
|
13414
14191
|
),
|
|
13415
14192
|
"aria-hidden": "true",
|
|
@@ -13456,9 +14233,9 @@ var TableHead = React49.forwardRef(
|
|
|
13456
14233
|
direction: nextDirection
|
|
13457
14234
|
});
|
|
13458
14235
|
}, [sortable, columnKey, sortState, setSortState]);
|
|
13459
|
-
const paddingClass =
|
|
13460
|
-
const typographyClass =
|
|
13461
|
-
const fontWeightClass =
|
|
14236
|
+
const paddingClass = TABLE_TOKENS.padding.header[size3];
|
|
14237
|
+
const typographyClass = TABLE_TOKENS.typography.header.fontSize;
|
|
14238
|
+
const fontWeightClass = TABLE_TOKENS.typography.header.fontWeight;
|
|
13462
14239
|
const alignmentClasses = {
|
|
13463
14240
|
left: "text-left",
|
|
13464
14241
|
center: "text-center",
|
|
@@ -13475,9 +14252,10 @@ var TableHead = React49.forwardRef(
|
|
|
13475
14252
|
typographyClass,
|
|
13476
14253
|
fontWeightClass,
|
|
13477
14254
|
alignmentClasses[align],
|
|
13478
|
-
|
|
13479
|
-
|
|
13480
|
-
sortable &&
|
|
14255
|
+
TABLE_TOKENS.colors.border,
|
|
14256
|
+
TABLE_TOKENS.border.bottom,
|
|
14257
|
+
sortable && TABLE_TOKENS.sortable.cursor,
|
|
14258
|
+
sortable && TABLE_TOKENS.sortable.hover,
|
|
13481
14259
|
className
|
|
13482
14260
|
),
|
|
13483
14261
|
onClick: handleSort,
|
|
@@ -13489,7 +14267,7 @@ var TableHead = React49.forwardRef(
|
|
|
13489
14267
|
})(),
|
|
13490
14268
|
role: "columnheader",
|
|
13491
14269
|
...props,
|
|
13492
|
-
children: /* @__PURE__ */ jsxs("div", { className:
|
|
14270
|
+
children: /* @__PURE__ */ jsxs("div", { className: cn(TABLE_TOKENS.sortable.container, TABLE_TOKENS.sortable.gap), children: [
|
|
13493
14271
|
children,
|
|
13494
14272
|
sortable && /* @__PURE__ */ jsx(TableSortIcon, { direction: sortDirection })
|
|
13495
14273
|
] })
|
|
@@ -13504,7 +14282,7 @@ var TableHeader = React49.forwardRef(
|
|
|
13504
14282
|
"thead",
|
|
13505
14283
|
{
|
|
13506
14284
|
ref,
|
|
13507
|
-
className: cn(sticky &&
|
|
14285
|
+
className: cn(sticky && TABLE_TOKENS.sticky.header, className),
|
|
13508
14286
|
role: "rowgroup",
|
|
13509
14287
|
...props
|
|
13510
14288
|
}
|
|
@@ -13514,7 +14292,7 @@ var TableHeader = React49.forwardRef(
|
|
|
13514
14292
|
TableHeader.displayName = "TableHeader";
|
|
13515
14293
|
var TableLoadingState = React49.forwardRef(
|
|
13516
14294
|
({ colSpan, rows = 5, className, ...props }, ref) => {
|
|
13517
|
-
return /* @__PURE__ */ jsx(Fragment, { children: Array.from({ length: rows }).map((_, index2) => /* @__PURE__ */ jsx("tr", { ref: index2 === 0 ? ref : void 0, className: cn(className), ...props, children: Array.from({ length: colSpan }).map((_2, cellIndex) => /* @__PURE__ */ jsx("td", { className:
|
|
14295
|
+
return /* @__PURE__ */ jsx(Fragment, { children: Array.from({ length: rows }).map((_, index2) => /* @__PURE__ */ jsx("tr", { ref: index2 === 0 ? ref : void 0, className: cn(className), ...props, children: Array.from({ length: colSpan }).map((_2, cellIndex) => /* @__PURE__ */ jsx("td", { className: TABLE_TOKENS.loading.cellPadding, children: /* @__PURE__ */ jsx(Skeleton, { variant: "text", className: TABLE_TOKENS.loading.skeletonWidth }) }, cellIndex)) }, index2)) });
|
|
13518
14296
|
}
|
|
13519
14297
|
);
|
|
13520
14298
|
TableLoadingState.displayName = "TableLoadingState";
|
|
@@ -13532,11 +14310,11 @@ var TableRow = React49.forwardRef(
|
|
|
13532
14310
|
{
|
|
13533
14311
|
ref,
|
|
13534
14312
|
className: cn(
|
|
13535
|
-
|
|
13536
|
-
|
|
13537
|
-
|
|
13538
|
-
selected &&
|
|
13539
|
-
expandable &&
|
|
14313
|
+
TABLE_TOKENS.colors.border,
|
|
14314
|
+
TABLE_TOKENS.border.bottom,
|
|
14315
|
+
TABLE_TOKENS.colors.rowHover,
|
|
14316
|
+
selected && TABLE_TOKENS.colors.rowSelected,
|
|
14317
|
+
expandable && TABLE_TOKENS.expandable.cursor,
|
|
13540
14318
|
className
|
|
13541
14319
|
),
|
|
13542
14320
|
"aria-expanded": expandable ? expanded : void 0,
|
|
@@ -13597,13 +14375,13 @@ function TableRoot({
|
|
|
13597
14375
|
}),
|
|
13598
14376
|
[sortState, expandedRows, toggleRow, expandable, renderExpandableContent]
|
|
13599
14377
|
);
|
|
13600
|
-
return /* @__PURE__ */ jsx(TableContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { className:
|
|
14378
|
+
return /* @__PURE__ */ jsx(TableContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { className: TABLE_TOKENS.layout.overflow, children: /* @__PURE__ */ jsx(
|
|
13601
14379
|
"table",
|
|
13602
14380
|
{
|
|
13603
14381
|
className: cn(
|
|
13604
|
-
|
|
13605
|
-
|
|
13606
|
-
|
|
14382
|
+
TABLE_TOKENS.layout.table,
|
|
14383
|
+
TABLE_TOKENS.radius.default,
|
|
14384
|
+
TABLE_TOKENS.shadow.subtle,
|
|
13607
14385
|
className
|
|
13608
14386
|
),
|
|
13609
14387
|
role: "table",
|
|
@@ -15170,8 +15948,8 @@ var artistCardGenresVariants = cva(
|
|
|
15170
15948
|
}
|
|
15171
15949
|
);
|
|
15172
15950
|
var artistCardFooterBorderVariants = cva(
|
|
15173
|
-
// Base classes - border top, spacing
|
|
15174
|
-
|
|
15951
|
+
// Base classes - border top from ARTIST_TOKENS, spacing from DOMAIN_TOKENS
|
|
15952
|
+
ARTIST_TOKENS.footer.border.top,
|
|
15175
15953
|
{
|
|
15176
15954
|
variants: {
|
|
15177
15955
|
size: {
|
|
@@ -15231,37 +16009,49 @@ var ArtistCard = React49.forwardRef(
|
|
|
15231
16009
|
...props,
|
|
15232
16010
|
children: [
|
|
15233
16011
|
featured && popularBadgeText && /* @__PURE__ */ jsx("div", { className: artistCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsx("span", { className: artistCardBadgeSurfaceVariants({ size: size3, variant: "featured" }), children: popularBadgeText }) }),
|
|
15234
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
15235
|
-
|
|
15236
|
-
|
|
15237
|
-
|
|
15238
|
-
|
|
15239
|
-
|
|
15240
|
-
|
|
15241
|
-
|
|
15242
|
-
|
|
15243
|
-
|
|
15244
|
-
|
|
15245
|
-
|
|
15246
|
-
|
|
15247
|
-
|
|
15248
|
-
|
|
15249
|
-
|
|
15250
|
-
|
|
15251
|
-
|
|
15252
|
-
|
|
15253
|
-
|
|
16012
|
+
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
16013
|
+
"div",
|
|
16014
|
+
{
|
|
16015
|
+
className: cn(
|
|
16016
|
+
ARTIST_TOKENS.image.container.layout,
|
|
16017
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16018
|
+
),
|
|
16019
|
+
children: [
|
|
16020
|
+
imageUrl ? /* @__PURE__ */ jsx(
|
|
16021
|
+
"img",
|
|
16022
|
+
{
|
|
16023
|
+
src: imageUrl,
|
|
16024
|
+
alt: name,
|
|
16025
|
+
className: cn(
|
|
16026
|
+
ARTIST_TOKENS.image.sizing.full,
|
|
16027
|
+
artistCardImageTransformVariants({ size: size3 })
|
|
16028
|
+
)
|
|
16029
|
+
}
|
|
16030
|
+
) : /* @__PURE__ */ jsx("div", { className: ARTIST_TOKENS.image.placeholder.container, children: /* @__PURE__ */ jsx(
|
|
16031
|
+
Icon2,
|
|
16032
|
+
{
|
|
16033
|
+
name: "info",
|
|
16034
|
+
size: "xl",
|
|
16035
|
+
color: "muted",
|
|
16036
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
16037
|
+
"aria-hidden": "true"
|
|
16038
|
+
}
|
|
16039
|
+
) }),
|
|
16040
|
+
/* @__PURE__ */ jsx("div", { className: artistCardImageOverlayVariants({ size: size3 }) })
|
|
16041
|
+
]
|
|
16042
|
+
}
|
|
16043
|
+
) }),
|
|
15254
16044
|
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
15255
16045
|
/* @__PURE__ */ jsx(
|
|
15256
16046
|
Heading,
|
|
15257
16047
|
{
|
|
15258
16048
|
level: 3,
|
|
15259
16049
|
className: cn(
|
|
15260
|
-
|
|
16050
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15261
16051
|
TEXT_TOKENS.fontSize.lg,
|
|
15262
16052
|
TEXT_TOKENS.fontWeight.bold,
|
|
15263
16053
|
MOTION_TOKENS.transition.colors,
|
|
15264
|
-
|
|
16054
|
+
DOMAIN_TOKENS.text.hover.primary,
|
|
15265
16055
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15266
16056
|
),
|
|
15267
16057
|
children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: name }) : name
|
|
@@ -15273,7 +16063,7 @@ var ArtistCard = React49.forwardRef(
|
|
|
15273
16063
|
size: "sm",
|
|
15274
16064
|
variant: "muted",
|
|
15275
16065
|
className: cn(
|
|
15276
|
-
|
|
16066
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15277
16067
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15278
16068
|
),
|
|
15279
16069
|
children: description
|
|
@@ -15335,16 +16125,16 @@ var ArtistCard = React49.forwardRef(
|
|
|
15335
16125
|
}
|
|
15336
16126
|
);
|
|
15337
16127
|
ArtistCard.displayName = "ArtistCard";
|
|
15338
|
-
var
|
|
16128
|
+
var categoryCardBadgeVariants = cva(
|
|
15339
16129
|
// Base classes - absolute positioning, z-index
|
|
15340
16130
|
"absolute z-10",
|
|
15341
16131
|
{
|
|
15342
16132
|
variants: {
|
|
15343
16133
|
size: {
|
|
15344
16134
|
default: DOMAIN_TOKENS.badges.position.default,
|
|
15345
|
-
// Default positioning -
|
|
16135
|
+
// Default positioning - references semanticSpacing.md (16px)
|
|
15346
16136
|
compact: DOMAIN_TOKENS.badges.position.compact
|
|
15347
|
-
// Compact positioning -
|
|
16137
|
+
// Compact positioning - references semanticSpacing.sm (8px)
|
|
15348
16138
|
}
|
|
15349
16139
|
},
|
|
15350
16140
|
defaultVariants: {
|
|
@@ -15352,9 +16142,10 @@ var eventCardBadgeVariants = cva(
|
|
|
15352
16142
|
}
|
|
15353
16143
|
}
|
|
15354
16144
|
);
|
|
15355
|
-
var
|
|
16145
|
+
var categoryCardBadgeSurfaceVariants = cva(
|
|
15356
16146
|
// Base classes - flex layout, items center, badge styling
|
|
15357
|
-
|
|
16147
|
+
// Uses DOMAIN_TOKENS for badge-specific styles, TEXT_TOKENS for typography
|
|
16148
|
+
`inline-flex items-center ${DOMAIN_TOKENS.badges.radius} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.badges.size.sm} ${DOMAIN_TOKENS.badges.text.color} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
15358
16149
|
{
|
|
15359
16150
|
variants: {
|
|
15360
16151
|
variant: {
|
|
@@ -15367,130 +16158,14 @@ var eventCardBadgeSurfaceVariants = cva(
|
|
|
15367
16158
|
}
|
|
15368
16159
|
}
|
|
15369
16160
|
);
|
|
15370
|
-
var
|
|
15371
|
-
// Base classes - flex column, metadata spacing
|
|
15372
|
-
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
15373
|
-
{
|
|
15374
|
-
variants: {
|
|
15375
|
-
size: {
|
|
15376
|
-
default: "",
|
|
15377
|
-
compact: ""
|
|
15378
|
-
}
|
|
15379
|
-
},
|
|
15380
|
-
defaultVariants: {
|
|
15381
|
-
size: "default"
|
|
15382
|
-
}
|
|
15383
|
-
}
|
|
15384
|
-
);
|
|
15385
|
-
var eventCardMetadataItemVariants = cva(
|
|
15386
|
-
// Base classes - flex items center, metadata spacing and text
|
|
15387
|
-
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
15388
|
-
{
|
|
15389
|
-
variants: {
|
|
15390
|
-
size: {
|
|
15391
|
-
default: "",
|
|
15392
|
-
compact: ""
|
|
15393
|
-
}
|
|
15394
|
-
},
|
|
15395
|
-
defaultVariants: {
|
|
15396
|
-
size: "default"
|
|
15397
|
-
}
|
|
15398
|
-
}
|
|
15399
|
-
);
|
|
15400
|
-
var eventCardMetadataIconVariants = cva(
|
|
15401
|
-
// Base classes - icon size and color
|
|
15402
|
-
`${ICON_TOKENS.sizes.md} ${ICON_TOKENS.colors.muted}`,
|
|
15403
|
-
{
|
|
15404
|
-
variants: {
|
|
15405
|
-
size: {
|
|
15406
|
-
default: "",
|
|
15407
|
-
compact: ""
|
|
15408
|
-
}
|
|
15409
|
-
},
|
|
15410
|
-
defaultVariants: {
|
|
15411
|
-
size: "default"
|
|
15412
|
-
}
|
|
15413
|
-
}
|
|
15414
|
-
);
|
|
15415
|
-
var eventCardFooterVariants = cva(
|
|
15416
|
-
// Base classes - border top, spacing
|
|
15417
|
-
"border-t border-border",
|
|
15418
|
-
{
|
|
15419
|
-
variants: {
|
|
15420
|
-
size: {
|
|
15421
|
-
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
15422
|
-
// Default padding top - references semanticSpacing.sm (8px) via Tailwind
|
|
15423
|
-
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
15424
|
-
// Compact padding top - references semanticSpacing.xs (4px) via Tailwind
|
|
15425
|
-
}
|
|
15426
|
-
},
|
|
15427
|
-
defaultVariants: {
|
|
15428
|
-
size: "default"
|
|
15429
|
-
}
|
|
15430
|
-
}
|
|
15431
|
-
);
|
|
15432
|
-
var eventCardTicketButtonVariants = cva(
|
|
15433
|
-
// Base classes - flex layout, badge gradient, motion
|
|
15434
|
-
`inline-flex items-center justify-center ${DOMAIN_TOKENS.badges.surface.featured} ${DOMAIN_TOKENS.badges.text.color} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.motion.hover.transition} font-semibold transform`,
|
|
15435
|
-
{
|
|
15436
|
-
variants: {
|
|
15437
|
-
size: {
|
|
15438
|
-
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
15439
|
-
// Default padding - references semanticSpacing.md (16px) horizontal, xs (4px) vertical via Tailwind
|
|
15440
|
-
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
15441
|
-
// Compact padding - references semanticSpacing.sm (8px) horizontal, xs (4px) vertical via Tailwind
|
|
15442
|
-
}
|
|
15443
|
-
},
|
|
15444
|
-
defaultVariants: {
|
|
15445
|
-
size: "default"
|
|
15446
|
-
}
|
|
15447
|
-
}
|
|
15448
|
-
);
|
|
15449
|
-
var eventCardTicketButtonIconVariants = cva(
|
|
15450
|
-
// Base classes - icon size and spacing
|
|
15451
|
-
`${ICON_TOKENS.sizes.md} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
15452
|
-
{
|
|
15453
|
-
variants: {
|
|
15454
|
-
size: {
|
|
15455
|
-
default: "",
|
|
15456
|
-
compact: ""
|
|
15457
|
-
}
|
|
15458
|
-
},
|
|
15459
|
-
defaultVariants: {
|
|
15460
|
-
size: "default"
|
|
15461
|
-
}
|
|
15462
|
-
}
|
|
15463
|
-
);
|
|
15464
|
-
var eventCardPriceVariants = cva(
|
|
15465
|
-
// Base classes - price gradient text
|
|
15466
|
-
`bg-gradient-to-r from-accent-500 to-primary-600 bg-clip-text text-transparent`,
|
|
15467
|
-
{
|
|
15468
|
-
variants: {
|
|
15469
|
-
size: {
|
|
15470
|
-
default: TEXT_TOKENS.fontSize.lg,
|
|
15471
|
-
// Default size
|
|
15472
|
-
compact: TEXT_TOKENS.fontSize.md
|
|
15473
|
-
// Compact size
|
|
15474
|
-
}
|
|
15475
|
-
},
|
|
15476
|
-
defaultVariants: {
|
|
15477
|
-
size: "default"
|
|
15478
|
-
}
|
|
15479
|
-
}
|
|
15480
|
-
);
|
|
15481
|
-
var EventCard = React49.forwardRef(
|
|
16161
|
+
var CategoryCard = React49.forwardRef(
|
|
15482
16162
|
({
|
|
15483
16163
|
title,
|
|
15484
16164
|
description,
|
|
15485
|
-
date,
|
|
15486
|
-
venueName,
|
|
15487
|
-
price,
|
|
15488
16165
|
imageUrl,
|
|
15489
16166
|
href,
|
|
15490
|
-
ticketUrl,
|
|
15491
16167
|
featured = false,
|
|
15492
16168
|
showImage = true,
|
|
15493
|
-
getTicketsLabel,
|
|
15494
16169
|
featuredBadgeText,
|
|
15495
16170
|
size: size3 = "default",
|
|
15496
16171
|
variant,
|
|
@@ -15513,46 +16188,57 @@ var EventCard = React49.forwardRef(
|
|
|
15513
16188
|
className: cn("group relative", className),
|
|
15514
16189
|
...props,
|
|
15515
16190
|
children: [
|
|
15516
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className:
|
|
15517
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
15518
|
-
|
|
15519
|
-
|
|
15520
|
-
|
|
15521
|
-
|
|
15522
|
-
|
|
15523
|
-
|
|
15524
|
-
|
|
15525
|
-
|
|
15526
|
-
|
|
15527
|
-
|
|
15528
|
-
|
|
15529
|
-
|
|
15530
|
-
|
|
15531
|
-
|
|
15532
|
-
|
|
15533
|
-
|
|
15534
|
-
|
|
15535
|
-
|
|
15536
|
-
"
|
|
15537
|
-
|
|
15538
|
-
|
|
15539
|
-
|
|
15540
|
-
|
|
15541
|
-
|
|
15542
|
-
|
|
15543
|
-
|
|
15544
|
-
|
|
16191
|
+
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: categoryCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsx("span", { className: categoryCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
16192
|
+
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
16193
|
+
"div",
|
|
16194
|
+
{
|
|
16195
|
+
className: cn(
|
|
16196
|
+
"relative w-full overflow-hidden",
|
|
16197
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16198
|
+
),
|
|
16199
|
+
children: [
|
|
16200
|
+
imageUrl ? /* @__PURE__ */ jsx(
|
|
16201
|
+
"img",
|
|
16202
|
+
{
|
|
16203
|
+
src: imageUrl,
|
|
16204
|
+
alt: title,
|
|
16205
|
+
className: cn(
|
|
16206
|
+
"h-full w-full object-cover",
|
|
16207
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
16208
|
+
DOMAIN_TOKENS.motion.hover.scale
|
|
16209
|
+
)
|
|
16210
|
+
}
|
|
16211
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
16212
|
+
Icon2,
|
|
16213
|
+
{
|
|
16214
|
+
name: "info",
|
|
16215
|
+
className: cn(ICON_TOKENS.sizes["4xl"], ICON_TOKENS.colors.muted),
|
|
16216
|
+
"aria-hidden": "true"
|
|
16217
|
+
}
|
|
16218
|
+
) }),
|
|
16219
|
+
/* @__PURE__ */ jsx(
|
|
16220
|
+
"div",
|
|
16221
|
+
{
|
|
16222
|
+
className: cn(
|
|
16223
|
+
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
16224
|
+
MOTION_TOKENS.transition.opacity,
|
|
16225
|
+
MOTION_TOKENS.duration.normal,
|
|
16226
|
+
DOMAIN_TOKENS.image.overlay.gradient
|
|
16227
|
+
)
|
|
16228
|
+
}
|
|
15545
16229
|
)
|
|
15546
|
-
|
|
15547
|
-
|
|
15548
|
-
|
|
16230
|
+
]
|
|
16231
|
+
}
|
|
16232
|
+
) }),
|
|
15549
16233
|
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
15550
16234
|
/* @__PURE__ */ jsx(
|
|
15551
16235
|
Heading,
|
|
15552
16236
|
{
|
|
15553
16237
|
level: 3,
|
|
15554
16238
|
className: cn(
|
|
15555
|
-
|
|
16239
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
16240
|
+
MOTION_TOKENS.transition.colors,
|
|
16241
|
+
DOMAIN_TOKENS.text.hover.primary,
|
|
15556
16242
|
TEXT_TOKENS.fontSize.lg,
|
|
15557
16243
|
TEXT_TOKENS.fontWeight.bold,
|
|
15558
16244
|
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
@@ -15564,47 +16250,21 @@ var EventCard = React49.forwardRef(
|
|
|
15564
16250
|
Text,
|
|
15565
16251
|
{
|
|
15566
16252
|
size: "sm",
|
|
15567
|
-
|
|
16253
|
+
variant: "muted",
|
|
15568
16254
|
className: cn(
|
|
15569
|
-
|
|
16255
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15570
16256
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15571
16257
|
),
|
|
15572
16258
|
children: description
|
|
15573
16259
|
}
|
|
15574
|
-
)
|
|
15575
|
-
|
|
15576
|
-
date && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), children: [
|
|
15577
|
-
/* @__PURE__ */ jsx(IconCalendar, { className: eventCardMetadataIconVariants({ size: size3 }) }),
|
|
15578
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, children: date })
|
|
15579
|
-
] }),
|
|
15580
|
-
venueName && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), children: [
|
|
15581
|
-
/* @__PURE__ */ jsx(IconLocation, { className: eventCardMetadataIconVariants({ size: size3 }) }),
|
|
15582
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, className: "line-clamp-1", children: venueName })
|
|
15583
|
-
] })
|
|
15584
|
-
] })
|
|
15585
|
-
] }),
|
|
15586
|
-
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full", eventCardFooterVariants({ size: size3 })), children: [
|
|
15587
|
-
ticketUrl && /* @__PURE__ */ jsxs(
|
|
15588
|
-
Link,
|
|
15589
|
-
{
|
|
15590
|
-
href: ticketUrl,
|
|
15591
|
-
className: cn("w-full", eventCardTicketButtonVariants({ size: size3 })),
|
|
15592
|
-
target: "_blank",
|
|
15593
|
-
rel: "noopener noreferrer",
|
|
15594
|
-
children: [
|
|
15595
|
-
getTicketsLabel,
|
|
15596
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: eventCardTicketButtonIconVariants({ size: size3 }) })
|
|
15597
|
-
]
|
|
15598
|
-
}
|
|
15599
|
-
),
|
|
15600
|
-
!ticketUrl && price && /* @__PURE__ */ jsx("div", { className: "text-right", children: /* @__PURE__ */ jsx(Text, { size: size3 === "compact" ? "md" : "lg", weight: "bold", children: /* @__PURE__ */ jsx("span", { className: eventCardPriceVariants({ size: size3 }), children: price }) }) })
|
|
15601
|
-
] }) })
|
|
16260
|
+
)
|
|
16261
|
+
] })
|
|
15602
16262
|
]
|
|
15603
16263
|
}
|
|
15604
16264
|
) });
|
|
15605
16265
|
}
|
|
15606
16266
|
);
|
|
15607
|
-
|
|
16267
|
+
CategoryCard.displayName = "CategoryCard";
|
|
15608
16268
|
var promoCardBadgeVariants = cva(
|
|
15609
16269
|
// Base classes - absolute positioning, z-index
|
|
15610
16270
|
"absolute z-10",
|
|
@@ -15638,14 +16298,14 @@ var promoCardBadgeSurfaceVariants = cva(
|
|
|
15638
16298
|
}
|
|
15639
16299
|
);
|
|
15640
16300
|
var promoCardCtaButtonVariants = cva(
|
|
15641
|
-
// Base classes - flex layout, button tokens, motion
|
|
15642
|
-
`inline-flex items-center justify-center ${
|
|
16301
|
+
// Base classes - flex layout, CTA button tokens, motion
|
|
16302
|
+
`inline-flex items-center justify-center ${DOMAIN_TOKENS.cta.button.radius} ${DOMAIN_TOKENS.cta.button.variant.primary.background} ${DOMAIN_TOKENS.cta.button.variant.primary.text} ${DOMAIN_TOKENS.cta.button.shadow.primary} ${DOMAIN_TOKENS.cta.button.variant.primary.hover} ${DOMAIN_TOKENS.cta.button.transition.colors} font-semibold`,
|
|
15643
16303
|
{
|
|
15644
16304
|
variants: {
|
|
15645
16305
|
size: {
|
|
15646
|
-
default: `${
|
|
16306
|
+
default: `${DOMAIN_TOKENS.cta.button.height.md} ${DOMAIN_TOKENS.cta.button.padding.horizontal.md} ${DOMAIN_TOKENS.cta.button.padding.vertical.sm} ${DOMAIN_TOKENS.cta.button.fontSize.md}`,
|
|
15647
16307
|
// Default size - uses md height and padding
|
|
15648
|
-
compact: `${
|
|
16308
|
+
compact: `${DOMAIN_TOKENS.cta.button.height.sm} ${DOMAIN_TOKENS.cta.button.padding.horizontal.sm} ${DOMAIN_TOKENS.cta.button.padding.vertical.sm} ${DOMAIN_TOKENS.cta.button.fontSize.sm}`
|
|
15649
16309
|
// Compact size - uses sm height and padding
|
|
15650
16310
|
}
|
|
15651
16311
|
},
|
|
@@ -15777,6 +16437,22 @@ var PromoCard = React49.forwardRef(
|
|
|
15777
16437
|
}
|
|
15778
16438
|
);
|
|
15779
16439
|
PromoCard.displayName = "PromoCard";
|
|
16440
|
+
var ticketCardVariants = cva("group relative", {
|
|
16441
|
+
variants: {
|
|
16442
|
+
size: {
|
|
16443
|
+
default: "",
|
|
16444
|
+
compact: ""
|
|
16445
|
+
},
|
|
16446
|
+
variant: {
|
|
16447
|
+
default: "",
|
|
16448
|
+
featured: ""
|
|
16449
|
+
}
|
|
16450
|
+
},
|
|
16451
|
+
defaultVariants: {
|
|
16452
|
+
size: "default",
|
|
16453
|
+
variant: "default"
|
|
16454
|
+
}
|
|
16455
|
+
});
|
|
15780
16456
|
var ticketCardBadgeVariants = cva(
|
|
15781
16457
|
// Base classes - absolute positioning, z-index
|
|
15782
16458
|
"absolute z-10",
|
|
@@ -15784,7 +16460,7 @@ var ticketCardBadgeVariants = cva(
|
|
|
15784
16460
|
variants: {
|
|
15785
16461
|
size: {
|
|
15786
16462
|
default: DOMAIN_TOKENS.badges.position.default,
|
|
15787
|
-
// Default positioning - maps to semanticSpacing.md (
|
|
16463
|
+
// Default positioning - maps to semanticSpacing.md (16px)
|
|
15788
16464
|
compact: DOMAIN_TOKENS.badges.position.compact
|
|
15789
16465
|
// Compact positioning - maps to semanticSpacing.sm (8px)
|
|
15790
16466
|
}
|
|
@@ -15796,7 +16472,7 @@ var ticketCardBadgeVariants = cva(
|
|
|
15796
16472
|
);
|
|
15797
16473
|
var ticketCardBadgeSurfaceVariants = cva(
|
|
15798
16474
|
// Base classes - flex layout, items center, badge styling
|
|
15799
|
-
`inline-flex items-center ${DOMAIN_TOKENS.badges.radius} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.badges.size.sm} ${DOMAIN_TOKENS.badges.text.color} ${TEXT_TOKENS.fontSize.xs}
|
|
16475
|
+
`inline-flex items-center ${DOMAIN_TOKENS.badges.radius} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.badges.size.sm} ${DOMAIN_TOKENS.badges.text.color} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
15800
16476
|
{
|
|
15801
16477
|
variants: {
|
|
15802
16478
|
variant: {
|
|
@@ -15813,6 +16489,45 @@ var ticketCardBadgeSurfaceVariants = cva(
|
|
|
15813
16489
|
}
|
|
15814
16490
|
}
|
|
15815
16491
|
);
|
|
16492
|
+
var ticketCardTitleVariants = cva(
|
|
16493
|
+
`${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.fontWeight.bold} ${MOTION_TOKENS.transition.colors} ${DOMAIN_TOKENS.text.hover.primary} ${DOMAIN_TOKENS.text.lineClamp.two}`,
|
|
16494
|
+
{
|
|
16495
|
+
variants: {
|
|
16496
|
+
size: {
|
|
16497
|
+
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
16498
|
+
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
16499
|
+
}
|
|
16500
|
+
},
|
|
16501
|
+
defaultVariants: {
|
|
16502
|
+
size: "default"
|
|
16503
|
+
}
|
|
16504
|
+
}
|
|
16505
|
+
);
|
|
16506
|
+
var ticketCardDateVariants = cva(
|
|
16507
|
+
`${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.sm} ${MOTION_TOKENS.transition.colors}`,
|
|
16508
|
+
{
|
|
16509
|
+
variants: {
|
|
16510
|
+
size: {
|
|
16511
|
+
default: DOMAIN_TOKENS.spacing.section.titleToSubtitle,
|
|
16512
|
+
compact: `${DOMAIN_TOKENS.spacing.section.titleToSubtitle} ${TEXT_TOKENS.fontSize.xs}`
|
|
16513
|
+
}
|
|
16514
|
+
},
|
|
16515
|
+
defaultVariants: {
|
|
16516
|
+
size: "default"
|
|
16517
|
+
}
|
|
16518
|
+
}
|
|
16519
|
+
);
|
|
16520
|
+
var ticketCardDescriptionVariants = cva(`${DOMAIN_TOKENS.text.lineClamp.two}`, {
|
|
16521
|
+
variants: {
|
|
16522
|
+
size: {
|
|
16523
|
+
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
16524
|
+
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
16525
|
+
}
|
|
16526
|
+
},
|
|
16527
|
+
defaultVariants: {
|
|
16528
|
+
size: "default"
|
|
16529
|
+
}
|
|
16530
|
+
});
|
|
15816
16531
|
var ticketCardPriceCapacityContainerVariants = cva(
|
|
15817
16532
|
// Base classes - flex layout, price/capacity spacing
|
|
15818
16533
|
`flex items-center ${DOMAIN_TOKENS.priceCapacity.spacing}`,
|
|
@@ -15830,7 +16545,7 @@ var ticketCardPriceCapacityContainerVariants = cva(
|
|
|
15830
16545
|
);
|
|
15831
16546
|
var ticketCardPriceVariants = cva(
|
|
15832
16547
|
// Base classes - price text color
|
|
15833
|
-
`${DOMAIN_TOKENS.priceCapacity.text.primary}
|
|
16548
|
+
`${DOMAIN_TOKENS.priceCapacity.text.primary} ${TEXT_TOKENS.fontWeight.bold}`,
|
|
15834
16549
|
{
|
|
15835
16550
|
variants: {
|
|
15836
16551
|
size: {
|
|
@@ -15864,7 +16579,7 @@ var ticketCardCapacityVariants = cva(
|
|
|
15864
16579
|
);
|
|
15865
16580
|
var ticketCardAvailabilityVariants = cva(
|
|
15866
16581
|
// Base classes - availability indicator styling
|
|
15867
|
-
`inline-flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${TEXT_TOKENS.fontSize.xs}
|
|
16582
|
+
`inline-flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.medium}`,
|
|
15868
16583
|
{
|
|
15869
16584
|
variants: {
|
|
15870
16585
|
availability: {
|
|
@@ -15897,7 +16612,7 @@ var ticketCardFooterVariants = cva(
|
|
|
15897
16612
|
);
|
|
15898
16613
|
var ticketCardPurchaseButtonVariants = cva(
|
|
15899
16614
|
// Base classes - flex layout, badge gradient, motion
|
|
15900
|
-
`inline-flex items-center justify-center ${DOMAIN_TOKENS.badges.surface.featured} ${DOMAIN_TOKENS.badges.text.color} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.motion.hover.transition}
|
|
16615
|
+
`inline-flex items-center justify-center ${DOMAIN_TOKENS.badges.surface.featured} ${DOMAIN_TOKENS.badges.text.color} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.motion.hover.transition} ${TEXT_TOKENS.fontWeight.semibold} transform`,
|
|
15901
16616
|
{
|
|
15902
16617
|
variants: {
|
|
15903
16618
|
size: {
|
|
@@ -15932,9 +16647,38 @@ var ticketCardPurchaseButtonIconVariants = cva(
|
|
|
15932
16647
|
}
|
|
15933
16648
|
}
|
|
15934
16649
|
);
|
|
16650
|
+
var ticketCardImageOverlayVariants = cva(
|
|
16651
|
+
`absolute inset-0 ${DOMAIN_TOKENS.image.overlay.gradient} opacity-0 ${MOTION_TOKENS.transition.opacity} ${MOTION_TOKENS.duration.normal} group-hover:opacity-100`,
|
|
16652
|
+
{
|
|
16653
|
+
variants: {
|
|
16654
|
+
size: {
|
|
16655
|
+
default: "",
|
|
16656
|
+
compact: ""
|
|
16657
|
+
}
|
|
16658
|
+
},
|
|
16659
|
+
defaultVariants: {
|
|
16660
|
+
size: "default"
|
|
16661
|
+
}
|
|
16662
|
+
}
|
|
16663
|
+
);
|
|
16664
|
+
var ticketCardImageTransformVariants = cva(
|
|
16665
|
+
`object-cover ${MOTION_TOKENS.transition.transform} ${MOTION_TOKENS.duration.slow} ${DOMAIN_TOKENS.motion.hover.scale}`,
|
|
16666
|
+
{
|
|
16667
|
+
variants: {
|
|
16668
|
+
size: {
|
|
16669
|
+
default: "",
|
|
16670
|
+
compact: ""
|
|
16671
|
+
}
|
|
16672
|
+
},
|
|
16673
|
+
defaultVariants: {
|
|
16674
|
+
size: "default"
|
|
16675
|
+
}
|
|
16676
|
+
}
|
|
16677
|
+
);
|
|
15935
16678
|
var TicketCard = React49.forwardRef(
|
|
15936
16679
|
({
|
|
15937
16680
|
title,
|
|
16681
|
+
date,
|
|
15938
16682
|
description,
|
|
15939
16683
|
price,
|
|
15940
16684
|
capacity,
|
|
@@ -15981,57 +16725,368 @@ var TicketCard = React49.forwardRef(
|
|
|
15981
16725
|
}
|
|
15982
16726
|
};
|
|
15983
16727
|
const availabilityLabel = getAvailabilityLabel();
|
|
16728
|
+
const formattedDate = date ? formatDate(date) : null;
|
|
16729
|
+
const dateTimeValue = (() => {
|
|
16730
|
+
if (!date) return null;
|
|
16731
|
+
if (typeof date === "string") {
|
|
16732
|
+
return new Date(date).toISOString();
|
|
16733
|
+
}
|
|
16734
|
+
if (date instanceof Date) {
|
|
16735
|
+
return date.toISOString();
|
|
16736
|
+
}
|
|
16737
|
+
return new Date(date).toISOString();
|
|
16738
|
+
})();
|
|
15984
16739
|
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
15985
16740
|
CardBase,
|
|
15986
16741
|
{
|
|
15987
16742
|
ref,
|
|
15988
16743
|
size: size3,
|
|
15989
16744
|
variant: cardVariant,
|
|
15990
|
-
className: cn(
|
|
16745
|
+
className: cn(ticketCardVariants({ size: size3, variant: cardVariant }), className),
|
|
15991
16746
|
...props,
|
|
15992
16747
|
children: [
|
|
15993
16748
|
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: ticketCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
15994
16749
|
vipBadgeText && /* @__PURE__ */ jsx("div", { className: cn(ticketCardBadgeVariants({ size: size3 }), getVipBadgePosition()), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "vip" }), children: vipBadgeText }) }),
|
|
15995
16750
|
discountBadgeText && /* @__PURE__ */ jsx("div", { className: cn(ticketCardBadgeVariants({ size: size3 }), getDiscountBadgePosition()), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "discount" }), children: discountBadgeText }) }),
|
|
15996
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
15997
|
-
|
|
15998
|
-
|
|
15999
|
-
|
|
16000
|
-
|
|
16001
|
-
|
|
16002
|
-
|
|
16003
|
-
|
|
16004
|
-
|
|
16005
|
-
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16751
|
+
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
16752
|
+
"div",
|
|
16753
|
+
{
|
|
16754
|
+
className: cn(
|
|
16755
|
+
"relative w-full overflow-hidden",
|
|
16756
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16757
|
+
),
|
|
16758
|
+
children: [
|
|
16759
|
+
imageUrl ? /* @__PURE__ */ jsx(
|
|
16760
|
+
"img",
|
|
16761
|
+
{
|
|
16762
|
+
src: imageUrl,
|
|
16763
|
+
alt: title,
|
|
16764
|
+
className: cn("h-full w-full", ticketCardImageTransformVariants({ size: size3 }))
|
|
16765
|
+
}
|
|
16766
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
16767
|
+
Icon2,
|
|
16768
|
+
{
|
|
16769
|
+
name: "info",
|
|
16770
|
+
size: "xl",
|
|
16771
|
+
color: "muted",
|
|
16772
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
16773
|
+
"aria-hidden": "true"
|
|
16774
|
+
}
|
|
16775
|
+
) }),
|
|
16776
|
+
/* @__PURE__ */ jsx("div", { className: ticketCardImageOverlayVariants({ size: size3 }) })
|
|
16777
|
+
]
|
|
16778
|
+
}
|
|
16779
|
+
) }),
|
|
16780
|
+
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
16781
|
+
/* @__PURE__ */ jsx(Heading, { level: 3, className: ticketCardTitleVariants({ size: size3 }), children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: title }) : title }),
|
|
16782
|
+
formattedDate && dateTimeValue && /* @__PURE__ */ jsx("time", { dateTime: dateTimeValue, className: ticketCardDateVariants({ size: size3 }), children: formattedDate }),
|
|
16783
|
+
description && /* @__PURE__ */ jsx(Text, { size: "sm", variant: "muted", className: ticketCardDescriptionVariants({ size: size3 }), children: description }),
|
|
16784
|
+
(price || capacity) && /* @__PURE__ */ jsxs("div", { className: ticketCardPriceCapacityContainerVariants({ size: size3 }), children: [
|
|
16785
|
+
price && /* @__PURE__ */ jsx(
|
|
16786
|
+
Text,
|
|
16787
|
+
{
|
|
16788
|
+
size: size3 === "compact" ? "md" : "lg",
|
|
16789
|
+
weight: "bold",
|
|
16790
|
+
className: ticketCardPriceVariants({ size: size3 }),
|
|
16791
|
+
children: price
|
|
16792
|
+
}
|
|
16793
|
+
),
|
|
16794
|
+
capacity && /* @__PURE__ */ jsx(
|
|
16795
|
+
Text,
|
|
16796
|
+
{
|
|
16797
|
+
size: size3 === "compact" ? "xs" : "sm",
|
|
16798
|
+
variant: "muted",
|
|
16799
|
+
className: ticketCardCapacityVariants({ size: size3 }),
|
|
16800
|
+
children: capacity
|
|
16801
|
+
}
|
|
16802
|
+
)
|
|
16803
|
+
] }),
|
|
16804
|
+
availabilityLabel && /* @__PURE__ */ jsx("div", { className: ticketCardAvailabilityVariants({ availability }), children: /* @__PURE__ */ jsx(Text, { size: "xs", variant: availability === "sold_out" ? "muted" : "primary", children: availabilityLabel }) })
|
|
16805
|
+
] }),
|
|
16806
|
+
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full", ticketCardFooterVariants({ size: size3 })), children: [
|
|
16807
|
+
purchaseUrl && !isPurchaseDisabled && /* @__PURE__ */ jsxs(
|
|
16808
|
+
Link,
|
|
16010
16809
|
{
|
|
16011
|
-
|
|
16012
|
-
|
|
16013
|
-
|
|
16014
|
-
|
|
16015
|
-
|
|
16810
|
+
href: purchaseUrl,
|
|
16811
|
+
className: cn(
|
|
16812
|
+
"w-full",
|
|
16813
|
+
ticketCardPurchaseButtonVariants({ size: size3, disabled: false })
|
|
16814
|
+
),
|
|
16815
|
+
target: "_blank",
|
|
16816
|
+
rel: "noopener noreferrer",
|
|
16817
|
+
children: [
|
|
16818
|
+
purchaseLabel,
|
|
16819
|
+
/* @__PURE__ */ jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16820
|
+
]
|
|
16016
16821
|
}
|
|
16017
|
-
)
|
|
16018
|
-
/* @__PURE__ */
|
|
16822
|
+
),
|
|
16823
|
+
(!purchaseUrl || isPurchaseDisabled) && /* @__PURE__ */ jsxs(
|
|
16019
16824
|
"div",
|
|
16020
16825
|
{
|
|
16021
16826
|
className: cn(
|
|
16022
|
-
"
|
|
16023
|
-
|
|
16024
|
-
)
|
|
16827
|
+
"w-full",
|
|
16828
|
+
ticketCardPurchaseButtonVariants({ size: size3, disabled: isPurchaseDisabled })
|
|
16829
|
+
),
|
|
16830
|
+
children: [
|
|
16831
|
+
purchaseLabel,
|
|
16832
|
+
/* @__PURE__ */ jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16833
|
+
]
|
|
16025
16834
|
}
|
|
16026
16835
|
)
|
|
16027
|
-
] }) })
|
|
16836
|
+
] }) })
|
|
16837
|
+
]
|
|
16838
|
+
}
|
|
16839
|
+
) });
|
|
16840
|
+
}
|
|
16841
|
+
);
|
|
16842
|
+
TicketCard.displayName = "TicketCard";
|
|
16843
|
+
var eventCardVariants = cva(
|
|
16844
|
+
// Base classes - surface, border, radius, shadow, motion from tokens
|
|
16845
|
+
`${DOMAIN_TOKENS.surface.bg.default} ${DOMAIN_TOKENS.surface.border.default} ${DOMAIN_TOKENS.surface.radius.default} ${DOMAIN_TOKENS.surface.shadow.default} ${DOMAIN_TOKENS.surface.bg.hover} ${DOMAIN_TOKENS.surface.border.hover} ${DOMAIN_TOKENS.surface.elevation.hover} ${DOMAIN_TOKENS.motion.hover.transition} overflow-hidden`,
|
|
16846
|
+
{
|
|
16847
|
+
variants: {
|
|
16848
|
+
size: {
|
|
16849
|
+
default: `${CARD_TOKENS.size.md.padding} ${DOMAIN_TOKENS.layout.gap.default}`,
|
|
16850
|
+
compact: `${CARD_TOKENS.size.sm.padding} ${DOMAIN_TOKENS.layout.gap.compact}`
|
|
16851
|
+
},
|
|
16852
|
+
layout: {
|
|
16853
|
+
vertical: "flex flex-col"
|
|
16854
|
+
},
|
|
16855
|
+
variant: {
|
|
16856
|
+
default: "",
|
|
16857
|
+
featured: `${DOMAIN_TOKENS.badges.surface.featured}`
|
|
16858
|
+
}
|
|
16859
|
+
},
|
|
16860
|
+
defaultVariants: {
|
|
16861
|
+
size: "default",
|
|
16862
|
+
layout: "vertical",
|
|
16863
|
+
variant: "default"
|
|
16864
|
+
}
|
|
16865
|
+
}
|
|
16866
|
+
);
|
|
16867
|
+
var eventCardBadgeVariants = cva(
|
|
16868
|
+
// Base classes - absolute positioning, z-index
|
|
16869
|
+
"absolute z-10",
|
|
16870
|
+
{
|
|
16871
|
+
variants: {
|
|
16872
|
+
size: {
|
|
16873
|
+
default: DOMAIN_TOKENS.badges.position.default,
|
|
16874
|
+
compact: DOMAIN_TOKENS.badges.position.compact
|
|
16875
|
+
}
|
|
16876
|
+
},
|
|
16877
|
+
defaultVariants: {
|
|
16878
|
+
size: "default"
|
|
16879
|
+
}
|
|
16880
|
+
}
|
|
16881
|
+
);
|
|
16882
|
+
var eventCardBadgeSurfaceVariants = cva(
|
|
16883
|
+
// Base classes - flex layout, items center, badge styling from tokens
|
|
16884
|
+
`inline-flex items-center ${DOMAIN_TOKENS.badges.radius} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.badges.size.sm} ${DOMAIN_TOKENS.badges.text.color} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
16885
|
+
{
|
|
16886
|
+
variants: {
|
|
16887
|
+
variant: {
|
|
16888
|
+
default: DOMAIN_TOKENS.badges.surface.default,
|
|
16889
|
+
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
16890
|
+
}
|
|
16891
|
+
},
|
|
16892
|
+
defaultVariants: {
|
|
16893
|
+
variant: "featured"
|
|
16894
|
+
}
|
|
16895
|
+
}
|
|
16896
|
+
);
|
|
16897
|
+
var eventCardMetadataVariants = cva(
|
|
16898
|
+
// Base classes - flex column, metadata spacing from tokens
|
|
16899
|
+
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
16900
|
+
{
|
|
16901
|
+
variants: {
|
|
16902
|
+
size: {
|
|
16903
|
+
default: "",
|
|
16904
|
+
compact: ""
|
|
16905
|
+
}
|
|
16906
|
+
},
|
|
16907
|
+
defaultVariants: {
|
|
16908
|
+
size: "default"
|
|
16909
|
+
}
|
|
16910
|
+
}
|
|
16911
|
+
);
|
|
16912
|
+
var eventCardMetadataItemVariants = cva(
|
|
16913
|
+
// Base classes - flex items center, metadata spacing and text from tokens
|
|
16914
|
+
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
16915
|
+
{
|
|
16916
|
+
variants: {
|
|
16917
|
+
size: {
|
|
16918
|
+
default: "",
|
|
16919
|
+
compact: ""
|
|
16920
|
+
}
|
|
16921
|
+
},
|
|
16922
|
+
defaultVariants: {
|
|
16923
|
+
size: "default"
|
|
16924
|
+
}
|
|
16925
|
+
}
|
|
16926
|
+
);
|
|
16927
|
+
var eventCardMetadataIconVariants = cva(
|
|
16928
|
+
// Base classes - icon size and color from tokens
|
|
16929
|
+
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.metadata.icon.default}`,
|
|
16930
|
+
{
|
|
16931
|
+
variants: {
|
|
16932
|
+
size: {
|
|
16933
|
+
default: "",
|
|
16934
|
+
compact: ""
|
|
16935
|
+
}
|
|
16936
|
+
},
|
|
16937
|
+
defaultVariants: {
|
|
16938
|
+
size: "default"
|
|
16939
|
+
}
|
|
16940
|
+
}
|
|
16941
|
+
);
|
|
16942
|
+
var eventCardFooterVariants = cva(
|
|
16943
|
+
// Base classes - border top, spacing from tokens
|
|
16944
|
+
"border-t border-border",
|
|
16945
|
+
{
|
|
16946
|
+
variants: {
|
|
16947
|
+
size: {
|
|
16948
|
+
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
16949
|
+
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
16950
|
+
}
|
|
16951
|
+
},
|
|
16952
|
+
defaultVariants: {
|
|
16953
|
+
size: "default"
|
|
16954
|
+
}
|
|
16955
|
+
}
|
|
16956
|
+
);
|
|
16957
|
+
var eventCardTicketButtonVariants = cva(
|
|
16958
|
+
// Base classes - flex layout, badge gradient, motion from tokens
|
|
16959
|
+
`inline-flex items-center justify-center ${DOMAIN_TOKENS.badges.surface.featured} ${DOMAIN_TOKENS.badges.text.color} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.motion.hover.transition} ${TEXT_TOKENS.fontWeight.semibold} transform`,
|
|
16960
|
+
{
|
|
16961
|
+
variants: {
|
|
16962
|
+
size: {
|
|
16963
|
+
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
16964
|
+
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
16965
|
+
}
|
|
16966
|
+
},
|
|
16967
|
+
defaultVariants: {
|
|
16968
|
+
size: "default"
|
|
16969
|
+
}
|
|
16970
|
+
}
|
|
16971
|
+
);
|
|
16972
|
+
var eventCardTicketButtonIconVariants = cva(
|
|
16973
|
+
// Base classes - icon size and spacing from tokens
|
|
16974
|
+
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
16975
|
+
{
|
|
16976
|
+
variants: {
|
|
16977
|
+
size: {
|
|
16978
|
+
default: "",
|
|
16979
|
+
compact: ""
|
|
16980
|
+
}
|
|
16981
|
+
},
|
|
16982
|
+
defaultVariants: {
|
|
16983
|
+
size: "default"
|
|
16984
|
+
}
|
|
16985
|
+
}
|
|
16986
|
+
);
|
|
16987
|
+
var eventCardPriceVariants = cva(
|
|
16988
|
+
// Base classes - price gradient text from tokens
|
|
16989
|
+
`bg-gradient-to-r from-accent-500 to-primary-600 bg-clip-text text-transparent`,
|
|
16990
|
+
{
|
|
16991
|
+
variants: {
|
|
16992
|
+
size: {
|
|
16993
|
+
default: TEXT_TOKENS.fontSize.lg,
|
|
16994
|
+
compact: TEXT_TOKENS.fontSize.md
|
|
16995
|
+
}
|
|
16996
|
+
},
|
|
16997
|
+
defaultVariants: {
|
|
16998
|
+
size: "default"
|
|
16999
|
+
}
|
|
17000
|
+
}
|
|
17001
|
+
);
|
|
17002
|
+
var EventCard = React49.forwardRef(
|
|
17003
|
+
({
|
|
17004
|
+
title,
|
|
17005
|
+
description,
|
|
17006
|
+
date,
|
|
17007
|
+
venueName,
|
|
17008
|
+
price,
|
|
17009
|
+
imageUrl,
|
|
17010
|
+
href,
|
|
17011
|
+
ticketUrl,
|
|
17012
|
+
featured = false,
|
|
17013
|
+
showImage = true,
|
|
17014
|
+
getTicketsLabel,
|
|
17015
|
+
featuredBadgeText,
|
|
17016
|
+
size: size3 = "default",
|
|
17017
|
+
layout = "vertical",
|
|
17018
|
+
variant,
|
|
17019
|
+
className,
|
|
17020
|
+
animation,
|
|
17021
|
+
...props
|
|
17022
|
+
}, ref) => {
|
|
17023
|
+
const animationProps = resolveComponentAnimations({
|
|
17024
|
+
animation: animation?.animation || "fadeInUp",
|
|
17025
|
+
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
17026
|
+
animationProps: animation?.animationProps
|
|
17027
|
+
});
|
|
17028
|
+
const cardVariant = variant || (featured ? "featured" : "default");
|
|
17029
|
+
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
17030
|
+
CardBase,
|
|
17031
|
+
{
|
|
17032
|
+
ref,
|
|
17033
|
+
size: size3,
|
|
17034
|
+
variant: cardVariant,
|
|
17035
|
+
className: cn(
|
|
17036
|
+
eventCardVariants({ size: size3, layout, variant: cardVariant }),
|
|
17037
|
+
"group relative",
|
|
17038
|
+
className
|
|
17039
|
+
),
|
|
17040
|
+
...props,
|
|
17041
|
+
children: [
|
|
17042
|
+
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: eventCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsx("span", { className: eventCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
17043
|
+
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxs(
|
|
17044
|
+
"div",
|
|
17045
|
+
{
|
|
17046
|
+
className: cn("relative w-full overflow-hidden", DOMAIN_TOKENS.surface.bg.default),
|
|
17047
|
+
children: [
|
|
17048
|
+
imageUrl ? /* @__PURE__ */ jsx(
|
|
17049
|
+
"img",
|
|
17050
|
+
{
|
|
17051
|
+
src: imageUrl,
|
|
17052
|
+
alt: title,
|
|
17053
|
+
className: cn(
|
|
17054
|
+
"h-full w-full object-cover",
|
|
17055
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
17056
|
+
DOMAIN_TOKENS.motion.hover.scale
|
|
17057
|
+
)
|
|
17058
|
+
}
|
|
17059
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
17060
|
+
Icon2,
|
|
17061
|
+
{
|
|
17062
|
+
name: "info",
|
|
17063
|
+
size: "xl",
|
|
17064
|
+
color: "muted",
|
|
17065
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
17066
|
+
"aria-hidden": "true"
|
|
17067
|
+
}
|
|
17068
|
+
) }),
|
|
17069
|
+
/* @__PURE__ */ jsx(
|
|
17070
|
+
"div",
|
|
17071
|
+
{
|
|
17072
|
+
className: cn(
|
|
17073
|
+
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
17074
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
17075
|
+
DOMAIN_TOKENS.image.overlay.gradient
|
|
17076
|
+
)
|
|
17077
|
+
}
|
|
17078
|
+
)
|
|
17079
|
+
]
|
|
17080
|
+
}
|
|
17081
|
+
) }),
|
|
16028
17082
|
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
16029
17083
|
/* @__PURE__ */ jsx(
|
|
16030
17084
|
Heading,
|
|
16031
17085
|
{
|
|
16032
17086
|
level: 3,
|
|
16033
17087
|
className: cn(
|
|
16034
|
-
"line-clamp-2
|
|
17088
|
+
"line-clamp-2 group-hover:text-primary",
|
|
17089
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
16035
17090
|
TEXT_TOKENS.fontSize.lg,
|
|
16036
17091
|
TEXT_TOKENS.fontWeight.bold,
|
|
16037
17092
|
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
@@ -16043,7 +17098,7 @@ var TicketCard = React49.forwardRef(
|
|
|
16043
17098
|
Text,
|
|
16044
17099
|
{
|
|
16045
17100
|
size: "sm",
|
|
16046
|
-
|
|
17101
|
+
muted: true,
|
|
16047
17102
|
className: cn(
|
|
16048
17103
|
"line-clamp-2",
|
|
16049
17104
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
@@ -16051,48 +17106,56 @@ var TicketCard = React49.forwardRef(
|
|
|
16051
17106
|
children: description
|
|
16052
17107
|
}
|
|
16053
17108
|
),
|
|
16054
|
-
|
|
16055
|
-
|
|
16056
|
-
|
|
16057
|
-
|
|
16058
|
-
|
|
17109
|
+
/* @__PURE__ */ jsxs("div", { className: eventCardMetadataVariants({ size: size3 }), children: [
|
|
17110
|
+
date && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), role: "text", children: [
|
|
17111
|
+
/* @__PURE__ */ jsx(
|
|
17112
|
+
IconCalendar,
|
|
17113
|
+
{
|
|
17114
|
+
className: eventCardMetadataIconVariants({ size: size3 }),
|
|
17115
|
+
"aria-hidden": true
|
|
17116
|
+
}
|
|
17117
|
+
),
|
|
17118
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, children: /* @__PURE__ */ jsx("time", { dateTime: date, children: date }) })
|
|
17119
|
+
] }),
|
|
17120
|
+
venueName && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), role: "text", children: [
|
|
17121
|
+
/* @__PURE__ */ jsx(
|
|
17122
|
+
IconLocation,
|
|
17123
|
+
{
|
|
17124
|
+
className: eventCardMetadataIconVariants({ size: size3 }),
|
|
17125
|
+
"aria-hidden": true
|
|
17126
|
+
}
|
|
17127
|
+
),
|
|
17128
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, className: "line-clamp-1", children: /* @__PURE__ */ jsx("address", { children: venueName }) })
|
|
17129
|
+
] })
|
|
17130
|
+
] })
|
|
16059
17131
|
] }),
|
|
16060
|
-
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full",
|
|
16061
|
-
|
|
17132
|
+
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full", eventCardFooterVariants({ size: size3 })), children: [
|
|
17133
|
+
ticketUrl && /* @__PURE__ */ jsxs(
|
|
16062
17134
|
Link,
|
|
16063
17135
|
{
|
|
16064
|
-
href:
|
|
16065
|
-
className: cn(
|
|
16066
|
-
"w-full",
|
|
16067
|
-
ticketCardPurchaseButtonVariants({ size: size3, disabled: false })
|
|
16068
|
-
),
|
|
17136
|
+
href: ticketUrl,
|
|
17137
|
+
className: cn("w-full", eventCardTicketButtonVariants({ size: size3 })),
|
|
16069
17138
|
target: "_blank",
|
|
16070
17139
|
rel: "noopener noreferrer",
|
|
16071
17140
|
children: [
|
|
16072
|
-
|
|
16073
|
-
/* @__PURE__ */ jsx(
|
|
17141
|
+
getTicketsLabel,
|
|
17142
|
+
/* @__PURE__ */ jsx(
|
|
17143
|
+
IconArrowRight,
|
|
17144
|
+
{
|
|
17145
|
+
className: eventCardTicketButtonIconVariants({ size: size3 }),
|
|
17146
|
+
"aria-hidden": true
|
|
17147
|
+
}
|
|
17148
|
+
)
|
|
16074
17149
|
]
|
|
16075
17150
|
}
|
|
16076
17151
|
),
|
|
16077
|
-
|
|
16078
|
-
"div",
|
|
16079
|
-
{
|
|
16080
|
-
className: cn(
|
|
16081
|
-
"w-full",
|
|
16082
|
-
ticketCardPurchaseButtonVariants({ size: size3, disabled: isPurchaseDisabled })
|
|
16083
|
-
),
|
|
16084
|
-
children: [
|
|
16085
|
-
purchaseLabel,
|
|
16086
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16087
|
-
]
|
|
16088
|
-
}
|
|
16089
|
-
)
|
|
17152
|
+
!ticketUrl && price && /* @__PURE__ */ jsx("div", { className: "text-right", children: /* @__PURE__ */ jsx(Text, { size: size3 === "compact" ? "md" : "lg", weight: "bold", children: /* @__PURE__ */ jsx("span", { className: eventCardPriceVariants({ size: size3 }), children: price }) }) })
|
|
16090
17153
|
] }) })
|
|
16091
17154
|
]
|
|
16092
17155
|
}
|
|
16093
17156
|
) });
|
|
16094
17157
|
}
|
|
16095
17158
|
);
|
|
16096
|
-
|
|
17159
|
+
EventCard.displayName = "EventCard";
|
|
16097
17160
|
|
|
16098
|
-
export { ALERT_TOKENS, Alert, ArtistCard, BUTTON_TOKENS, Backdrop, Body, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Caption, Card, CardBody, CardFooter, CardHeader, Checkbox, Code, Column, Container, Surface2 as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DOMAIN_TOKENS, DROPDOWN_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, Display, DropdownMenuCheckItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, EventCard, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, Label2 as Label, Lead, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, PopoverArrow, PopoverContent, PopoverRoot, PopoverTrigger, Portal3 as Portal, PromoCard, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, TicketCard, Toast, ToastProvider, ToastViewport, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, baseColors, bodyVariants, borderRadius, buttonVariants, captionVariants, chartColors, checkboxVariants, codeVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants2 as containerSurfaceVariants, cssVariableColorTokens, displayVariants, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, leadVariants, letterSpacing, lineHeight, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, popoverContentVariants, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
|
|
17161
|
+
export { ALERT_TOKENS, Alert, ArtistCard, BUTTON_TOKENS, Backdrop, Body, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Caption, Card, CardBody, CardFooter, CardHeader, CategoryCard, Checkbox, Code, Column, Container, Surface2 as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DOMAIN_TOKENS, DROPDOWN_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, Display, DropdownMenuCheckItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, EventCard, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, Label2 as Label, Lead, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, PopoverArrow, PopoverContent, PopoverRoot, PopoverTrigger, Portal3 as Portal, PromoCard, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, TicketCard, Toast, ToastProvider, ToastViewport, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, baseColors, bodyVariants, borderRadius, buttonVariants, captionVariants, chartColors, checkboxVariants, codeVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants2 as containerSurfaceVariants, cssVariableColorTokens, displayVariants, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, leadVariants, letterSpacing, lineHeight, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, popoverContentVariants, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
|