@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.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var reactSlot = require('@radix-ui/react-slot');
|
|
4
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
5
4
|
var React49 = require('react');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var tailwindMerge = require('tailwind-merge');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -49,13 +49,18 @@ var primaryColors = {
|
|
|
49
49
|
100: "210 40% 96%",
|
|
50
50
|
200: "217 32.6% 17.5%",
|
|
51
51
|
300: "216 28% 26%",
|
|
52
|
-
400: "215 25%
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
400: "215 25% 30%",
|
|
53
|
+
// Adjusted for better progression
|
|
54
|
+
500: "215 20% 38%",
|
|
55
|
+
// Adjusted for better progression
|
|
56
|
+
600: "215 16% 45%",
|
|
57
|
+
// Adjusted for better progression
|
|
58
|
+
700: "216 12% 35%",
|
|
59
|
+
// Rebalanced for semantic strength (L* ~35)
|
|
60
|
+
800: "217 10% 28%",
|
|
61
|
+
// Adjusted for proper progression
|
|
62
|
+
900: "222 47.4% 18%",
|
|
63
|
+
// Adjusted for better progression
|
|
59
64
|
950: "222 84% 4.9%"
|
|
60
65
|
// Darkest blue
|
|
61
66
|
};
|
|
@@ -65,12 +70,15 @@ var accentColors = {
|
|
|
65
70
|
200: "280 60% 85%",
|
|
66
71
|
300: "280 55% 75%",
|
|
67
72
|
400: "280 50% 65%",
|
|
68
|
-
500: "280
|
|
69
|
-
//
|
|
70
|
-
600: "259 65%
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
500: "280 65% 72%",
|
|
74
|
+
// Adjusted for WCAG AA contrast (4.5:1) with dark text in night mode
|
|
75
|
+
600: "259 65% 59%",
|
|
76
|
+
// Default accent - lightened for better contrast vs secondary (L* ~59, was 52, 15 delta from secondary-600)
|
|
77
|
+
700: "259 60% 44%",
|
|
78
|
+
// Active state - rebalanced for semantic strength (L* ~44, 12 delta from secondary-700)
|
|
79
|
+
800: "259 55% 38%",
|
|
80
|
+
// Adjusted for proper progression
|
|
81
|
+
900: "259 50% 32%",
|
|
74
82
|
950: "259 45% 30%"
|
|
75
83
|
};
|
|
76
84
|
var secondaryColors = {
|
|
@@ -79,12 +87,15 @@ var secondaryColors = {
|
|
|
79
87
|
200: "173 100% 85%",
|
|
80
88
|
300: "173 100% 70%",
|
|
81
89
|
400: "173 100% 55%",
|
|
82
|
-
500: "173 100%
|
|
83
|
-
//
|
|
84
|
-
600: "173 100%
|
|
85
|
-
|
|
90
|
+
500: "173 100% 45%",
|
|
91
|
+
// Adjusted for better scale progression
|
|
92
|
+
600: "173 100% 44%",
|
|
93
|
+
// Default secondary - rebalanced for better contrast vs primary (L* ~44, was 38)
|
|
94
|
+
700: "173 95% 32%",
|
|
95
|
+
// Active state - rebalanced for semantic strength (L* ~32)
|
|
86
96
|
800: "173 90% 22%",
|
|
87
|
-
|
|
97
|
+
// Primary variant - darkened for dominance (L* ~22, was 26)
|
|
98
|
+
900: "173 85% 20%",
|
|
88
99
|
950: "173 80% 12%"
|
|
89
100
|
};
|
|
90
101
|
var surfaceColors = {
|
|
@@ -177,13 +188,13 @@ var chartColors = {
|
|
|
177
188
|
var textColors = {
|
|
178
189
|
day: {
|
|
179
190
|
primary: "0 0% 9%",
|
|
180
|
-
// Almost black
|
|
191
|
+
// Almost black (neutral-900 equivalent)
|
|
181
192
|
secondary: "0 0% 45%",
|
|
182
193
|
// Medium gray
|
|
183
194
|
tertiary: "0 0% 65%",
|
|
184
195
|
// Light gray
|
|
185
|
-
muted: "0 0%
|
|
186
|
-
// Muted gray
|
|
196
|
+
muted: "0 0% 42%",
|
|
197
|
+
// Muted gray - adjusted for WCAG AA contrast (4.5:1) on surface.elevated2
|
|
187
198
|
inverse: "0 0% 100%"
|
|
188
199
|
// White (for dark backgrounds)
|
|
189
200
|
},
|
|
@@ -495,6 +506,139 @@ var ALERT_TOKENS = {
|
|
|
495
506
|
}
|
|
496
507
|
};
|
|
497
508
|
|
|
509
|
+
// src/tokens/components/motion.ts
|
|
510
|
+
var MOTION_TOKENS = {
|
|
511
|
+
/**
|
|
512
|
+
* Transition property tokens
|
|
513
|
+
* Maps to Tailwind transition utilities
|
|
514
|
+
*/
|
|
515
|
+
transition: {
|
|
516
|
+
all: "transition-all",
|
|
517
|
+
// All properties
|
|
518
|
+
colors: "transition-colors",
|
|
519
|
+
// Color properties only
|
|
520
|
+
opacity: "transition-opacity",
|
|
521
|
+
// Opacity only
|
|
522
|
+
transform: "transition-transform",
|
|
523
|
+
// Transform only
|
|
524
|
+
shadow: "transition-shadow",
|
|
525
|
+
// Box shadow only
|
|
526
|
+
none: "transition-none"
|
|
527
|
+
// No transition
|
|
528
|
+
},
|
|
529
|
+
/**
|
|
530
|
+
* Duration tokens
|
|
531
|
+
* Maps to foundation motion duration tokens via Tailwind
|
|
532
|
+
*/
|
|
533
|
+
duration: {
|
|
534
|
+
instant: "duration-0",
|
|
535
|
+
// 0ms
|
|
536
|
+
fast: "duration-fast",
|
|
537
|
+
// 150ms - maps to motion.durations.fast
|
|
538
|
+
normal: "duration-normal",
|
|
539
|
+
// 300ms - maps to motion.durations.normal
|
|
540
|
+
slow: "duration-slow",
|
|
541
|
+
// 500ms - maps to motion.durations.slow
|
|
542
|
+
slower: "duration-slower",
|
|
543
|
+
// 700ms - maps to motion.durations.slower
|
|
544
|
+
slowest: "duration-slowest",
|
|
545
|
+
// 1000ms - maps to motion.durations.slowest
|
|
546
|
+
// Granular durations
|
|
547
|
+
"75": "duration-75",
|
|
548
|
+
// 75ms
|
|
549
|
+
"100": "duration-100",
|
|
550
|
+
// 100ms
|
|
551
|
+
"200": "duration-200",
|
|
552
|
+
// 200ms
|
|
553
|
+
"250": "duration-250",
|
|
554
|
+
// 250ms
|
|
555
|
+
"300": "duration-300",
|
|
556
|
+
// 300ms
|
|
557
|
+
"400": "duration-400",
|
|
558
|
+
// 400ms
|
|
559
|
+
"500": "duration-500",
|
|
560
|
+
// 500ms
|
|
561
|
+
"600": "duration-600",
|
|
562
|
+
// 600ms
|
|
563
|
+
"700": "duration-700",
|
|
564
|
+
// 700ms
|
|
565
|
+
"800": "duration-800",
|
|
566
|
+
// 800ms
|
|
567
|
+
"1000": "duration-1000"
|
|
568
|
+
// 1000ms
|
|
569
|
+
},
|
|
570
|
+
/**
|
|
571
|
+
* Easing tokens
|
|
572
|
+
* Maps to foundation motion easing tokens via Tailwind
|
|
573
|
+
*/
|
|
574
|
+
easing: {
|
|
575
|
+
linear: "ease-linear",
|
|
576
|
+
// Linear easing
|
|
577
|
+
in: "ease-in",
|
|
578
|
+
// Ease in
|
|
579
|
+
out: "ease-out",
|
|
580
|
+
// Ease out (recommended for most UI)
|
|
581
|
+
"in-out": "ease-in-out",
|
|
582
|
+
// Ease in-out
|
|
583
|
+
bounce: "ease-bounce",
|
|
584
|
+
// Bounce easing
|
|
585
|
+
elastic: "ease-elastic"
|
|
586
|
+
// Elastic easing
|
|
587
|
+
},
|
|
588
|
+
/**
|
|
589
|
+
* Pre-configured transition tokens
|
|
590
|
+
* Combines duration and easing for common use cases
|
|
591
|
+
*/
|
|
592
|
+
transitionPreset: {
|
|
593
|
+
fast: "transition-all duration-fast ease-out",
|
|
594
|
+
// Fast transition
|
|
595
|
+
normal: "transition-all duration-normal ease-in-out",
|
|
596
|
+
// Normal transition (default)
|
|
597
|
+
slow: "transition-all duration-slow ease-in-out",
|
|
598
|
+
// Slow transition
|
|
599
|
+
colors: "transition-colors duration-normal ease-out",
|
|
600
|
+
// Color transitions (common)
|
|
601
|
+
transform: "transition-transform duration-normal ease-out",
|
|
602
|
+
// Transform transitions
|
|
603
|
+
opacity: "transition-opacity duration-fast ease-out"
|
|
604
|
+
// Opacity transitions
|
|
605
|
+
},
|
|
606
|
+
/**
|
|
607
|
+
* Animation tokens
|
|
608
|
+
* Maps to foundation motion animation tokens via Tailwind
|
|
609
|
+
*/
|
|
610
|
+
animation: {
|
|
611
|
+
none: "animate-none",
|
|
612
|
+
// No animation
|
|
613
|
+
spin: "animate-spin",
|
|
614
|
+
// Spin animation
|
|
615
|
+
pulse: "animate-pulse",
|
|
616
|
+
// Pulse animation
|
|
617
|
+
bounce: "animate-bounce",
|
|
618
|
+
// Bounce animation
|
|
619
|
+
ping: "animate-ping",
|
|
620
|
+
// Ping animation
|
|
621
|
+
shake: "animate-shake",
|
|
622
|
+
// Shake animation
|
|
623
|
+
fadeIn: "animate-fadeIn",
|
|
624
|
+
// Fade in
|
|
625
|
+
fadeOut: "animate-fadeOut",
|
|
626
|
+
// Fade out
|
|
627
|
+
slideInUp: "animate-slideInUp",
|
|
628
|
+
// Slide in from bottom
|
|
629
|
+
slideInDown: "animate-slideInDown",
|
|
630
|
+
// Slide in from top
|
|
631
|
+
slideInLeft: "animate-slideInLeft",
|
|
632
|
+
// Slide in from right
|
|
633
|
+
slideInRight: "animate-slideInRight",
|
|
634
|
+
// Slide in from left
|
|
635
|
+
scaleIn: "animate-scaleIn",
|
|
636
|
+
// Scale in
|
|
637
|
+
scaleOut: "animate-scaleOut"
|
|
638
|
+
// Scale out
|
|
639
|
+
}
|
|
640
|
+
};
|
|
641
|
+
|
|
498
642
|
// src/tokens/components/button.ts
|
|
499
643
|
var BUTTON_TOKENS = {
|
|
500
644
|
/**
|
|
@@ -527,25 +671,48 @@ var BUTTON_TOKENS = {
|
|
|
527
671
|
vertical: {
|
|
528
672
|
sm: "py-xs",
|
|
529
673
|
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
530
|
-
md: "py-sm"
|
|
674
|
+
md: "py-sm",
|
|
531
675
|
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
676
|
+
lg: "py-md"
|
|
677
|
+
// 16px (1rem) - maps to semanticSpacing.md - standardized for visual distinction
|
|
532
678
|
}
|
|
533
679
|
},
|
|
534
680
|
/**
|
|
535
|
-
* Gap between icon and text
|
|
681
|
+
* Gap between icon and text by size
|
|
682
|
+
* Scales with button size for visual consistency
|
|
536
683
|
*/
|
|
537
|
-
gap:
|
|
538
|
-
|
|
684
|
+
gap: {
|
|
685
|
+
sm: "gap-xs",
|
|
686
|
+
// 4px (0.25rem) - smaller gap for small buttons
|
|
687
|
+
md: "gap-sm",
|
|
688
|
+
// 8px (0.5rem) - medium gap for medium buttons
|
|
689
|
+
lg: "gap-md"
|
|
690
|
+
// 16px (1rem) - larger gap for large buttons
|
|
691
|
+
},
|
|
539
692
|
/**
|
|
540
693
|
* Border radius for all button sizes
|
|
694
|
+
* Consistent radius across sizes for visual harmony
|
|
695
|
+
*
|
|
696
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
697
|
+
* @rule References componentRadius.button.md (6px / 0.375rem) from Radius Authority
|
|
698
|
+
* @see docs/architecture/RADIUS_AUTHORITY_CONTRACT.md
|
|
541
699
|
*/
|
|
542
700
|
radius: "rounded-md",
|
|
543
|
-
// 6px
|
|
701
|
+
// References componentRadius.button.md (6px / 0.375rem) - Radius Authority compliant
|
|
544
702
|
/**
|
|
545
|
-
* Icon size within buttons
|
|
703
|
+
* Icon size within buttons by button size
|
|
704
|
+
* Scales proportionally with button size for visual balance
|
|
546
705
|
*/
|
|
547
|
-
iconSize:
|
|
548
|
-
|
|
706
|
+
iconSize: {
|
|
707
|
+
sm: "size-3.5",
|
|
708
|
+
// 14px (0.875rem) - smaller icon for small buttons
|
|
709
|
+
md: "size-4",
|
|
710
|
+
// 16px (1rem) - medium icon for medium buttons
|
|
711
|
+
lg: "size-5",
|
|
712
|
+
// 20px (1.25rem) - larger icon for large buttons
|
|
713
|
+
icon: "size-4"
|
|
714
|
+
// 16px (1rem) - medium icon for icon-only buttons
|
|
715
|
+
},
|
|
549
716
|
/**
|
|
550
717
|
* Width tokens
|
|
551
718
|
*/
|
|
@@ -555,15 +722,19 @@ var BUTTON_TOKENS = {
|
|
|
555
722
|
},
|
|
556
723
|
/**
|
|
557
724
|
* Font sizes by button size
|
|
558
|
-
*
|
|
725
|
+
* References foundation typography fontSize tokens from Typography Authority
|
|
726
|
+
*
|
|
727
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
728
|
+
* @rule All fontSize values reference Typography Authority tokens
|
|
729
|
+
* @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
|
|
559
730
|
*/
|
|
560
731
|
fontSize: {
|
|
561
732
|
sm: "text-xs",
|
|
562
|
-
//
|
|
733
|
+
// References fontSize.xs[0] from Typography Authority (~12px)
|
|
563
734
|
md: "text-sm",
|
|
564
|
-
//
|
|
565
|
-
lg: "text-
|
|
566
|
-
//
|
|
735
|
+
// References fontSize.sm[0] from Typography Authority (~14px)
|
|
736
|
+
lg: "text-base"
|
|
737
|
+
// References fontSize.base[0] from Typography Authority (~16px)
|
|
567
738
|
},
|
|
568
739
|
/**
|
|
569
740
|
* Shadow tokens by variant
|
|
@@ -578,50 +749,137 @@ var BUTTON_TOKENS = {
|
|
|
578
749
|
/**
|
|
579
750
|
* Color tokens for button variants
|
|
580
751
|
* Uses semantic color tokens that map to CSS variables
|
|
752
|
+
*
|
|
753
|
+
* State tokens (hover, active, disabled) use CSS variables from State Matrix.
|
|
754
|
+
* All states are injected via updateStateMatrixFromTokens() and consumed via arbitrary values.
|
|
755
|
+
* States react to Color Authority changes automatically through State Matrix.
|
|
756
|
+
*
|
|
757
|
+
* Interaction Authority Rules:
|
|
758
|
+
* - Hover (Priority 4): hover: prefix - ONLY when !disabled && !loading && pointer-events:auto
|
|
759
|
+
* - Active (Priority 3): active: prefix - ONLY when !disabled && !loading && mousedown
|
|
760
|
+
* - Focus (Priority 5): focus-visible: prefix - ONLY when !disabled && keyboard navigation
|
|
761
|
+
* - Disabled (Priority 1): disabled: prefix - Blocks ALL interactions
|
|
762
|
+
* - Loading (Priority 2): loading: prefix - Blocks hover/active (when implemented)
|
|
763
|
+
* - Base (Priority 6): No prefix - Default state, pointer-events: auto
|
|
764
|
+
*
|
|
765
|
+
* @enforcement TUNG_STATE_AUTHORITY_FOUNDATION_LOCK
|
|
766
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
767
|
+
* @rule States use CSS variables, not Tailwind variants
|
|
768
|
+
* @rule All state variables follow pattern: --{component}-{variant}-{state}-{property}
|
|
769
|
+
* @rule Visual states (colors) are SEPARATE from interaction states (pointer-events)
|
|
770
|
+
* @rule Hover MUST work with real mouse cursor, NOT just DevTools force state
|
|
771
|
+
* @rule Active MUST activate only on mousedown, NOT on hover
|
|
772
|
+
* @rule Focus MUST activate only on keyboard navigation, NOT on mouse click
|
|
773
|
+
*
|
|
774
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
581
775
|
*/
|
|
582
776
|
variant: {
|
|
583
777
|
primary: {
|
|
584
|
-
background: "bg-primary",
|
|
585
|
-
// Primary background
|
|
778
|
+
background: "bg-[hsl(var(--button-primary-base-bg))]",
|
|
779
|
+
// Primary base background - CSS variable from State Matrix
|
|
586
780
|
text: "text-primary-foreground",
|
|
587
781
|
// Primary text using CSS var
|
|
588
|
-
hover: "hover:bg-primary
|
|
589
|
-
// Primary hover
|
|
782
|
+
hover: "hover:bg-[hsl(var(--button-primary-hover-bg))]",
|
|
783
|
+
// Primary hover - CSS variable from State Matrix (Priority 4: blocked by disabled/loading)
|
|
784
|
+
active: "active:bg-[hsl(var(--button-primary-active-bg))]",
|
|
785
|
+
// Primary active - CSS variable from State Matrix (Priority 3: blocked by disabled/loading, priority over hover)
|
|
786
|
+
focus: "focus-visible:bg-[hsl(var(--button-primary-focus-bg))]",
|
|
787
|
+
// Primary focus - CSS variable from State Matrix (Priority 5: keyboard navigation only)
|
|
788
|
+
disabled: {
|
|
789
|
+
background: "disabled:bg-[hsl(var(--button-primary-disabled-bg))]",
|
|
790
|
+
// Disabled background - CSS variable from State Matrix (Priority 1: blocks all)
|
|
791
|
+
text: "disabled:text-[hsl(var(--button-primary-disabled-text))]"
|
|
792
|
+
// Disabled text - CSS variable from State Matrix
|
|
793
|
+
},
|
|
794
|
+
loading: "bg-[hsl(var(--button-primary-loading-bg))]"
|
|
795
|
+
// Primary loading - CSS variable from State Matrix (Priority 2: blocks hover/active, used with aria-busy/data-loading when implemented)
|
|
590
796
|
},
|
|
591
797
|
secondary: {
|
|
592
798
|
background: "bg-secondary",
|
|
593
799
|
// Secondary background using CSS var
|
|
594
800
|
text: "text-secondary-foreground",
|
|
595
801
|
// Secondary text using CSS var
|
|
596
|
-
hover: "hover:bg-secondary
|
|
597
|
-
// Secondary hover
|
|
802
|
+
hover: "hover:bg-[hsl(var(--button-secondary-hover-bg))]",
|
|
803
|
+
// Secondary hover - CSS variable from State Matrix
|
|
804
|
+
active: "active:bg-[hsl(var(--button-secondary-active-bg))]",
|
|
805
|
+
// Secondary active - CSS variable from State Matrix
|
|
806
|
+
disabled: {
|
|
807
|
+
background: "disabled:bg-[hsl(var(--button-secondary-disabled-bg))]",
|
|
808
|
+
// Disabled background - CSS variable from State Matrix
|
|
809
|
+
text: "disabled:text-[hsl(var(--button-secondary-disabled-text))]"
|
|
810
|
+
// Disabled text - CSS variable from State Matrix
|
|
811
|
+
}
|
|
598
812
|
},
|
|
599
813
|
accent: {
|
|
600
814
|
background: "bg-accent",
|
|
601
815
|
// Accent background using CSS var
|
|
602
816
|
text: "text-accent-foreground",
|
|
603
817
|
// Accent text using CSS var
|
|
604
|
-
hover: "hover:bg-accent
|
|
605
|
-
// Accent hover
|
|
818
|
+
hover: "hover:bg-[hsl(var(--button-accent-hover-bg))]",
|
|
819
|
+
// Accent hover - CSS variable from State Matrix
|
|
820
|
+
active: "active:bg-[hsl(var(--button-accent-active-bg))]",
|
|
821
|
+
// Accent active - CSS variable from State Matrix
|
|
822
|
+
disabled: {
|
|
823
|
+
background: "disabled:bg-[hsl(var(--button-accent-disabled-bg))]",
|
|
824
|
+
// Disabled background - CSS variable from State Matrix
|
|
825
|
+
text: "disabled:text-[hsl(var(--button-accent-disabled-text))]"
|
|
826
|
+
// Disabled text - CSS variable from State Matrix
|
|
827
|
+
}
|
|
606
828
|
},
|
|
607
829
|
outline: {
|
|
608
830
|
border: "border border-input",
|
|
609
831
|
// Input border using CSS var
|
|
610
832
|
background: "bg-background",
|
|
611
833
|
// Background using CSS var
|
|
834
|
+
text: "text-foreground",
|
|
835
|
+
// Foreground text using CSS var
|
|
612
836
|
hover: {
|
|
613
|
-
background: "hover:bg-
|
|
614
|
-
//
|
|
615
|
-
text: "hover:text-
|
|
616
|
-
//
|
|
837
|
+
background: "hover:bg-[hsl(var(--button-outline-hover-bg))]",
|
|
838
|
+
// Outline hover background - CSS variable from State Matrix
|
|
839
|
+
text: "hover:text-[hsl(var(--button-outline-hover-text))]",
|
|
840
|
+
// Outline hover text - CSS variable from State Matrix
|
|
841
|
+
border: "hover:border-[hsl(var(--button-outline-hover-border))]"
|
|
842
|
+
// Outline hover border - CSS variable from State Matrix
|
|
843
|
+
},
|
|
844
|
+
active: {
|
|
845
|
+
background: "active:bg-[hsl(var(--button-outline-active-bg))]",
|
|
846
|
+
// Outline active background - CSS variable from State Matrix
|
|
847
|
+
text: "active:text-[hsl(var(--button-outline-active-text))]",
|
|
848
|
+
// Outline active text - CSS variable from State Matrix
|
|
849
|
+
border: "active:border-[hsl(var(--button-outline-active-border))]"
|
|
850
|
+
// Outline active border - CSS variable from State Matrix
|
|
851
|
+
},
|
|
852
|
+
disabled: {
|
|
853
|
+
background: "disabled:bg-[hsl(var(--button-outline-disabled-bg))]",
|
|
854
|
+
// Disabled background - CSS variable from State Matrix
|
|
855
|
+
text: "disabled:text-[hsl(var(--button-outline-disabled-text))]",
|
|
856
|
+
// Disabled text - CSS variable from State Matrix
|
|
857
|
+
border: "disabled:border-[hsl(var(--button-outline-disabled-border))]"
|
|
858
|
+
// Disabled border - CSS variable from State Matrix
|
|
617
859
|
}
|
|
618
860
|
},
|
|
619
861
|
ghost: {
|
|
862
|
+
background: "bg-transparent",
|
|
863
|
+
// Transparent background
|
|
864
|
+
text: "text-foreground",
|
|
865
|
+
// Foreground text using CSS var
|
|
620
866
|
hover: {
|
|
621
|
-
background: "hover:bg-
|
|
622
|
-
//
|
|
623
|
-
text: "hover:text-
|
|
624
|
-
//
|
|
867
|
+
background: "hover:bg-[hsl(var(--button-ghost-hover-bg))]",
|
|
868
|
+
// Ghost hover background - CSS variable from State Matrix
|
|
869
|
+
text: "hover:text-[hsl(var(--button-ghost-hover-text))]"
|
|
870
|
+
// Ghost hover text - CSS variable from State Matrix
|
|
871
|
+
},
|
|
872
|
+
active: {
|
|
873
|
+
background: "active:bg-[hsl(var(--button-ghost-active-bg))]",
|
|
874
|
+
// Ghost active background - CSS variable from State Matrix
|
|
875
|
+
text: "active:text-[hsl(var(--button-ghost-active-text))]"
|
|
876
|
+
// Ghost active text - CSS variable from State Matrix
|
|
877
|
+
},
|
|
878
|
+
disabled: {
|
|
879
|
+
background: "disabled:bg-[hsl(var(--button-ghost-disabled-bg))]",
|
|
880
|
+
// Disabled background - CSS variable from State Matrix
|
|
881
|
+
text: "disabled:text-[hsl(var(--button-ghost-disabled-text))]"
|
|
882
|
+
// Disabled text - CSS variable from State Matrix
|
|
625
883
|
}
|
|
626
884
|
},
|
|
627
885
|
destructive: {
|
|
@@ -629,16 +887,94 @@ var BUTTON_TOKENS = {
|
|
|
629
887
|
// Destructive background using CSS var
|
|
630
888
|
text: "text-destructive-foreground",
|
|
631
889
|
// Destructive text using CSS var
|
|
632
|
-
hover: "hover:bg-destructive
|
|
633
|
-
// Destructive hover
|
|
890
|
+
hover: "hover:bg-[hsl(var(--button-destructive-hover-bg))]",
|
|
891
|
+
// Destructive hover - CSS variable from State Matrix
|
|
892
|
+
active: "active:bg-[hsl(var(--button-destructive-active-bg))]",
|
|
893
|
+
// Destructive active - CSS variable from State Matrix
|
|
894
|
+
disabled: {
|
|
895
|
+
background: "disabled:bg-[hsl(var(--button-destructive-disabled-bg))]",
|
|
896
|
+
// Disabled background - CSS variable from State Matrix
|
|
897
|
+
text: "disabled:text-[hsl(var(--button-destructive-disabled-text))]"
|
|
898
|
+
// Disabled text - CSS variable from State Matrix
|
|
899
|
+
}
|
|
634
900
|
}
|
|
635
901
|
},
|
|
636
902
|
/**
|
|
637
903
|
* Transition tokens
|
|
904
|
+
* References Motion Authority tokens for consistent motion behavior
|
|
905
|
+
*
|
|
906
|
+
* @enforcement TUNG_TOKEN_AUTHORITY_EXPANSION_PLAN
|
|
907
|
+
* @rule Uses MOTION_TOKENS.transitionPreset.colors from Motion Authority
|
|
908
|
+
* @rule Motion transitions MUST use canonical motion tokens only
|
|
909
|
+
* @see docs/architecture/MOTION_AUTHORITY_CONTRACT.md
|
|
638
910
|
*/
|
|
639
911
|
transition: {
|
|
640
|
-
colors:
|
|
641
|
-
//
|
|
912
|
+
colors: MOTION_TOKENS.transitionPreset.colors
|
|
913
|
+
// "transition-colors duration-normal ease-out" - Motion Authority compliant
|
|
914
|
+
},
|
|
915
|
+
/**
|
|
916
|
+
* Global state tokens
|
|
917
|
+
* Shared state tokens that apply across all variants
|
|
918
|
+
* Variant-specific states are defined in variant.*.active and variant.*.disabled
|
|
919
|
+
*
|
|
920
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
921
|
+
* @rule All interaction states MUST follow Interaction Authority Contract
|
|
922
|
+
* @rule State priority: disabled > loading > active > hover > focus-visible > base
|
|
923
|
+
* @rule Visual states (colors) are SEPARATE from interaction states (pointer-events, cursor)
|
|
924
|
+
* @rule All states MUST be browser-native (CSS pseudo-classes), NOT JavaScript-managed
|
|
925
|
+
*/
|
|
926
|
+
state: {
|
|
927
|
+
/**
|
|
928
|
+
* Disabled state tokens
|
|
929
|
+
* Global disabled state tokens (variant-specific overrides in variant.*.disabled)
|
|
930
|
+
*
|
|
931
|
+
* Interaction Authority Rules:
|
|
932
|
+
* - Priority: 1 (Highest) - Blocks ALL interactions
|
|
933
|
+
* - MUST block hover, active, and focus states
|
|
934
|
+
* - MUST use disabled: prefix (never in base state)
|
|
935
|
+
* - Base state MUST have pointer-events: auto (default) for hover to work
|
|
936
|
+
*
|
|
937
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
938
|
+
* @enforcement TUNG_BUTTON_INTERACTION_FIX
|
|
939
|
+
* @rule Interaction Authority: pointer-events is NOT a visual token
|
|
940
|
+
* @rule pointer-events-none MUST use disabled: prefix (never in base state)
|
|
941
|
+
* @rule Base state MUST have pointer-events: auto (default) for hover to work
|
|
942
|
+
* @rule These tokens are applied in base but only activate when element is disabled
|
|
943
|
+
* @rule Hover is FORBIDDEN when disabled={true}
|
|
944
|
+
* @rule Active is FORBIDDEN when disabled={true}
|
|
945
|
+
* @rule Focus is FORBIDDEN when disabled={true} (for interactions)
|
|
946
|
+
*
|
|
947
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
948
|
+
*/
|
|
949
|
+
disabled: {
|
|
950
|
+
cursor: "disabled:cursor-not-allowed",
|
|
951
|
+
// Disabled cursor style (only applies when disabled)
|
|
952
|
+
pointerEvents: "disabled:pointer-events-none"
|
|
953
|
+
// Disable pointer events (only applies when disabled)
|
|
954
|
+
},
|
|
955
|
+
/**
|
|
956
|
+
* Focus state tokens
|
|
957
|
+
* Focus ring for keyboard navigation
|
|
958
|
+
*
|
|
959
|
+
* Interaction Authority Rules:
|
|
960
|
+
* - Priority: 5 - Lower than active and hover
|
|
961
|
+
* - MUST activate only on keyboard navigation (focus-visible: prefix)
|
|
962
|
+
* - MUST NOT activate on mouse click (use :focus-visible, not :focus)
|
|
963
|
+
* - MUST be blocked by disabled state
|
|
964
|
+
*
|
|
965
|
+
* @enforcement TUNG_INTERACTION_AUTHORITY_FOUNDATION
|
|
966
|
+
* @rule Focus MUST use focus-visible: prefix (keyboard navigation only)
|
|
967
|
+
* @rule Focus MUST be blocked when disabled={true}
|
|
968
|
+
* @rule Focus MUST NOT activate on mouse click
|
|
969
|
+
*
|
|
970
|
+
* @see docs/architecture/INTERACTION_AUTHORITY_CONTRACT.md
|
|
971
|
+
*/
|
|
972
|
+
focus: {
|
|
973
|
+
ring: "focus-visible:ring-1 focus-visible:ring-ring",
|
|
974
|
+
// Focus ring using semantic ring color
|
|
975
|
+
outline: "focus-visible:outline-none"
|
|
976
|
+
// Remove default outline (replaced by ring)
|
|
977
|
+
}
|
|
642
978
|
}
|
|
643
979
|
};
|
|
644
980
|
|
|
@@ -726,6 +1062,68 @@ var CARD_TOKENS = {
|
|
|
726
1062
|
}
|
|
727
1063
|
};
|
|
728
1064
|
|
|
1065
|
+
// src/tokens/components/artist.ts
|
|
1066
|
+
var ARTIST_TOKENS = {
|
|
1067
|
+
/**
|
|
1068
|
+
* Image container tokens
|
|
1069
|
+
* Layout classes for image container wrapper
|
|
1070
|
+
*/
|
|
1071
|
+
image: {
|
|
1072
|
+
/**
|
|
1073
|
+
* Container layout tokens
|
|
1074
|
+
* Positioning and sizing for image container
|
|
1075
|
+
*/
|
|
1076
|
+
container: {
|
|
1077
|
+
/**
|
|
1078
|
+
* Base container layout
|
|
1079
|
+
* Relative positioning, full width, overflow hidden
|
|
1080
|
+
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1081
|
+
*/
|
|
1082
|
+
layout: "relative w-full overflow-hidden"
|
|
1083
|
+
},
|
|
1084
|
+
/**
|
|
1085
|
+
* Image sizing tokens
|
|
1086
|
+
* Full width and height for images
|
|
1087
|
+
*/
|
|
1088
|
+
sizing: {
|
|
1089
|
+
/**
|
|
1090
|
+
* Full size image
|
|
1091
|
+
* Uses Tailwind sizing utilities (allowed per architecture)
|
|
1092
|
+
*/
|
|
1093
|
+
full: "h-full w-full"
|
|
1094
|
+
},
|
|
1095
|
+
/**
|
|
1096
|
+
* Placeholder container tokens
|
|
1097
|
+
* Layout for placeholder icon container when no image is provided
|
|
1098
|
+
*/
|
|
1099
|
+
placeholder: {
|
|
1100
|
+
/**
|
|
1101
|
+
* Placeholder container layout
|
|
1102
|
+
* Flex centering for placeholder icon
|
|
1103
|
+
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1104
|
+
*/
|
|
1105
|
+
container: "flex h-full w-full items-center justify-center"
|
|
1106
|
+
}
|
|
1107
|
+
},
|
|
1108
|
+
/**
|
|
1109
|
+
* Footer border tokens
|
|
1110
|
+
* Border styling for card footer separator
|
|
1111
|
+
*/
|
|
1112
|
+
footer: {
|
|
1113
|
+
/**
|
|
1114
|
+
* Footer border tokens
|
|
1115
|
+
* Top border separator for footer section
|
|
1116
|
+
*/
|
|
1117
|
+
border: {
|
|
1118
|
+
/**
|
|
1119
|
+
* Footer border top
|
|
1120
|
+
* Uses semantic border color token
|
|
1121
|
+
*/
|
|
1122
|
+
top: "border-t border-border"
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
};
|
|
1126
|
+
|
|
729
1127
|
// src/tokens/spacing.ts
|
|
730
1128
|
var spacing = {
|
|
731
1129
|
// Zero spacing
|
|
@@ -989,139 +1387,44 @@ var tailwindSpacingConfig = {
|
|
|
989
1387
|
// src/tokens/components/data.ts
|
|
990
1388
|
var DATA_TOKENS = {
|
|
991
1389
|
/**
|
|
992
|
-
*
|
|
1390
|
+
* Skeleton Component Tokens
|
|
993
1391
|
*/
|
|
994
|
-
|
|
1392
|
+
skeleton: {
|
|
995
1393
|
/**
|
|
996
|
-
*
|
|
1394
|
+
* Skeleton heights by variant
|
|
997
1395
|
* Maps to Tailwind height utilities
|
|
998
1396
|
*/
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
//
|
|
1002
|
-
|
|
1003
|
-
// 40px (2.5rem) -
|
|
1004
|
-
|
|
1005
|
-
//
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
*/
|
|
1011
|
-
padding: {
|
|
1012
|
-
cell: {
|
|
1013
|
-
sm: "p-xs",
|
|
1014
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1015
|
-
md: "p-sm",
|
|
1016
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1017
|
-
lg: "p-md"
|
|
1018
|
-
// 16px (1rem) - maps to semanticSpacing.md
|
|
1019
|
-
},
|
|
1020
|
-
header: {
|
|
1021
|
-
sm: "px-xs py-sm",
|
|
1022
|
-
// 4px horizontal, 8px vertical
|
|
1023
|
-
md: "px-sm py-md",
|
|
1024
|
-
// 8px horizontal, 16px vertical
|
|
1025
|
-
lg: "px-md py-lg"
|
|
1026
|
-
// 16px horizontal, 24px vertical
|
|
1027
|
-
}
|
|
1028
|
-
},
|
|
1029
|
-
/**
|
|
1030
|
-
* Gap between table cells (horizontal spacing)
|
|
1031
|
-
*/
|
|
1032
|
-
gap: {
|
|
1033
|
-
sm: "gap-xs",
|
|
1034
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1035
|
-
md: "gap-sm"
|
|
1036
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1397
|
+
height: {
|
|
1398
|
+
text: "h-4",
|
|
1399
|
+
// 16px (1rem) - text line height
|
|
1400
|
+
circle: "h-10 w-10",
|
|
1401
|
+
// 40px × 40px (2.5rem) - circular skeleton
|
|
1402
|
+
block: "h-20",
|
|
1403
|
+
// 80px (5rem) - block skeleton
|
|
1404
|
+
card: "h-32",
|
|
1405
|
+
// 128px (8rem) - card skeleton
|
|
1406
|
+
inline: "h-4"
|
|
1407
|
+
// 16px (1rem) - inline text
|
|
1037
1408
|
},
|
|
1038
1409
|
/**
|
|
1039
|
-
* Border radius
|
|
1410
|
+
* Border radius by variant
|
|
1411
|
+
* Maps to foundation borderRadius tokens
|
|
1040
1412
|
*/
|
|
1041
1413
|
radius: {
|
|
1042
|
-
|
|
1414
|
+
text: "rounded-sm",
|
|
1415
|
+
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1416
|
+
circle: "rounded-full",
|
|
1417
|
+
// Full circle - maps to borderRadius.full
|
|
1418
|
+
block: "rounded-md",
|
|
1043
1419
|
// 6px (0.375rem) - maps to borderRadius.md
|
|
1420
|
+
card: "rounded-xl",
|
|
1421
|
+
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1422
|
+
inline: "rounded-sm"
|
|
1423
|
+
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1044
1424
|
},
|
|
1045
1425
|
/**
|
|
1046
|
-
*
|
|
1047
|
-
*
|
|
1048
|
-
*/
|
|
1049
|
-
shadow: {
|
|
1050
|
-
none: "shadow-none",
|
|
1051
|
-
// No shadow
|
|
1052
|
-
subtle: "shadow-sm"
|
|
1053
|
-
// Maps to elevationShadows.sm
|
|
1054
|
-
},
|
|
1055
|
-
/**
|
|
1056
|
-
* Typography tokens for table headers and cells
|
|
1057
|
-
* Maps to foundation typography fontSize tokens
|
|
1058
|
-
*/
|
|
1059
|
-
typography: {
|
|
1060
|
-
header: {
|
|
1061
|
-
fontSize: "text-sm",
|
|
1062
|
-
// Maps to fontSize.sm[0]
|
|
1063
|
-
fontWeight: "font-semibold"
|
|
1064
|
-
// Maps to fontWeight.semibold
|
|
1065
|
-
},
|
|
1066
|
-
cell: {
|
|
1067
|
-
fontSize: "text-sm",
|
|
1068
|
-
// Maps to fontSize.sm[0]
|
|
1069
|
-
fontWeight: "font-normal"
|
|
1070
|
-
// Maps to fontWeight.normal
|
|
1071
|
-
}
|
|
1072
|
-
},
|
|
1073
|
-
/**
|
|
1074
|
-
* Color tokens for table states
|
|
1075
|
-
* Uses semantic color tokens
|
|
1076
|
-
*/
|
|
1077
|
-
colors: {
|
|
1078
|
-
border: "border-border",
|
|
1079
|
-
// Border color
|
|
1080
|
-
rowHover: "hover:bg-muted/50",
|
|
1081
|
-
// Row hover background
|
|
1082
|
-
rowSelected: "bg-muted"
|
|
1083
|
-
// Selected row background
|
|
1084
|
-
}
|
|
1085
|
-
},
|
|
1086
|
-
/**
|
|
1087
|
-
* Skeleton Component Tokens
|
|
1088
|
-
*/
|
|
1089
|
-
skeleton: {
|
|
1090
|
-
/**
|
|
1091
|
-
* Skeleton heights by variant
|
|
1092
|
-
* Maps to Tailwind height utilities
|
|
1093
|
-
*/
|
|
1094
|
-
height: {
|
|
1095
|
-
text: "h-4",
|
|
1096
|
-
// 16px (1rem) - text line height
|
|
1097
|
-
circle: "h-10 w-10",
|
|
1098
|
-
// 40px × 40px (2.5rem) - circular skeleton
|
|
1099
|
-
block: "h-20",
|
|
1100
|
-
// 80px (5rem) - block skeleton
|
|
1101
|
-
card: "h-32",
|
|
1102
|
-
// 128px (8rem) - card skeleton
|
|
1103
|
-
inline: "h-4"
|
|
1104
|
-
// 16px (1rem) - inline text
|
|
1105
|
-
},
|
|
1106
|
-
/**
|
|
1107
|
-
* Border radius by variant
|
|
1108
|
-
* Maps to foundation borderRadius tokens
|
|
1109
|
-
*/
|
|
1110
|
-
radius: {
|
|
1111
|
-
text: "rounded-sm",
|
|
1112
|
-
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1113
|
-
circle: "rounded-full",
|
|
1114
|
-
// Full circle - maps to borderRadius.full
|
|
1115
|
-
block: "rounded-md",
|
|
1116
|
-
// 6px (0.375rem) - maps to borderRadius.md
|
|
1117
|
-
card: "rounded-xl",
|
|
1118
|
-
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1119
|
-
inline: "rounded-sm"
|
|
1120
|
-
// 4px (0.25rem) - maps to borderRadius.sm
|
|
1121
|
-
},
|
|
1122
|
-
/**
|
|
1123
|
-
* Animation tokens
|
|
1124
|
-
* Uses motion tokens for animations
|
|
1426
|
+
* Animation tokens
|
|
1427
|
+
* Uses motion tokens for animations
|
|
1125
1428
|
*/
|
|
1126
1429
|
animation: {
|
|
1127
1430
|
pulse: "animate-pulse",
|
|
@@ -1148,97 +1451,6 @@ var DATA_TOKENS = {
|
|
|
1148
1451
|
inline: "inline-block"
|
|
1149
1452
|
// Inline block display
|
|
1150
1453
|
}
|
|
1151
|
-
},
|
|
1152
|
-
/**
|
|
1153
|
-
* EmptyState Component Tokens
|
|
1154
|
-
*/
|
|
1155
|
-
emptyState: {
|
|
1156
|
-
/**
|
|
1157
|
-
* Spacing tokens for EmptyState
|
|
1158
|
-
* Maps to semantic spacing tokens
|
|
1159
|
-
*/
|
|
1160
|
-
spacing: {
|
|
1161
|
-
gap: "gap-md",
|
|
1162
|
-
// 16px (1rem) - gap between elements - maps to semanticSpacing.md
|
|
1163
|
-
padding: "p-lg"
|
|
1164
|
-
// 24px (1.5rem) - container padding - maps to semanticSpacing.lg
|
|
1165
|
-
},
|
|
1166
|
-
/**
|
|
1167
|
-
* Border radius for EmptyState container
|
|
1168
|
-
*/
|
|
1169
|
-
radius: {
|
|
1170
|
-
default: "rounded-xl"
|
|
1171
|
-
// 12px (0.75rem) - maps to borderRadius.xl
|
|
1172
|
-
},
|
|
1173
|
-
/**
|
|
1174
|
-
* Icon sizes by variant
|
|
1175
|
-
* Maps to Tailwind size utilities
|
|
1176
|
-
*/
|
|
1177
|
-
iconSize: {
|
|
1178
|
-
sm: "size-8",
|
|
1179
|
-
// 32px (2rem)
|
|
1180
|
-
md: "size-12",
|
|
1181
|
-
// 48px (3rem)
|
|
1182
|
-
lg: "size-16"
|
|
1183
|
-
// 64px (4rem)
|
|
1184
|
-
},
|
|
1185
|
-
/**
|
|
1186
|
-
* Typography tokens for EmptyState
|
|
1187
|
-
* Maps to foundation typography tokens
|
|
1188
|
-
*/
|
|
1189
|
-
typography: {
|
|
1190
|
-
title: {
|
|
1191
|
-
fontSize: "text-lg",
|
|
1192
|
-
// Maps to fontSize.lg[0]
|
|
1193
|
-
fontWeight: "font-semibold"
|
|
1194
|
-
// Maps to fontWeight.semibold
|
|
1195
|
-
},
|
|
1196
|
-
description: {
|
|
1197
|
-
fontSize: "text-sm",
|
|
1198
|
-
// Maps to fontSize.sm[0]
|
|
1199
|
-
fontWeight: "font-normal"
|
|
1200
|
-
// Maps to fontWeight.normal
|
|
1201
|
-
}
|
|
1202
|
-
}
|
|
1203
|
-
},
|
|
1204
|
-
/**
|
|
1205
|
-
* DataList Component Tokens
|
|
1206
|
-
*/
|
|
1207
|
-
dataList: {
|
|
1208
|
-
/**
|
|
1209
|
-
* Spacing tokens for DataList
|
|
1210
|
-
* Maps to semantic spacing tokens
|
|
1211
|
-
*/
|
|
1212
|
-
spacing: {
|
|
1213
|
-
gap: "gap-md",
|
|
1214
|
-
// 16px (1rem) - gap between items - maps to semanticSpacing.md
|
|
1215
|
-
padding: "p-md"
|
|
1216
|
-
// 16px (1rem) - container padding - maps to semanticSpacing.md
|
|
1217
|
-
},
|
|
1218
|
-
/**
|
|
1219
|
-
* Label width tokens (for desktop horizontal layout)
|
|
1220
|
-
* Maps to Tailwind width utilities
|
|
1221
|
-
*/
|
|
1222
|
-
labelWidth: {
|
|
1223
|
-
sm: "w-24",
|
|
1224
|
-
// 96px (6rem) - small label width
|
|
1225
|
-
md: "w-32",
|
|
1226
|
-
// 128px (8rem) - default label width
|
|
1227
|
-
lg: "w-40"
|
|
1228
|
-
// 160px (10rem) - large label width
|
|
1229
|
-
},
|
|
1230
|
-
/**
|
|
1231
|
-
* Row padding tokens
|
|
1232
|
-
* Maps to semantic spacing tokens
|
|
1233
|
-
*/
|
|
1234
|
-
rowPadding: {
|
|
1235
|
-
sm: "py-xs",
|
|
1236
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1237
|
-
md: "py-sm",
|
|
1238
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1239
|
-
lg: "py-md"
|
|
1240
|
-
// 16px (1rem) - maps to semanticSpacing.md
|
|
1241
|
-
}
|
|
1242
1454
|
}
|
|
1243
1455
|
};
|
|
1244
1456
|
|
|
@@ -1298,139 +1510,6 @@ var ICON_TOKENS = {
|
|
|
1298
1510
|
}
|
|
1299
1511
|
};
|
|
1300
1512
|
|
|
1301
|
-
// src/tokens/components/motion.ts
|
|
1302
|
-
var MOTION_TOKENS = {
|
|
1303
|
-
/**
|
|
1304
|
-
* Transition property tokens
|
|
1305
|
-
* Maps to Tailwind transition utilities
|
|
1306
|
-
*/
|
|
1307
|
-
transition: {
|
|
1308
|
-
all: "transition-all",
|
|
1309
|
-
// All properties
|
|
1310
|
-
colors: "transition-colors",
|
|
1311
|
-
// Color properties only
|
|
1312
|
-
opacity: "transition-opacity",
|
|
1313
|
-
// Opacity only
|
|
1314
|
-
transform: "transition-transform",
|
|
1315
|
-
// Transform only
|
|
1316
|
-
shadow: "transition-shadow",
|
|
1317
|
-
// Box shadow only
|
|
1318
|
-
none: "transition-none"
|
|
1319
|
-
// No transition
|
|
1320
|
-
},
|
|
1321
|
-
/**
|
|
1322
|
-
* Duration tokens
|
|
1323
|
-
* Maps to foundation motion duration tokens via Tailwind
|
|
1324
|
-
*/
|
|
1325
|
-
duration: {
|
|
1326
|
-
instant: "duration-0",
|
|
1327
|
-
// 0ms
|
|
1328
|
-
fast: "duration-fast",
|
|
1329
|
-
// 150ms - maps to motion.durations.fast
|
|
1330
|
-
normal: "duration-normal",
|
|
1331
|
-
// 300ms - maps to motion.durations.normal
|
|
1332
|
-
slow: "duration-slow",
|
|
1333
|
-
// 500ms - maps to motion.durations.slow
|
|
1334
|
-
slower: "duration-slower",
|
|
1335
|
-
// 700ms - maps to motion.durations.slower
|
|
1336
|
-
slowest: "duration-slowest",
|
|
1337
|
-
// 1000ms - maps to motion.durations.slowest
|
|
1338
|
-
// Granular durations
|
|
1339
|
-
"75": "duration-75",
|
|
1340
|
-
// 75ms
|
|
1341
|
-
"100": "duration-100",
|
|
1342
|
-
// 100ms
|
|
1343
|
-
"200": "duration-200",
|
|
1344
|
-
// 200ms
|
|
1345
|
-
"250": "duration-250",
|
|
1346
|
-
// 250ms
|
|
1347
|
-
"300": "duration-300",
|
|
1348
|
-
// 300ms
|
|
1349
|
-
"400": "duration-400",
|
|
1350
|
-
// 400ms
|
|
1351
|
-
"500": "duration-500",
|
|
1352
|
-
// 500ms
|
|
1353
|
-
"600": "duration-600",
|
|
1354
|
-
// 600ms
|
|
1355
|
-
"700": "duration-700",
|
|
1356
|
-
// 700ms
|
|
1357
|
-
"800": "duration-800",
|
|
1358
|
-
// 800ms
|
|
1359
|
-
"1000": "duration-1000"
|
|
1360
|
-
// 1000ms
|
|
1361
|
-
},
|
|
1362
|
-
/**
|
|
1363
|
-
* Easing tokens
|
|
1364
|
-
* Maps to foundation motion easing tokens via Tailwind
|
|
1365
|
-
*/
|
|
1366
|
-
easing: {
|
|
1367
|
-
linear: "ease-linear",
|
|
1368
|
-
// Linear easing
|
|
1369
|
-
in: "ease-in",
|
|
1370
|
-
// Ease in
|
|
1371
|
-
out: "ease-out",
|
|
1372
|
-
// Ease out (recommended for most UI)
|
|
1373
|
-
"in-out": "ease-in-out",
|
|
1374
|
-
// Ease in-out
|
|
1375
|
-
bounce: "ease-bounce",
|
|
1376
|
-
// Bounce easing
|
|
1377
|
-
elastic: "ease-elastic"
|
|
1378
|
-
// Elastic easing
|
|
1379
|
-
},
|
|
1380
|
-
/**
|
|
1381
|
-
* Pre-configured transition tokens
|
|
1382
|
-
* Combines duration and easing for common use cases
|
|
1383
|
-
*/
|
|
1384
|
-
transitionPreset: {
|
|
1385
|
-
fast: "transition-all duration-fast ease-out",
|
|
1386
|
-
// Fast transition
|
|
1387
|
-
normal: "transition-all duration-normal ease-in-out",
|
|
1388
|
-
// Normal transition (default)
|
|
1389
|
-
slow: "transition-all duration-slow ease-in-out",
|
|
1390
|
-
// Slow transition
|
|
1391
|
-
colors: "transition-colors duration-normal ease-out",
|
|
1392
|
-
// Color transitions (common)
|
|
1393
|
-
transform: "transition-transform duration-normal ease-out",
|
|
1394
|
-
// Transform transitions
|
|
1395
|
-
opacity: "transition-opacity duration-fast ease-out"
|
|
1396
|
-
// Opacity transitions
|
|
1397
|
-
},
|
|
1398
|
-
/**
|
|
1399
|
-
* Animation tokens
|
|
1400
|
-
* Maps to foundation motion animation tokens via Tailwind
|
|
1401
|
-
*/
|
|
1402
|
-
animation: {
|
|
1403
|
-
none: "animate-none",
|
|
1404
|
-
// No animation
|
|
1405
|
-
spin: "animate-spin",
|
|
1406
|
-
// Spin animation
|
|
1407
|
-
pulse: "animate-pulse",
|
|
1408
|
-
// Pulse animation
|
|
1409
|
-
bounce: "animate-bounce",
|
|
1410
|
-
// Bounce animation
|
|
1411
|
-
ping: "animate-ping",
|
|
1412
|
-
// Ping animation
|
|
1413
|
-
shake: "animate-shake",
|
|
1414
|
-
// Shake animation
|
|
1415
|
-
fadeIn: "animate-fadeIn",
|
|
1416
|
-
// Fade in
|
|
1417
|
-
fadeOut: "animate-fadeOut",
|
|
1418
|
-
// Fade out
|
|
1419
|
-
slideInUp: "animate-slideInUp",
|
|
1420
|
-
// Slide in from bottom
|
|
1421
|
-
slideInDown: "animate-slideInDown",
|
|
1422
|
-
// Slide in from top
|
|
1423
|
-
slideInLeft: "animate-slideInLeft",
|
|
1424
|
-
// Slide in from right
|
|
1425
|
-
slideInRight: "animate-slideInRight",
|
|
1426
|
-
// Slide in from left
|
|
1427
|
-
scaleIn: "animate-scaleIn",
|
|
1428
|
-
// Scale in
|
|
1429
|
-
scaleOut: "animate-scaleOut"
|
|
1430
|
-
// Scale out
|
|
1431
|
-
}
|
|
1432
|
-
};
|
|
1433
|
-
|
|
1434
1513
|
// src/tokens/components/domain.ts
|
|
1435
1514
|
var DOMAIN_TOKENS = {
|
|
1436
1515
|
/**
|
|
@@ -1583,7 +1662,7 @@ var DOMAIN_TOKENS = {
|
|
|
1583
1662
|
},
|
|
1584
1663
|
/**
|
|
1585
1664
|
* Image tokens for card media
|
|
1586
|
-
* Defines aspect ratio, radius, and
|
|
1665
|
+
* Defines aspect ratio, radius, overlay styles, and placeholder gradients
|
|
1587
1666
|
*/
|
|
1588
1667
|
image: {
|
|
1589
1668
|
/**
|
|
@@ -1606,6 +1685,40 @@ var DOMAIN_TOKENS = {
|
|
|
1606
1685
|
overlay: {
|
|
1607
1686
|
gradient: "bg-gradient-to-t from-black/60 via-transparent to-transparent"
|
|
1608
1687
|
// Gradient overlay for image hover states
|
|
1688
|
+
},
|
|
1689
|
+
/**
|
|
1690
|
+
* Placeholder gradient tokens for image placeholders
|
|
1691
|
+
* Used when no image URL is provided
|
|
1692
|
+
*/
|
|
1693
|
+
placeholder: {
|
|
1694
|
+
gradient: "bg-gradient-to-br from-muted to-muted/50"
|
|
1695
|
+
// Placeholder gradient background
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
/**
|
|
1699
|
+
* Text tokens for card text elements
|
|
1700
|
+
* Defines hover states and line clamping for titles and descriptions
|
|
1701
|
+
*/
|
|
1702
|
+
text: {
|
|
1703
|
+
/**
|
|
1704
|
+
* Hover state tokens for text elements
|
|
1705
|
+
* Used for interactive text elements like titles
|
|
1706
|
+
*/
|
|
1707
|
+
hover: {
|
|
1708
|
+
primary: "group-hover:text-primary"
|
|
1709
|
+
// Hover state for primary text color
|
|
1710
|
+
},
|
|
1711
|
+
/**
|
|
1712
|
+
* Line clamp tokens for text truncation
|
|
1713
|
+
* Used for limiting text to specific number of lines
|
|
1714
|
+
*/
|
|
1715
|
+
lineClamp: {
|
|
1716
|
+
one: "line-clamp-1",
|
|
1717
|
+
// Single line clamp
|
|
1718
|
+
two: "line-clamp-2",
|
|
1719
|
+
// Two line clamp
|
|
1720
|
+
three: "line-clamp-3"
|
|
1721
|
+
// Three line clamp
|
|
1609
1722
|
}
|
|
1610
1723
|
},
|
|
1611
1724
|
/**
|
|
@@ -1828,7 +1941,95 @@ var DOMAIN_TOKENS = {
|
|
|
1828
1941
|
height: "h-6"
|
|
1829
1942
|
// References spacing[6] (1.5rem / 24px) via Tailwind
|
|
1830
1943
|
}
|
|
1831
|
-
}
|
|
1944
|
+
},
|
|
1945
|
+
/**
|
|
1946
|
+
* CTA (Call-to-Action) button tokens for domain card components
|
|
1947
|
+
* Provides PromoCard-specific CTA button styling tokens
|
|
1948
|
+
* These tokens are semantically owned by domain card components, not by the Button component
|
|
1949
|
+
* References foundation tokens (spacing, typography, radius, shadows, motion) for consistency
|
|
1950
|
+
*/
|
|
1951
|
+
cta: {
|
|
1952
|
+
/**
|
|
1953
|
+
* CTA button styling tokens
|
|
1954
|
+
* Used by PromoCard and other domain card components for CTA button elements
|
|
1955
|
+
*/
|
|
1956
|
+
button: {
|
|
1957
|
+
/**
|
|
1958
|
+
* Button heights by size
|
|
1959
|
+
* Maps to Tailwind height utilities: h-8, h-9
|
|
1960
|
+
*/
|
|
1961
|
+
height: {
|
|
1962
|
+
sm: "h-8",
|
|
1963
|
+
// 32px (2rem) - compact size
|
|
1964
|
+
md: "h-9"
|
|
1965
|
+
// 36px (2.25rem) - default size
|
|
1966
|
+
},
|
|
1967
|
+
/**
|
|
1968
|
+
* Button padding by size
|
|
1969
|
+
* Horizontal and vertical padding values
|
|
1970
|
+
* References semanticSpacing tokens
|
|
1971
|
+
*/
|
|
1972
|
+
padding: {
|
|
1973
|
+
horizontal: {
|
|
1974
|
+
sm: "px-sm",
|
|
1975
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1976
|
+
md: "px-md"
|
|
1977
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
1978
|
+
},
|
|
1979
|
+
vertical: {
|
|
1980
|
+
sm: "py-xs"
|
|
1981
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1982
|
+
}
|
|
1983
|
+
},
|
|
1984
|
+
/**
|
|
1985
|
+
* Border radius for CTA buttons
|
|
1986
|
+
* References borderRadius.md (6px / 0.375rem)
|
|
1987
|
+
* Using Tailwind class "rounded-md" which maps to borderRadius.md
|
|
1988
|
+
*/
|
|
1989
|
+
radius: "rounded-md",
|
|
1990
|
+
// References borderRadius.md via Tailwind
|
|
1991
|
+
/**
|
|
1992
|
+
* Font sizes by button size
|
|
1993
|
+
* Maps to foundation typography fontSize tokens
|
|
1994
|
+
*/
|
|
1995
|
+
fontSize: {
|
|
1996
|
+
sm: "text-xs",
|
|
1997
|
+
// Maps to fontSize.xs[0]
|
|
1998
|
+
md: "text-sm"
|
|
1999
|
+
// Maps to fontSize.sm[0]
|
|
2000
|
+
},
|
|
2001
|
+
/**
|
|
2002
|
+
* Shadow tokens for CTA buttons
|
|
2003
|
+
* Maps to foundation elevation shadow tokens
|
|
2004
|
+
*/
|
|
2005
|
+
shadow: {
|
|
2006
|
+
primary: "shadow"
|
|
2007
|
+
// Maps to elevationShadows.xs (primary variant uses shadow)
|
|
2008
|
+
},
|
|
2009
|
+
/**
|
|
2010
|
+
* Color tokens for CTA button variants
|
|
2011
|
+
* Uses semantic color tokens that map to CSS variables
|
|
2012
|
+
*/
|
|
2013
|
+
variant: {
|
|
2014
|
+
primary: {
|
|
2015
|
+
background: "bg-primary",
|
|
2016
|
+
// Primary background using CSS var
|
|
2017
|
+
text: "text-primary-foreground",
|
|
2018
|
+
// Primary text using CSS var
|
|
2019
|
+
hover: "hover:bg-primary/90"
|
|
2020
|
+
// Primary hover using CSS var
|
|
2021
|
+
}
|
|
2022
|
+
},
|
|
2023
|
+
/**
|
|
2024
|
+
* Transition tokens for CTA buttons
|
|
2025
|
+
* References MOTION_TOKENS for transitions
|
|
2026
|
+
*/
|
|
2027
|
+
transition: {
|
|
2028
|
+
colors: "transition-colors"
|
|
2029
|
+
// Color transition using motion tokens
|
|
2030
|
+
}
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
1832
2033
|
};
|
|
1833
2034
|
|
|
1834
2035
|
// src/tokens/components/input.ts
|
|
@@ -1931,40 +2132,6 @@ var INPUT_TOKENS = {
|
|
|
1931
2132
|
text: "text-[hsl(var(--foreground))]"
|
|
1932
2133
|
// File input text color using CSS var
|
|
1933
2134
|
},
|
|
1934
|
-
/**
|
|
1935
|
-
* Select listbox tokens
|
|
1936
|
-
* Styling for select dropdown container
|
|
1937
|
-
*/
|
|
1938
|
-
selectListbox: {
|
|
1939
|
-
border: "border border-[hsl(var(--border))]",
|
|
1940
|
-
// Border color using CSS var
|
|
1941
|
-
background: "bg-[hsl(var(--popover))]",
|
|
1942
|
-
// Background using CSS var
|
|
1943
|
-
text: "text-[hsl(var(--popover-foreground))]",
|
|
1944
|
-
// Text color using CSS var
|
|
1945
|
-
radius: "rounded-md",
|
|
1946
|
-
// Radius token (6px)
|
|
1947
|
-
shadow: "shadow-md"
|
|
1948
|
-
// Shadow token
|
|
1949
|
-
},
|
|
1950
|
-
/**
|
|
1951
|
-
* Select option tokens
|
|
1952
|
-
* Styling for select option items
|
|
1953
|
-
*/
|
|
1954
|
-
selectOption: {
|
|
1955
|
-
focus: {
|
|
1956
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
1957
|
-
// Focus background using CSS var
|
|
1958
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
1959
|
-
// Focus text using CSS var
|
|
1960
|
-
},
|
|
1961
|
-
selected: {
|
|
1962
|
-
background: "bg-[hsl(var(--accent))]",
|
|
1963
|
-
// Selected background using CSS var
|
|
1964
|
-
text: "text-[hsl(var(--accent-foreground))]"
|
|
1965
|
-
// Selected text using CSS var
|
|
1966
|
-
}
|
|
1967
|
-
},
|
|
1968
2135
|
/**
|
|
1969
2136
|
* Variant-based tokens
|
|
1970
2137
|
* Border, background, and text colors for different variants
|
|
@@ -2178,6 +2345,188 @@ var INPUT_TOKENS = {
|
|
|
2178
2345
|
}
|
|
2179
2346
|
};
|
|
2180
2347
|
|
|
2348
|
+
// src/tokens/components/textarea.ts
|
|
2349
|
+
var TEXTAREA_TOKENS = {
|
|
2350
|
+
/**
|
|
2351
|
+
* Shadow token
|
|
2352
|
+
* Maps to foundation elevation shadow tokens
|
|
2353
|
+
*/
|
|
2354
|
+
shadow: "shadow-sm",
|
|
2355
|
+
// Maps to elevationShadows.sm
|
|
2356
|
+
/**
|
|
2357
|
+
* Variant-based tokens
|
|
2358
|
+
* Border, background, and text colors for different variants
|
|
2359
|
+
* All use CSS variable references for theme support
|
|
2360
|
+
*/
|
|
2361
|
+
variant: {
|
|
2362
|
+
primary: {
|
|
2363
|
+
border: "border-[hsl(var(--tm-primary))]",
|
|
2364
|
+
// Primary border color
|
|
2365
|
+
background: "bg-[hsl(var(--tm-primary))]",
|
|
2366
|
+
// Primary background
|
|
2367
|
+
text: "text-[hsl(var(--tm-primary-foreground))]",
|
|
2368
|
+
// Primary text color
|
|
2369
|
+
focus: "focus-visible:shadow-[var(--focus-ring-primary)]"
|
|
2370
|
+
// Primary focus ring
|
|
2371
|
+
},
|
|
2372
|
+
secondary: {
|
|
2373
|
+
border: "border-[hsl(var(--tm-secondary))]",
|
|
2374
|
+
// Secondary border color
|
|
2375
|
+
background: "bg-[hsl(var(--tm-secondary))]",
|
|
2376
|
+
// Secondary background
|
|
2377
|
+
text: "text-[hsl(var(--tm-secondary-foreground))]",
|
|
2378
|
+
// Secondary text color
|
|
2379
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2380
|
+
// Default focus ring
|
|
2381
|
+
},
|
|
2382
|
+
outline: {
|
|
2383
|
+
border: "border-[hsl(var(--input))]",
|
|
2384
|
+
// Input border color
|
|
2385
|
+
background: "bg-transparent",
|
|
2386
|
+
// Transparent background
|
|
2387
|
+
text: "text-[hsl(var(--foreground))]",
|
|
2388
|
+
// Foreground text color
|
|
2389
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2390
|
+
// Default focus ring
|
|
2391
|
+
},
|
|
2392
|
+
ghost: {
|
|
2393
|
+
border: "border-transparent",
|
|
2394
|
+
// Transparent border
|
|
2395
|
+
background: "bg-transparent",
|
|
2396
|
+
// Transparent background
|
|
2397
|
+
text: "text-[hsl(var(--foreground))]",
|
|
2398
|
+
// Foreground text color
|
|
2399
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2400
|
+
// Default focus ring
|
|
2401
|
+
},
|
|
2402
|
+
destructive: {
|
|
2403
|
+
border: "border-[hsl(var(--destructive))]",
|
|
2404
|
+
// Destructive border color
|
|
2405
|
+
background: "bg-[hsl(var(--destructive))]",
|
|
2406
|
+
// Destructive background
|
|
2407
|
+
text: "text-[hsl(var(--destructive-foreground))]",
|
|
2408
|
+
// Destructive text color
|
|
2409
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]"
|
|
2410
|
+
// Default focus ring
|
|
2411
|
+
}
|
|
2412
|
+
},
|
|
2413
|
+
/**
|
|
2414
|
+
* State-based tokens
|
|
2415
|
+
* Border, background, and text colors for different states
|
|
2416
|
+
* All use CSS variable references for theme support
|
|
2417
|
+
*/
|
|
2418
|
+
state: {
|
|
2419
|
+
border: {
|
|
2420
|
+
default: "border-[hsl(var(--input))]",
|
|
2421
|
+
// Default border color using CSS var
|
|
2422
|
+
focus: "focus-visible:shadow-[var(--focus-ring-default)]",
|
|
2423
|
+
// Focus ring using CSS var
|
|
2424
|
+
error: "border-[hsl(var(--destructive))]",
|
|
2425
|
+
// Error state border using CSS var
|
|
2426
|
+
success: "border-[hsl(var(--semantic-success))]",
|
|
2427
|
+
// Success state border using CSS var
|
|
2428
|
+
disabled: "border-[hsl(var(--input))]"
|
|
2429
|
+
// Disabled state border (same as default)
|
|
2430
|
+
},
|
|
2431
|
+
background: {
|
|
2432
|
+
default: "bg-transparent",
|
|
2433
|
+
// Default background
|
|
2434
|
+
disabled: "bg-transparent"
|
|
2435
|
+
// Disabled background (same as default)
|
|
2436
|
+
},
|
|
2437
|
+
text: {
|
|
2438
|
+
default: "text-[hsl(var(--foreground))]",
|
|
2439
|
+
// Default text color using CSS var
|
|
2440
|
+
placeholder: "placeholder:text-[hsl(var(--muted-foreground))]",
|
|
2441
|
+
// Placeholder text color using CSS var
|
|
2442
|
+
disabled: "disabled:opacity-50"
|
|
2443
|
+
// Disabled text opacity
|
|
2444
|
+
}
|
|
2445
|
+
},
|
|
2446
|
+
/**
|
|
2447
|
+
* Width tokens
|
|
2448
|
+
* Common width utilities
|
|
2449
|
+
*/
|
|
2450
|
+
width: {
|
|
2451
|
+
full: "w-full"
|
|
2452
|
+
// Full width (100%)
|
|
2453
|
+
},
|
|
2454
|
+
/**
|
|
2455
|
+
* Message tokens
|
|
2456
|
+
* Spacing, positioning, and styling for helper text and error messages
|
|
2457
|
+
*/
|
|
2458
|
+
message: {
|
|
2459
|
+
// 8px (0.5rem) - spacing between control and message
|
|
2460
|
+
position: {
|
|
2461
|
+
bottom: "bottom-sm",
|
|
2462
|
+
// 8px (0.5rem) - bottom position for character counter
|
|
2463
|
+
right: "right-sm"
|
|
2464
|
+
// 8px (0.5rem) - right position for character counter
|
|
2465
|
+
},
|
|
2466
|
+
color: {
|
|
2467
|
+
default: "text-[hsl(var(--muted-foreground))]",
|
|
2468
|
+
// Default message color
|
|
2469
|
+
error: "text-[hsl(var(--destructive))]"}
|
|
2470
|
+
},
|
|
2471
|
+
/**
|
|
2472
|
+
* Size-based token structure
|
|
2473
|
+
* Organized by size for easy access
|
|
2474
|
+
*/
|
|
2475
|
+
size: {
|
|
2476
|
+
xs: {
|
|
2477
|
+
padding: {
|
|
2478
|
+
horizontal: "px-xs",
|
|
2479
|
+
vertical: "py-xs"
|
|
2480
|
+
},
|
|
2481
|
+
radius: "rounded-sm",
|
|
2482
|
+
fontSize: "text-xs"},
|
|
2483
|
+
sm: {
|
|
2484
|
+
padding: {
|
|
2485
|
+
horizontal: "px-sm",
|
|
2486
|
+
vertical: "py-xs"
|
|
2487
|
+
},
|
|
2488
|
+
radius: "rounded-md",
|
|
2489
|
+
fontSize: "text-sm"},
|
|
2490
|
+
md: {
|
|
2491
|
+
padding: {
|
|
2492
|
+
horizontal: "px-sm",
|
|
2493
|
+
vertical: "py-xs"
|
|
2494
|
+
},
|
|
2495
|
+
radius: "rounded-md",
|
|
2496
|
+
fontSize: "text-base",
|
|
2497
|
+
fontSizeResponsive: "md:text-sm"},
|
|
2498
|
+
lg: {
|
|
2499
|
+
padding: {
|
|
2500
|
+
horizontal: "px-md",
|
|
2501
|
+
vertical: "py-sm"
|
|
2502
|
+
},
|
|
2503
|
+
radius: "rounded-md",
|
|
2504
|
+
fontSize: "text-base"},
|
|
2505
|
+
xl: {
|
|
2506
|
+
padding: {
|
|
2507
|
+
horizontal: "px-lg",
|
|
2508
|
+
vertical: "py-md"
|
|
2509
|
+
},
|
|
2510
|
+
radius: "rounded-lg",
|
|
2511
|
+
fontSize: "text-lg"}
|
|
2512
|
+
}
|
|
2513
|
+
};
|
|
2514
|
+
|
|
2515
|
+
// src/tokens/components/form.ts
|
|
2516
|
+
var FORM_TOKENS = {
|
|
2517
|
+
/**
|
|
2518
|
+
* Label tokens
|
|
2519
|
+
* Spacing and styling for labels
|
|
2520
|
+
*/
|
|
2521
|
+
label: {
|
|
2522
|
+
// 8px (0.5rem) - spacing between label and control
|
|
2523
|
+
/**
|
|
2524
|
+
* Color for required asterisk mark
|
|
2525
|
+
*/
|
|
2526
|
+
requiredMark: "text-destructive"
|
|
2527
|
+
// Color for required asterisk
|
|
2528
|
+
}};
|
|
2529
|
+
|
|
2181
2530
|
// src/tokens/components/checkbox.ts
|
|
2182
2531
|
var CHECKBOX_TOKENS = {
|
|
2183
2532
|
/**
|
|
@@ -2952,8 +3301,16 @@ var TEXT_TOKENS = {
|
|
|
2952
3301
|
// Maps to fontSize.base[0]
|
|
2953
3302
|
lg: "text-lg",
|
|
2954
3303
|
// Maps to fontSize.lg[0]
|
|
2955
|
-
xl: "text-xl"
|
|
3304
|
+
xl: "text-xl",
|
|
2956
3305
|
// Maps to fontSize.xl[0]
|
|
3306
|
+
"2xl": "text-2xl",
|
|
3307
|
+
// Maps to fontSize.2xl[0]
|
|
3308
|
+
"3xl": "text-3xl",
|
|
3309
|
+
// Maps to fontSize.3xl[0]
|
|
3310
|
+
"4xl": "text-4xl",
|
|
3311
|
+
// Maps to fontSize.4xl[0]
|
|
3312
|
+
"5xl": "text-5xl"
|
|
3313
|
+
// Maps to fontSize.5xl[0]
|
|
2957
3314
|
},
|
|
2958
3315
|
/**
|
|
2959
3316
|
* Font weights by weight variant
|
|
@@ -2978,6 +3335,8 @@ var TEXT_TOKENS = {
|
|
|
2978
3335
|
// Maps to lineHeight.none
|
|
2979
3336
|
tight: "leading-tight",
|
|
2980
3337
|
// Maps to lineHeight.tight
|
|
3338
|
+
snug: "leading-snug",
|
|
3339
|
+
// Maps to lineHeight.snug
|
|
2981
3340
|
normal: "leading-normal",
|
|
2982
3341
|
// Maps to lineHeight.normal
|
|
2983
3342
|
relaxed: "leading-relaxed",
|
|
@@ -3501,9 +3860,9 @@ var TOAST_TOKENS = {
|
|
|
3501
3860
|
// Default opacity (hidden)
|
|
3502
3861
|
groupHover: "group-hover:opacity-100",
|
|
3503
3862
|
// Visible on group hover
|
|
3504
|
-
focus: "focus:opacity-100",
|
|
3863
|
+
focus: "focus-visible:opacity-100",
|
|
3505
3864
|
// Visible on focus
|
|
3506
|
-
focusRing: "focus:outline-none focus:ring-1"
|
|
3865
|
+
focusRing: "focus-visible:outline-none focus-visible:ring-1"
|
|
3507
3866
|
// Focus ring styling
|
|
3508
3867
|
}
|
|
3509
3868
|
}
|
|
@@ -4245,19 +4604,27 @@ var DROPDOWN_TOKENS = {
|
|
|
4245
4604
|
// 256px
|
|
4246
4605
|
}
|
|
4247
4606
|
},
|
|
4607
|
+
/**
|
|
4608
|
+
* Width tokens
|
|
4609
|
+
* Common width utilities
|
|
4610
|
+
*/
|
|
4611
|
+
width: {
|
|
4612
|
+
full: "w-full"
|
|
4613
|
+
// Full width (100%)
|
|
4614
|
+
},
|
|
4248
4615
|
/**
|
|
4249
4616
|
* Item tokens by size
|
|
4250
4617
|
* Individual menu item
|
|
4251
4618
|
*/
|
|
4252
4619
|
item: {
|
|
4253
4620
|
background: {
|
|
4254
|
-
focus: "focus:bg-[hsl(var(--accent))]",
|
|
4621
|
+
focus: "focus-visible:bg-[hsl(var(--accent))]",
|
|
4255
4622
|
// Focus background using CSS var
|
|
4256
4623
|
selected: "bg-[hsl(var(--accent))]"
|
|
4257
4624
|
// Selected background using CSS var
|
|
4258
4625
|
},
|
|
4259
4626
|
text: {
|
|
4260
|
-
focus: "focus:text-[hsl(var(--accent-foreground))]",
|
|
4627
|
+
focus: "focus-visible:text-[hsl(var(--accent-foreground))]",
|
|
4261
4628
|
// Focus text using CSS var
|
|
4262
4629
|
selected: "text-[hsl(var(--accent-foreground))]"
|
|
4263
4630
|
// Selected text using CSS var
|
|
@@ -4509,9 +4876,9 @@ var SELECT_TOKENS = {
|
|
|
4509
4876
|
indicator: {
|
|
4510
4877
|
size: "size-4"},
|
|
4511
4878
|
focus: {
|
|
4512
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
4879
|
+
background: "focus-visible:bg-[hsl(var(--accent))]",
|
|
4513
4880
|
// Focus background using CSS var
|
|
4514
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
4881
|
+
text: "focus-visible:text-[hsl(var(--accent-foreground))]"
|
|
4515
4882
|
// Focus text using CSS var
|
|
4516
4883
|
},
|
|
4517
4884
|
disabled: {
|
|
@@ -5054,26 +5421,314 @@ var MODAL_TOKENS = {
|
|
|
5054
5421
|
}
|
|
5055
5422
|
};
|
|
5056
5423
|
|
|
5057
|
-
// src/tokens/
|
|
5058
|
-
var
|
|
5059
|
-
|
|
5060
|
-
|
|
5061
|
-
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
|
|
5065
|
-
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
|
|
5075
|
-
|
|
5076
|
-
|
|
5424
|
+
// src/tokens/components/table.ts
|
|
5425
|
+
var TABLE_TOKENS = {
|
|
5426
|
+
/**
|
|
5427
|
+
* Table cell and header padding by size
|
|
5428
|
+
* Maps to semantic spacing tokens
|
|
5429
|
+
*/
|
|
5430
|
+
padding: {
|
|
5431
|
+
cell: {
|
|
5432
|
+
sm: "p-xs",
|
|
5433
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5434
|
+
md: "p-sm",
|
|
5435
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5436
|
+
lg: "p-md"
|
|
5437
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5438
|
+
},
|
|
5439
|
+
header: {
|
|
5440
|
+
sm: "px-xs py-sm",
|
|
5441
|
+
// 4px horizontal, 8px vertical
|
|
5442
|
+
md: "px-sm py-md",
|
|
5443
|
+
// 8px horizontal, 16px vertical
|
|
5444
|
+
lg: "px-md py-lg"
|
|
5445
|
+
// 16px horizontal, 24px vertical
|
|
5446
|
+
}
|
|
5447
|
+
},
|
|
5448
|
+
/**
|
|
5449
|
+
* Border radius for table
|
|
5450
|
+
*/
|
|
5451
|
+
radius: {
|
|
5452
|
+
default: "rounded-md"
|
|
5453
|
+
// 6px (0.375rem) - maps to borderRadius.md
|
|
5454
|
+
},
|
|
5455
|
+
/**
|
|
5456
|
+
* Shadow tokens for table
|
|
5457
|
+
* Maps to foundation elevation shadow tokens
|
|
5458
|
+
*/
|
|
5459
|
+
shadow: {
|
|
5460
|
+
// No shadow
|
|
5461
|
+
subtle: "shadow-sm"
|
|
5462
|
+
// Maps to elevationShadows.sm
|
|
5463
|
+
},
|
|
5464
|
+
/**
|
|
5465
|
+
* Typography tokens for table headers and cells
|
|
5466
|
+
* Maps to foundation typography fontSize tokens
|
|
5467
|
+
*/
|
|
5468
|
+
typography: {
|
|
5469
|
+
header: {
|
|
5470
|
+
fontSize: "text-sm",
|
|
5471
|
+
// Maps to fontSize.sm[0]
|
|
5472
|
+
fontWeight: "font-semibold"
|
|
5473
|
+
// Maps to fontWeight.semibold
|
|
5474
|
+
},
|
|
5475
|
+
cell: {
|
|
5476
|
+
fontSize: "text-sm",
|
|
5477
|
+
// Maps to fontSize.sm[0]
|
|
5478
|
+
fontWeight: "font-normal"
|
|
5479
|
+
// Maps to fontWeight.normal
|
|
5480
|
+
}
|
|
5481
|
+
},
|
|
5482
|
+
/**
|
|
5483
|
+
* Color tokens for table states
|
|
5484
|
+
* Uses semantic color tokens
|
|
5485
|
+
*/
|
|
5486
|
+
colors: {
|
|
5487
|
+
border: "border-border",
|
|
5488
|
+
// Border color
|
|
5489
|
+
rowHover: "hover:bg-muted/50",
|
|
5490
|
+
// Row hover background
|
|
5491
|
+
rowSelected: "bg-muted"
|
|
5492
|
+
// Selected row background
|
|
5493
|
+
},
|
|
5494
|
+
/**
|
|
5495
|
+
* Border tokens for table
|
|
5496
|
+
*/
|
|
5497
|
+
border: {
|
|
5498
|
+
bottom: "border-b"
|
|
5499
|
+
// Border bottom for rows and headers
|
|
5500
|
+
},
|
|
5501
|
+
/**
|
|
5502
|
+
* Layout tokens for table container and base styles
|
|
5503
|
+
*/
|
|
5504
|
+
layout: {
|
|
5505
|
+
overflow: "overflow-x-auto",
|
|
5506
|
+
// Table container overflow
|
|
5507
|
+
table: "w-full border-collapse"
|
|
5508
|
+
// Table base styles
|
|
5509
|
+
},
|
|
5510
|
+
/**
|
|
5511
|
+
* Sticky header tokens
|
|
5512
|
+
* For sticky header positioning and styling
|
|
5513
|
+
*/
|
|
5514
|
+
sticky: {
|
|
5515
|
+
header: "sticky top-0 z-10 bg-background"
|
|
5516
|
+
// Sticky header styles
|
|
5517
|
+
},
|
|
5518
|
+
/**
|
|
5519
|
+
* Expandable row tokens
|
|
5520
|
+
* For expandable content styling
|
|
5521
|
+
*/
|
|
5522
|
+
expandable: {
|
|
5523
|
+
padding: "p-md",
|
|
5524
|
+
// Expandable content padding - maps to semanticSpacing.md
|
|
5525
|
+
container: "p-0",
|
|
5526
|
+
// Expandable container padding
|
|
5527
|
+
transition: "overflow-hidden transition-all duration-normal ease-in-out",
|
|
5528
|
+
// Transition styles
|
|
5529
|
+
expanded: "max-h-[100vh] opacity-100",
|
|
5530
|
+
// Expanded state
|
|
5531
|
+
collapsed: "max-h-0 opacity-0",
|
|
5532
|
+
// Collapsed state
|
|
5533
|
+
cursor: "cursor-pointer",
|
|
5534
|
+
// Cursor for expandable rows
|
|
5535
|
+
content: {
|
|
5536
|
+
expanded: "block",
|
|
5537
|
+
// Expanded content display
|
|
5538
|
+
collapsed: "hidden"
|
|
5539
|
+
// Collapsed content display
|
|
5540
|
+
}
|
|
5541
|
+
},
|
|
5542
|
+
/**
|
|
5543
|
+
* Loading state tokens
|
|
5544
|
+
* For loading state cell styling
|
|
5545
|
+
*/
|
|
5546
|
+
loading: {
|
|
5547
|
+
cellPadding: "p-sm",
|
|
5548
|
+
// Loading state cell padding - maps to semanticSpacing.sm
|
|
5549
|
+
skeletonWidth: "w-full"
|
|
5550
|
+
// Skeleton width
|
|
5551
|
+
},
|
|
5552
|
+
/**
|
|
5553
|
+
* Empty state tokens
|
|
5554
|
+
* For empty state cell styling
|
|
5555
|
+
*/
|
|
5556
|
+
empty: {
|
|
5557
|
+
padding: "p-8"
|
|
5558
|
+
// Empty state padding - maps to semanticSpacing.2xl
|
|
5559
|
+
},
|
|
5560
|
+
/**
|
|
5561
|
+
* Sortable header tokens
|
|
5562
|
+
* For sortable header styling and interactions
|
|
5563
|
+
*/
|
|
5564
|
+
sortable: {
|
|
5565
|
+
hover: "hover:bg-muted/50",
|
|
5566
|
+
// Sortable header hover
|
|
5567
|
+
gap: "gap-2",
|
|
5568
|
+
// Sort icon gap - maps to semanticSpacing.sm
|
|
5569
|
+
cursor: "cursor-pointer select-none",
|
|
5570
|
+
// Sortable cursor
|
|
5571
|
+
container: "flex items-center",
|
|
5572
|
+
// Sortable header container
|
|
5573
|
+
icon: {
|
|
5574
|
+
base: "inline-flex size-4 items-center text-muted-foreground transition-transform",
|
|
5575
|
+
// Sort icon base styles
|
|
5576
|
+
rotated: "rotate-180",
|
|
5577
|
+
// Rotated state (descending)
|
|
5578
|
+
inactive: "opacity-30"
|
|
5579
|
+
// Inactive state (no sort)
|
|
5580
|
+
}
|
|
5581
|
+
}
|
|
5582
|
+
};
|
|
5583
|
+
|
|
5584
|
+
// src/tokens/components/data-list.ts
|
|
5585
|
+
var DATA_LIST_TOKENS = {
|
|
5586
|
+
/**
|
|
5587
|
+
* Spacing tokens for DataList
|
|
5588
|
+
* Maps to semantic spacing tokens
|
|
5589
|
+
*/
|
|
5590
|
+
spacing: {
|
|
5591
|
+
gap: "gap-md"},
|
|
5592
|
+
/**
|
|
5593
|
+
* Label width tokens (for desktop horizontal layout)
|
|
5594
|
+
* Maps to Tailwind width utilities
|
|
5595
|
+
*/
|
|
5596
|
+
labelWidth: {
|
|
5597
|
+
// 96px (6rem) - small label width
|
|
5598
|
+
md: "w-32"},
|
|
5599
|
+
/**
|
|
5600
|
+
* Row padding tokens
|
|
5601
|
+
* Maps to semantic spacing tokens
|
|
5602
|
+
*/
|
|
5603
|
+
rowPadding: {
|
|
5604
|
+
sm: "py-xs",
|
|
5605
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5606
|
+
md: "py-sm",
|
|
5607
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5608
|
+
lg: "py-md"
|
|
5609
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5610
|
+
},
|
|
5611
|
+
/**
|
|
5612
|
+
* Item tokens
|
|
5613
|
+
* For individual DataList item styling
|
|
5614
|
+
*/
|
|
5615
|
+
item: {
|
|
5616
|
+
/**
|
|
5617
|
+
* Border tokens for items
|
|
5618
|
+
*/
|
|
5619
|
+
border: "border-b border-border last:border-0",
|
|
5620
|
+
// Item borders
|
|
5621
|
+
/**
|
|
5622
|
+
* Responsive layout tokens
|
|
5623
|
+
*/
|
|
5624
|
+
layout: {
|
|
5625
|
+
mobile: "flex flex-col",
|
|
5626
|
+
// Mobile layout - vertical
|
|
5627
|
+
desktop: "md:flex-row md:items-center"
|
|
5628
|
+
// Desktop layout - horizontal
|
|
5629
|
+
}
|
|
5630
|
+
},
|
|
5631
|
+
/**
|
|
5632
|
+
* Label tokens
|
|
5633
|
+
* For DataList label styling
|
|
5634
|
+
*/
|
|
5635
|
+
label: {
|
|
5636
|
+
mobile: "mb-1 font-semibold text-foreground",
|
|
5637
|
+
// Mobile label styles
|
|
5638
|
+
desktop: "md:mb-0"
|
|
5639
|
+
// Desktop label margin override
|
|
5640
|
+
},
|
|
5641
|
+
/**
|
|
5642
|
+
* Value tokens
|
|
5643
|
+
* For DataList value styling
|
|
5644
|
+
*/
|
|
5645
|
+
value: {
|
|
5646
|
+
color: "text-muted-foreground",
|
|
5647
|
+
// Value text color
|
|
5648
|
+
flex: "flex-1"
|
|
5649
|
+
// Value flex grow
|
|
5650
|
+
}
|
|
5651
|
+
};
|
|
5652
|
+
|
|
5653
|
+
// src/tokens/components/empty-state.ts
|
|
5654
|
+
var EMPTY_STATE_TOKENS = {
|
|
5655
|
+
/**
|
|
5656
|
+
* Spacing tokens for EmptyState
|
|
5657
|
+
* Maps to semantic spacing tokens
|
|
5658
|
+
*/
|
|
5659
|
+
spacing: {
|
|
5660
|
+
// 24px (1.5rem) - container padding - maps to semanticSpacing.lg
|
|
5661
|
+
action: "mt-2"
|
|
5662
|
+
// Action button margin top - maps to semanticSpacing.xs
|
|
5663
|
+
},
|
|
5664
|
+
/**
|
|
5665
|
+
* Icon sizes by variant
|
|
5666
|
+
* Maps to Tailwind size utilities
|
|
5667
|
+
*/
|
|
5668
|
+
icon: {
|
|
5669
|
+
size: {
|
|
5670
|
+
sm: "size-8",
|
|
5671
|
+
// 32px (2rem)
|
|
5672
|
+
md: "size-12",
|
|
5673
|
+
// 48px (3rem)
|
|
5674
|
+
lg: "size-16"
|
|
5675
|
+
// 64px (4rem)
|
|
5676
|
+
},
|
|
5677
|
+
container: "flex items-center justify-center text-muted-foreground"
|
|
5678
|
+
// Icon container styles
|
|
5679
|
+
},
|
|
5680
|
+
/**
|
|
5681
|
+
* Typography tokens for EmptyState
|
|
5682
|
+
* Maps to foundation typography tokens
|
|
5683
|
+
*/
|
|
5684
|
+
typography: {
|
|
5685
|
+
title: {
|
|
5686
|
+
fontSize: "text-lg",
|
|
5687
|
+
// Maps to fontSize.lg[0]
|
|
5688
|
+
fontWeight: "font-semibold",
|
|
5689
|
+
// Maps to fontWeight.semibold
|
|
5690
|
+
color: "text-foreground"
|
|
5691
|
+
// Title text color
|
|
5692
|
+
},
|
|
5693
|
+
description: {
|
|
5694
|
+
fontSize: "text-sm",
|
|
5695
|
+
// Maps to fontSize.sm[0]
|
|
5696
|
+
fontWeight: "font-normal",
|
|
5697
|
+
// Maps to fontWeight.normal
|
|
5698
|
+
color: "text-muted-foreground",
|
|
5699
|
+
// Description text color
|
|
5700
|
+
maxWidth: "max-w-md"
|
|
5701
|
+
// Maximum width for description
|
|
5702
|
+
}
|
|
5703
|
+
},
|
|
5704
|
+
/**
|
|
5705
|
+
* Alignment tokens
|
|
5706
|
+
* For text alignment in EmptyState
|
|
5707
|
+
*/
|
|
5708
|
+
alignment: {
|
|
5709
|
+
center: "text-center"}
|
|
5710
|
+
};
|
|
5711
|
+
|
|
5712
|
+
// src/tokens/motion/v2.ts
|
|
5713
|
+
var motionV2Durations = {
|
|
5714
|
+
fast: "150ms",
|
|
5715
|
+
// Quick interactions
|
|
5716
|
+
normal: "250ms",
|
|
5717
|
+
// Default transitions
|
|
5718
|
+
slow: "350ms",
|
|
5719
|
+
// Emphasized animations
|
|
5720
|
+
reduced: "0ms"
|
|
5721
|
+
// For prefers-reduced-motion
|
|
5722
|
+
};
|
|
5723
|
+
var motionV2Easings = {
|
|
5724
|
+
soft: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
5725
|
+
// Gentle, smooth
|
|
5726
|
+
standard: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
5727
|
+
// Material Design standard
|
|
5728
|
+
emphasized: "cubic-bezier(0.2, 0, 0, 1)"
|
|
5729
|
+
// Strong, decisive
|
|
5730
|
+
};
|
|
5731
|
+
var motionV2Transitions = {
|
|
5077
5732
|
fast: `${motionV2Durations.fast} ${motionV2Easings.standard}`,
|
|
5078
5733
|
normal: `${motionV2Durations.normal} ${motionV2Easings.standard}`,
|
|
5079
5734
|
slow: `${motionV2Durations.slow} ${motionV2Easings.emphasized}`,
|
|
@@ -5321,54 +5976,54 @@ var transitions = {
|
|
|
5321
5976
|
var keyframes = {
|
|
5322
5977
|
// Fade animations
|
|
5323
5978
|
fadeIn: {
|
|
5324
|
-
from: { opacity: 0 },
|
|
5325
|
-
to: { opacity: 1 }
|
|
5979
|
+
from: { opacity: "0" },
|
|
5980
|
+
to: { opacity: "1" }
|
|
5326
5981
|
},
|
|
5327
5982
|
fadeOut: {
|
|
5328
|
-
from: { opacity: 1 },
|
|
5329
|
-
to: { opacity: 0 }
|
|
5983
|
+
from: { opacity: "1" },
|
|
5984
|
+
to: { opacity: "0" }
|
|
5330
5985
|
},
|
|
5331
5986
|
// Slide animations
|
|
5332
5987
|
slideInUp: {
|
|
5333
|
-
from: { transform: "translateY(100%)", opacity: 0 },
|
|
5334
|
-
to: { transform: "translateY(0)", opacity: 1 }
|
|
5988
|
+
from: { transform: "translateY(100%)", opacity: "0" },
|
|
5989
|
+
to: { transform: "translateY(0)", opacity: "1" }
|
|
5335
5990
|
},
|
|
5336
5991
|
slideInDown: {
|
|
5337
|
-
from: { transform: "translateY(-100%)", opacity: 0 },
|
|
5338
|
-
to: { transform: "translateY(0)", opacity: 1 }
|
|
5992
|
+
from: { transform: "translateY(-100%)", opacity: "0" },
|
|
5993
|
+
to: { transform: "translateY(0)", opacity: "1" }
|
|
5339
5994
|
},
|
|
5340
5995
|
slideInLeft: {
|
|
5341
|
-
from: { transform: "translateX(-100%)", opacity: 0 },
|
|
5342
|
-
to: { transform: "translateX(0)", opacity: 1 }
|
|
5996
|
+
from: { transform: "translateX(-100%)", opacity: "0" },
|
|
5997
|
+
to: { transform: "translateX(0)", opacity: "1" }
|
|
5343
5998
|
},
|
|
5344
5999
|
slideInRight: {
|
|
5345
|
-
from: { transform: "translateX(100%)", opacity: 0 },
|
|
5346
|
-
to: { transform: "translateX(0)", opacity: 1 }
|
|
6000
|
+
from: { transform: "translateX(100%)", opacity: "0" },
|
|
6001
|
+
to: { transform: "translateX(0)", opacity: "1" }
|
|
5347
6002
|
},
|
|
5348
6003
|
slideOutUp: {
|
|
5349
|
-
from: { transform: "translateY(0)", opacity: 1 },
|
|
5350
|
-
to: { transform: "translateY(-100%)", opacity: 0 }
|
|
6004
|
+
from: { transform: "translateY(0)", opacity: "1" },
|
|
6005
|
+
to: { transform: "translateY(-100%)", opacity: "0" }
|
|
5351
6006
|
},
|
|
5352
6007
|
slideOutDown: {
|
|
5353
|
-
from: { transform: "translateY(0)", opacity: 1 },
|
|
5354
|
-
to: { transform: "translateY(100%)", opacity: 0 }
|
|
6008
|
+
from: { transform: "translateY(0)", opacity: "1" },
|
|
6009
|
+
to: { transform: "translateY(100%)", opacity: "0" }
|
|
5355
6010
|
},
|
|
5356
6011
|
slideOutLeft: {
|
|
5357
|
-
from: { transform: "translateX(0)", opacity: 1 },
|
|
5358
|
-
to: { transform: "translateX(-100%)", opacity: 0 }
|
|
6012
|
+
from: { transform: "translateX(0)", opacity: "1" },
|
|
6013
|
+
to: { transform: "translateX(-100%)", opacity: "0" }
|
|
5359
6014
|
},
|
|
5360
6015
|
slideOutRight: {
|
|
5361
|
-
from: { transform: "translateX(0)", opacity: 1 },
|
|
5362
|
-
to: { transform: "translateX(100%)", opacity: 0 }
|
|
6016
|
+
from: { transform: "translateX(0)", opacity: "1" },
|
|
6017
|
+
to: { transform: "translateX(100%)", opacity: "0" }
|
|
5363
6018
|
},
|
|
5364
6019
|
// Scale animations
|
|
5365
6020
|
scaleIn: {
|
|
5366
|
-
from: { transform: "scale(0.95)", opacity: 0 },
|
|
5367
|
-
to: { transform: "scale(1)", opacity: 1 }
|
|
6021
|
+
from: { transform: "scale(0.95)", opacity: "0" },
|
|
6022
|
+
to: { transform: "scale(1)", opacity: "1" }
|
|
5368
6023
|
},
|
|
5369
6024
|
scaleOut: {
|
|
5370
|
-
from: { transform: "scale(1)", opacity: 1 },
|
|
5371
|
-
to: { transform: "scale(0.95)", opacity: 0 }
|
|
6025
|
+
from: { transform: "scale(1)", opacity: "1" },
|
|
6026
|
+
to: { transform: "scale(0.95)", opacity: "0" }
|
|
5372
6027
|
},
|
|
5373
6028
|
scaleUp: {
|
|
5374
6029
|
from: { transform: "scale(1)" },
|
|
@@ -5389,8 +6044,8 @@ var keyframes = {
|
|
|
5389
6044
|
},
|
|
5390
6045
|
// Pulse and bounce
|
|
5391
6046
|
pulse: {
|
|
5392
|
-
"0%, 100%": { opacity: 1 },
|
|
5393
|
-
"50%": { opacity: 0.5 }
|
|
6047
|
+
"0%, 100%": { opacity: "1" },
|
|
6048
|
+
"50%": { opacity: "0.5" }
|
|
5394
6049
|
},
|
|
5395
6050
|
bounce: {
|
|
5396
6051
|
"0%, 100%": {
|
|
@@ -5412,7 +6067,7 @@ var keyframes = {
|
|
|
5412
6067
|
ping: {
|
|
5413
6068
|
"75%, 100%": {
|
|
5414
6069
|
transform: "scale(2)",
|
|
5415
|
-
opacity: 0
|
|
6070
|
+
opacity: "0"
|
|
5416
6071
|
}
|
|
5417
6072
|
},
|
|
5418
6073
|
// Accordion animations (for Radix UI)
|
|
@@ -6371,41 +7026,179 @@ var tokenSystemSummary = {
|
|
|
6371
7026
|
|
|
6372
7027
|
// src/tokens/theme.ts
|
|
6373
7028
|
var UI_COLORS = tailwindThemeColors;
|
|
7029
|
+
var FORBIDDEN_PATTERNS = [
|
|
7030
|
+
// Raw color utilities (bg-red-500, text-blue-600, etc.)
|
|
7031
|
+
// These are always forbidden as they bypass the color token system
|
|
7032
|
+
/\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+/,
|
|
7033
|
+
// Raw spacing utilities with arbitrary numbers (p-4, m-2, gap-3, etc.)
|
|
7034
|
+
// Allow semantic spacing tokens (px-sm, py-md, etc.) which use token names
|
|
7035
|
+
/\b(p|m|px|py|pt|pb|pl|pr|mx|my|mt|mb|ml|mr|gap|space-[xy])-(\d+|\[)/,
|
|
7036
|
+
// Raw size utilities with arbitrary numbers (w-4, h-6, etc.)
|
|
7037
|
+
// Allow semantic size tokens (h-8, w-9, etc.) which are standard design system values
|
|
7038
|
+
// Only flag arbitrary values like w-[123px] or h-[calc(...)]
|
|
7039
|
+
/\b(w|h|min-w|min-h|max-w|max-h)-\[/
|
|
7040
|
+
];
|
|
7041
|
+
function validateTokenUsage(classes, context) {
|
|
7042
|
+
if (process.env.NODE_ENV === "production") {
|
|
7043
|
+
return;
|
|
7044
|
+
}
|
|
7045
|
+
for (const pattern of FORBIDDEN_PATTERNS) {
|
|
7046
|
+
if (pattern.test(classes)) {
|
|
7047
|
+
console.warn(
|
|
7048
|
+
`[tokenCVA] Potential hardcoded Tailwind utility detected in ${context}:
|
|
7049
|
+
"${classes}"
|
|
7050
|
+
Pattern: ${pattern}
|
|
7051
|
+
Please use token-based utilities instead (e.g., from component tokens).`
|
|
7052
|
+
);
|
|
7053
|
+
}
|
|
7054
|
+
}
|
|
7055
|
+
}
|
|
7056
|
+
function validateVariantConfig(value, path, visited = /* @__PURE__ */ new Set()) {
|
|
7057
|
+
if (value === void 0 || value === null) {
|
|
7058
|
+
return;
|
|
7059
|
+
}
|
|
7060
|
+
const key = `${path}-${String(value)}`;
|
|
7061
|
+
if (visited.has(key)) {
|
|
7062
|
+
return;
|
|
7063
|
+
}
|
|
7064
|
+
visited.add(key);
|
|
7065
|
+
if (typeof value === "string") {
|
|
7066
|
+
validateTokenUsage(value, path);
|
|
7067
|
+
} else if (Array.isArray(value)) {
|
|
7068
|
+
value.forEach((item, index2) => {
|
|
7069
|
+
validateVariantConfig(item, `${path}[${index2}]`, visited);
|
|
7070
|
+
});
|
|
7071
|
+
} else if (typeof value === "object") {
|
|
7072
|
+
Object.entries(value).forEach(([key2, val]) => {
|
|
7073
|
+
validateVariantConfig(val, `${path}.${key2}`, visited);
|
|
7074
|
+
});
|
|
7075
|
+
}
|
|
7076
|
+
}
|
|
7077
|
+
function tokenCVA(config) {
|
|
7078
|
+
if (process.env.NODE_ENV !== "production") {
|
|
7079
|
+
if (config.base) {
|
|
7080
|
+
validateVariantConfig(config.base, "base");
|
|
7081
|
+
}
|
|
7082
|
+
if (config.variants) {
|
|
7083
|
+
Object.entries(config.variants).forEach(([variantKey, variantValues]) => {
|
|
7084
|
+
Object.entries(variantValues).forEach(([valueKey, value]) => {
|
|
7085
|
+
validateVariantConfig(value, `variants.${variantKey}.${valueKey}`);
|
|
7086
|
+
});
|
|
7087
|
+
});
|
|
7088
|
+
}
|
|
7089
|
+
if (config.compoundVariants) {
|
|
7090
|
+
config.compoundVariants.forEach((compound, index2) => {
|
|
7091
|
+
if (compound.class) {
|
|
7092
|
+
validateVariantConfig(compound.class, `compoundVariants[${index2}].class`);
|
|
7093
|
+
}
|
|
7094
|
+
if (compound.className) {
|
|
7095
|
+
validateVariantConfig(compound.className, `compoundVariants[${index2}].className`);
|
|
7096
|
+
}
|
|
7097
|
+
});
|
|
7098
|
+
}
|
|
7099
|
+
}
|
|
7100
|
+
return classVarianceAuthority.cva(config.base, {
|
|
7101
|
+
variants: config.variants,
|
|
7102
|
+
compoundVariants: config.compoundVariants,
|
|
7103
|
+
defaultVariants: config.defaultVariants
|
|
7104
|
+
});
|
|
7105
|
+
}
|
|
6374
7106
|
function cn(...inputs) {
|
|
6375
7107
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
6376
7108
|
}
|
|
6377
|
-
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
|
|
6388
|
-
}
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
}
|
|
7109
|
+
function formatDate(date) {
|
|
7110
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
7111
|
+
month: "long",
|
|
7112
|
+
day: "numeric",
|
|
7113
|
+
year: "numeric"
|
|
7114
|
+
}).format(new Date(date));
|
|
7115
|
+
}
|
|
7116
|
+
var buttonVariants = tokenCVA({
|
|
7117
|
+
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`,
|
|
7118
|
+
variants: {
|
|
7119
|
+
variant: {
|
|
7120
|
+
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}`,
|
|
7121
|
+
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}`,
|
|
7122
|
+
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}`,
|
|
7123
|
+
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}`,
|
|
7124
|
+
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}`,
|
|
7125
|
+
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}`
|
|
6395
7126
|
},
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
7127
|
+
size: {
|
|
7128
|
+
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}`,
|
|
7129
|
+
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}`,
|
|
7130
|
+
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}`,
|
|
7131
|
+
icon: `${BUTTON_TOKENS.height.icon} ${BUTTON_TOKENS.width.icon} [&_svg]:${BUTTON_TOKENS.iconSize.icon}`
|
|
6399
7132
|
}
|
|
7133
|
+
},
|
|
7134
|
+
defaultVariants: {
|
|
7135
|
+
variant: "primary",
|
|
7136
|
+
size: "md"
|
|
6400
7137
|
}
|
|
6401
|
-
);
|
|
7138
|
+
});
|
|
6402
7139
|
var Button = React49__namespace.forwardRef(
|
|
6403
7140
|
({ className, variant, size: size3, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
|
|
6404
7141
|
const Comp = asChild ? reactSlot.Slot : "button";
|
|
6405
|
-
|
|
6406
|
-
|
|
7142
|
+
const finalClassName = cn(buttonVariants({ variant, size: size3, className }));
|
|
7143
|
+
const iconSizeMap = {
|
|
7144
|
+
"size-3.5": "[&_svg]:w-3.5 [&_svg]:h-3.5",
|
|
7145
|
+
"size-4": "[&_svg]:w-4 [&_svg]:h-4",
|
|
7146
|
+
"size-5": "[&_svg]:w-5 [&_svg]:h-5"
|
|
7147
|
+
};
|
|
7148
|
+
const iconSizeToken = size3 ? BUTTON_TOKENS.iconSize[size3] : BUTTON_TOKENS.iconSize.md;
|
|
7149
|
+
const iconSizeClass = iconSizeMap[iconSizeToken] || "[&_svg]:w-4 [&_svg]:h-4";
|
|
7150
|
+
if (typeof window !== "undefined" && variant === "primary") {
|
|
7151
|
+
const hasHoverClass = finalClassName.includes(
|
|
7152
|
+
"hover:bg-[hsl(var(--button-primary-hover-bg))]"
|
|
7153
|
+
);
|
|
7154
|
+
const hasActiveClass = finalClassName.includes(
|
|
7155
|
+
"active:bg-[hsl(var(--button-primary-active-bg))]"
|
|
7156
|
+
);
|
|
7157
|
+
fetch("http://127.0.0.1:7243/ingest/ff5d1e20-0815-4ca0-af82-fcbd3cfa35b1", {
|
|
7158
|
+
method: "POST",
|
|
7159
|
+
headers: { "Content-Type": "application/json" },
|
|
7160
|
+
body: JSON.stringify({
|
|
7161
|
+
location: "button.tsx:137",
|
|
7162
|
+
message: "Button className check (State Authority Contract)",
|
|
7163
|
+
data: {
|
|
7164
|
+
variant,
|
|
7165
|
+
size: size3,
|
|
7166
|
+
className: finalClassName,
|
|
7167
|
+
hasHoverClass,
|
|
7168
|
+
hasActiveClass,
|
|
7169
|
+
hoverClassInString: finalClassName.includes("hover"),
|
|
7170
|
+
allClasses: finalClassName.split(" ").filter((c) => c.includes("hover") || c.includes("active") || c.includes("disabled"))
|
|
7171
|
+
},
|
|
7172
|
+
timestamp: Date.now(),
|
|
7173
|
+
sessionId: "debug-session",
|
|
7174
|
+
runId: "state-authority-contract",
|
|
7175
|
+
hypothesisId: "A"
|
|
7176
|
+
})
|
|
7177
|
+
}).catch(() => {
|
|
7178
|
+
});
|
|
7179
|
+
}
|
|
7180
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Comp, { className: finalClassName, ref, ...props, children: [
|
|
7181
|
+
leftIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7182
|
+
"span",
|
|
7183
|
+
{
|
|
7184
|
+
className: cn(
|
|
7185
|
+
"pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
|
|
7186
|
+
iconSizeClass
|
|
7187
|
+
),
|
|
7188
|
+
children: leftIcon
|
|
7189
|
+
}
|
|
7190
|
+
),
|
|
6407
7191
|
children,
|
|
6408
|
-
rightIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7192
|
+
rightIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7193
|
+
"span",
|
|
7194
|
+
{
|
|
7195
|
+
className: cn(
|
|
7196
|
+
"pointer-events-none relative z-10 inline-flex items-center [&_svg]:text-current",
|
|
7197
|
+
iconSizeClass
|
|
7198
|
+
),
|
|
7199
|
+
children: rightIcon
|
|
7200
|
+
}
|
|
7201
|
+
)
|
|
6409
7202
|
] });
|
|
6410
7203
|
}
|
|
6411
7204
|
);
|
|
@@ -6500,14 +7293,14 @@ Alert.displayName = "Alert";
|
|
|
6500
7293
|
var bodyVariants = classVarianceAuthority.cva("font-sans text-foreground", {
|
|
6501
7294
|
variants: {
|
|
6502
7295
|
size: {
|
|
6503
|
-
md:
|
|
6504
|
-
lg:
|
|
7296
|
+
md: `${TEXT_TOKENS.fontSize.md} ${TEXT_TOKENS.lineHeight.relaxed} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7297
|
+
lg: `${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.lineHeight.relaxed} ${TEXT_TOKENS.letterSpacing.normal}`
|
|
6505
7298
|
},
|
|
6506
7299
|
weight: {
|
|
6507
|
-
normal:
|
|
6508
|
-
medium:
|
|
6509
|
-
semibold:
|
|
6510
|
-
bold:
|
|
7300
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7301
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7302
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7303
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
6511
7304
|
},
|
|
6512
7305
|
muted: {
|
|
6513
7306
|
true: "text-muted-foreground",
|
|
@@ -6535,22 +7328,31 @@ var Body = React49__namespace.forwardRef(
|
|
|
6535
7328
|
}
|
|
6536
7329
|
);
|
|
6537
7330
|
Body.displayName = "Body";
|
|
6538
|
-
var captionVariants = classVarianceAuthority.cva(
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
7331
|
+
var captionVariants = classVarianceAuthority.cva(
|
|
7332
|
+
[
|
|
7333
|
+
"font-sans",
|
|
7334
|
+
"text-foreground",
|
|
7335
|
+
TEXT_TOKENS.fontSize.xs,
|
|
7336
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7337
|
+
TEXT_TOKENS.letterSpacing.wide
|
|
7338
|
+
].filter(Boolean).join(" "),
|
|
7339
|
+
{
|
|
7340
|
+
variants: {
|
|
7341
|
+
weight: {
|
|
7342
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7343
|
+
medium: TEXT_TOKENS.fontWeight.medium
|
|
7344
|
+
},
|
|
7345
|
+
muted: {
|
|
7346
|
+
true: "text-muted-foreground",
|
|
7347
|
+
false: ""
|
|
7348
|
+
}
|
|
6543
7349
|
},
|
|
6544
|
-
|
|
6545
|
-
|
|
6546
|
-
|
|
7350
|
+
defaultVariants: {
|
|
7351
|
+
weight: "normal",
|
|
7352
|
+
muted: true
|
|
6547
7353
|
}
|
|
6548
|
-
},
|
|
6549
|
-
defaultVariants: {
|
|
6550
|
-
weight: "normal",
|
|
6551
|
-
muted: true
|
|
6552
7354
|
}
|
|
6553
|
-
|
|
7355
|
+
);
|
|
6554
7356
|
var Caption = React49__namespace.forwardRef(
|
|
6555
7357
|
({ className, weight, muted, as = "span", children, ...props }, ref) => {
|
|
6556
7358
|
const Component = as;
|
|
@@ -6558,11 +7360,7 @@ var Caption = React49__namespace.forwardRef(
|
|
|
6558
7360
|
Component,
|
|
6559
7361
|
{
|
|
6560
7362
|
ref,
|
|
6561
|
-
className: cn(
|
|
6562
|
-
"text-xs leading-tight tracking-wide",
|
|
6563
|
-
captionVariants({ weight, muted }),
|
|
6564
|
-
className
|
|
6565
|
-
),
|
|
7363
|
+
className: cn(captionVariants({ weight, muted }), className),
|
|
6566
7364
|
...props,
|
|
6567
7365
|
children
|
|
6568
7366
|
}
|
|
@@ -6570,11 +7368,43 @@ var Caption = React49__namespace.forwardRef(
|
|
|
6570
7368
|
}
|
|
6571
7369
|
);
|
|
6572
7370
|
Caption.displayName = "Caption";
|
|
7371
|
+
|
|
7372
|
+
// src/tokens/components/code.ts
|
|
7373
|
+
var CODE_TOKENS = {
|
|
7374
|
+
/**
|
|
7375
|
+
* Background color tokens
|
|
7376
|
+
* Uses semantic color tokens
|
|
7377
|
+
*/
|
|
7378
|
+
background: {
|
|
7379
|
+
muted: "bg-muted"
|
|
7380
|
+
// Muted background for code blocks
|
|
7381
|
+
},
|
|
7382
|
+
/**
|
|
7383
|
+
* Border radius tokens
|
|
7384
|
+
* Maps to foundation borderRadius tokens
|
|
7385
|
+
*/
|
|
7386
|
+
radius: {
|
|
7387
|
+
inline: "rounded",
|
|
7388
|
+
// Small radius for inline code
|
|
7389
|
+
block: "rounded-md"
|
|
7390
|
+
// Medium radius for code blocks
|
|
7391
|
+
},
|
|
7392
|
+
/**
|
|
7393
|
+
* Padding tokens
|
|
7394
|
+
* Maps to foundation spacing tokens
|
|
7395
|
+
*/
|
|
7396
|
+
padding: {
|
|
7397
|
+
inline: "px-xs py-0.5",
|
|
7398
|
+
// 4px horizontal, 4px vertical for inline code
|
|
7399
|
+
block: "p-md"
|
|
7400
|
+
// 16px padding for code blocks
|
|
7401
|
+
}
|
|
7402
|
+
};
|
|
6573
7403
|
var codeVariants = classVarianceAuthority.cva("font-mono text-foreground", {
|
|
6574
7404
|
variants: {
|
|
6575
7405
|
variant: {
|
|
6576
|
-
inline:
|
|
6577
|
-
block:
|
|
7406
|
+
inline: `${CODE_TOKENS.radius.inline} ${CODE_TOKENS.background.muted} ${CODE_TOKENS.padding.inline} ${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
7407
|
+
block: `block ${CODE_TOKENS.radius.block} ${CODE_TOKENS.background.muted} ${CODE_TOKENS.padding.block} ${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.semibold}`
|
|
6578
7408
|
},
|
|
6579
7409
|
muted: {
|
|
6580
7410
|
true: "text-muted-foreground",
|
|
@@ -6604,19 +7434,19 @@ Code.displayName = "Code";
|
|
|
6604
7434
|
var displayVariants = classVarianceAuthority.cva("font-display text-foreground", {
|
|
6605
7435
|
variants: {
|
|
6606
7436
|
size: {
|
|
6607
|
-
xl:
|
|
6608
|
-
"2xl": "
|
|
6609
|
-
"3xl": "
|
|
6610
|
-
"4xl": "
|
|
7437
|
+
xl: `${TEXT_TOKENS.fontSize.xl} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7438
|
+
"2xl": `${TEXT_TOKENS.fontSize["2xl"]} ${TEXT_TOKENS.lineHeight.tight} ${TEXT_TOKENS.letterSpacing.tight}`,
|
|
7439
|
+
"3xl": `${TEXT_TOKENS.fontSize["3xl"]} ${TEXT_TOKENS.lineHeight.tight} ${TEXT_TOKENS.letterSpacing.tight}`,
|
|
7440
|
+
"4xl": `${TEXT_TOKENS.fontSize["4xl"]} ${TEXT_TOKENS.lineHeight.none} ${TEXT_TOKENS.letterSpacing.tight}`
|
|
6611
7441
|
},
|
|
6612
7442
|
weight: {
|
|
6613
|
-
normal:
|
|
6614
|
-
medium:
|
|
6615
|
-
semibold:
|
|
6616
|
-
bold:
|
|
6617
|
-
},
|
|
6618
|
-
muted: {
|
|
6619
|
-
true: "text-muted-foreground",
|
|
7443
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7444
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7445
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7446
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
7447
|
+
},
|
|
7448
|
+
muted: {
|
|
7449
|
+
true: "text-muted-foreground",
|
|
6620
7450
|
false: ""
|
|
6621
7451
|
}
|
|
6622
7452
|
},
|
|
@@ -6645,149 +7475,87 @@ var Display = React49__namespace.forwardRef(
|
|
|
6645
7475
|
}
|
|
6646
7476
|
);
|
|
6647
7477
|
Display.displayName = "Display";
|
|
7478
|
+
var levelConfig = {
|
|
7479
|
+
1: [
|
|
7480
|
+
TEXT_TOKENS.fontSize["5xl"],
|
|
7481
|
+
TEXT_TOKENS.fontWeight.bold,
|
|
7482
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7483
|
+
TEXT_TOKENS.letterSpacing.tight
|
|
7484
|
+
],
|
|
7485
|
+
2: [
|
|
7486
|
+
TEXT_TOKENS.fontSize["4xl"],
|
|
7487
|
+
TEXT_TOKENS.fontWeight.bold,
|
|
7488
|
+
TEXT_TOKENS.lineHeight.tight,
|
|
7489
|
+
TEXT_TOKENS.letterSpacing.tight
|
|
7490
|
+
],
|
|
7491
|
+
3: [
|
|
7492
|
+
TEXT_TOKENS.fontSize["3xl"],
|
|
7493
|
+
TEXT_TOKENS.fontWeight.semibold,
|
|
7494
|
+
TEXT_TOKENS.lineHeight.snug,
|
|
7495
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7496
|
+
],
|
|
7497
|
+
4: [
|
|
7498
|
+
TEXT_TOKENS.fontSize["2xl"],
|
|
7499
|
+
TEXT_TOKENS.fontWeight.semibold,
|
|
7500
|
+
TEXT_TOKENS.lineHeight.snug,
|
|
7501
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7502
|
+
],
|
|
7503
|
+
5: [
|
|
7504
|
+
TEXT_TOKENS.fontSize.xl,
|
|
7505
|
+
TEXT_TOKENS.fontWeight.medium,
|
|
7506
|
+
TEXT_TOKENS.lineHeight.normal,
|
|
7507
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7508
|
+
],
|
|
7509
|
+
6: [
|
|
7510
|
+
TEXT_TOKENS.fontSize.lg,
|
|
7511
|
+
TEXT_TOKENS.fontWeight.medium,
|
|
7512
|
+
TEXT_TOKENS.lineHeight.normal,
|
|
7513
|
+
TEXT_TOKENS.letterSpacing.normal
|
|
7514
|
+
]
|
|
7515
|
+
};
|
|
7516
|
+
var levelVariants = Object.entries(levelConfig).reduce(
|
|
7517
|
+
(acc, [level, [fontSize2, defaultWeight, lineHeight2, letterSpacing2]]) => {
|
|
7518
|
+
acc[Number(level)] = `${fontSize2} ${defaultWeight} ${lineHeight2} ${letterSpacing2}`;
|
|
7519
|
+
return acc;
|
|
7520
|
+
},
|
|
7521
|
+
{}
|
|
7522
|
+
);
|
|
7523
|
+
var generateWeightVariants = () => {
|
|
7524
|
+
const weights = [
|
|
7525
|
+
"normal",
|
|
7526
|
+
"medium",
|
|
7527
|
+
"semibold",
|
|
7528
|
+
"bold"
|
|
7529
|
+
];
|
|
7530
|
+
const levels = [1, 2, 3, 4, 5, 6];
|
|
7531
|
+
const variants = [];
|
|
7532
|
+
for (const level of levels) {
|
|
7533
|
+
const [fontSize2, , lineHeight2, letterSpacing2] = levelConfig[level];
|
|
7534
|
+
for (const weight of weights) {
|
|
7535
|
+
variants.push({
|
|
7536
|
+
level,
|
|
7537
|
+
weight,
|
|
7538
|
+
class: `${fontSize2} ${TEXT_TOKENS.fontWeight[weight]} ${lineHeight2} ${letterSpacing2}`
|
|
7539
|
+
});
|
|
7540
|
+
}
|
|
7541
|
+
}
|
|
7542
|
+
return variants;
|
|
7543
|
+
};
|
|
6648
7544
|
var headingVariants = classVarianceAuthority.cva("font-display text-foreground", {
|
|
6649
7545
|
variants: {
|
|
6650
|
-
level:
|
|
6651
|
-
1: "text-5xl font-bold leading-tight tracking-tight",
|
|
6652
|
-
2: "text-4xl font-bold leading-tight tracking-tight",
|
|
6653
|
-
3: "text-3xl font-semibold leading-snug tracking-normal",
|
|
6654
|
-
4: "text-2xl font-semibold leading-snug tracking-normal",
|
|
6655
|
-
5: "text-xl font-medium leading-normal tracking-normal",
|
|
6656
|
-
6: "text-lg font-medium leading-normal tracking-normal"
|
|
6657
|
-
},
|
|
7546
|
+
level: levelVariants,
|
|
6658
7547
|
weight: {
|
|
6659
|
-
normal:
|
|
6660
|
-
medium:
|
|
6661
|
-
semibold:
|
|
6662
|
-
bold:
|
|
7548
|
+
normal: TEXT_TOKENS.fontWeight.normal,
|
|
7549
|
+
medium: TEXT_TOKENS.fontWeight.medium,
|
|
7550
|
+
semibold: TEXT_TOKENS.fontWeight.semibold,
|
|
7551
|
+
bold: TEXT_TOKENS.fontWeight.bold
|
|
6663
7552
|
},
|
|
6664
7553
|
muted: {
|
|
6665
7554
|
true: "text-muted-foreground",
|
|
6666
7555
|
false: ""
|
|
6667
7556
|
}
|
|
6668
7557
|
},
|
|
6669
|
-
compoundVariants:
|
|
6670
|
-
{
|
|
6671
|
-
level: 1,
|
|
6672
|
-
weight: "normal",
|
|
6673
|
-
class: "text-5xl font-normal"
|
|
6674
|
-
},
|
|
6675
|
-
{
|
|
6676
|
-
level: 1,
|
|
6677
|
-
weight: "medium",
|
|
6678
|
-
class: "text-5xl font-medium"
|
|
6679
|
-
},
|
|
6680
|
-
{
|
|
6681
|
-
level: 1,
|
|
6682
|
-
weight: "semibold",
|
|
6683
|
-
class: "text-5xl font-semibold"
|
|
6684
|
-
},
|
|
6685
|
-
{
|
|
6686
|
-
level: 1,
|
|
6687
|
-
weight: "bold",
|
|
6688
|
-
class: "text-5xl font-bold"
|
|
6689
|
-
},
|
|
6690
|
-
{
|
|
6691
|
-
level: 2,
|
|
6692
|
-
weight: "normal",
|
|
6693
|
-
class: "text-4xl font-normal"
|
|
6694
|
-
},
|
|
6695
|
-
{
|
|
6696
|
-
level: 2,
|
|
6697
|
-
weight: "medium",
|
|
6698
|
-
class: "text-4xl font-medium"
|
|
6699
|
-
},
|
|
6700
|
-
{
|
|
6701
|
-
level: 2,
|
|
6702
|
-
weight: "semibold",
|
|
6703
|
-
class: "text-4xl font-semibold"
|
|
6704
|
-
},
|
|
6705
|
-
{
|
|
6706
|
-
level: 2,
|
|
6707
|
-
weight: "bold",
|
|
6708
|
-
class: "text-4xl font-bold"
|
|
6709
|
-
},
|
|
6710
|
-
{
|
|
6711
|
-
level: 3,
|
|
6712
|
-
weight: "normal",
|
|
6713
|
-
class: "text-3xl font-normal"
|
|
6714
|
-
},
|
|
6715
|
-
{
|
|
6716
|
-
level: 3,
|
|
6717
|
-
weight: "medium",
|
|
6718
|
-
class: "text-3xl font-medium"
|
|
6719
|
-
},
|
|
6720
|
-
{
|
|
6721
|
-
level: 3,
|
|
6722
|
-
weight: "semibold",
|
|
6723
|
-
class: "text-3xl font-semibold"
|
|
6724
|
-
},
|
|
6725
|
-
{
|
|
6726
|
-
level: 3,
|
|
6727
|
-
weight: "bold",
|
|
6728
|
-
class: "text-3xl font-bold"
|
|
6729
|
-
},
|
|
6730
|
-
{
|
|
6731
|
-
level: 4,
|
|
6732
|
-
weight: "normal",
|
|
6733
|
-
class: "text-2xl font-normal"
|
|
6734
|
-
},
|
|
6735
|
-
{
|
|
6736
|
-
level: 4,
|
|
6737
|
-
weight: "medium",
|
|
6738
|
-
class: "text-2xl font-medium"
|
|
6739
|
-
},
|
|
6740
|
-
{
|
|
6741
|
-
level: 4,
|
|
6742
|
-
weight: "semibold",
|
|
6743
|
-
class: "text-2xl font-semibold"
|
|
6744
|
-
},
|
|
6745
|
-
{
|
|
6746
|
-
level: 4,
|
|
6747
|
-
weight: "bold",
|
|
6748
|
-
class: "text-2xl font-bold"
|
|
6749
|
-
},
|
|
6750
|
-
{
|
|
6751
|
-
level: 5,
|
|
6752
|
-
weight: "normal",
|
|
6753
|
-
class: "text-xl font-normal"
|
|
6754
|
-
},
|
|
6755
|
-
{
|
|
6756
|
-
level: 5,
|
|
6757
|
-
weight: "medium",
|
|
6758
|
-
class: "text-xl font-medium"
|
|
6759
|
-
},
|
|
6760
|
-
{
|
|
6761
|
-
level: 5,
|
|
6762
|
-
weight: "semibold",
|
|
6763
|
-
class: "text-xl font-semibold"
|
|
6764
|
-
},
|
|
6765
|
-
{
|
|
6766
|
-
level: 5,
|
|
6767
|
-
weight: "bold",
|
|
6768
|
-
class: "text-xl font-bold"
|
|
6769
|
-
},
|
|
6770
|
-
{
|
|
6771
|
-
level: 6,
|
|
6772
|
-
weight: "normal",
|
|
6773
|
-
class: "text-lg font-normal"
|
|
6774
|
-
},
|
|
6775
|
-
{
|
|
6776
|
-
level: 6,
|
|
6777
|
-
weight: "medium",
|
|
6778
|
-
class: "text-lg font-medium"
|
|
6779
|
-
},
|
|
6780
|
-
{
|
|
6781
|
-
level: 6,
|
|
6782
|
-
weight: "semibold",
|
|
6783
|
-
class: "text-lg font-semibold"
|
|
6784
|
-
},
|
|
6785
|
-
{
|
|
6786
|
-
level: 6,
|
|
6787
|
-
weight: "bold",
|
|
6788
|
-
class: "text-lg font-bold"
|
|
6789
|
-
}
|
|
6790
|
-
],
|
|
7558
|
+
compoundVariants: generateWeightVariants(),
|
|
6791
7559
|
defaultVariants: {
|
|
6792
7560
|
level: 1,
|
|
6793
7561
|
muted: false
|
|
@@ -6811,8 +7579,8 @@ Heading.displayName = "Heading";
|
|
|
6811
7579
|
var leadVariants = classVarianceAuthority.cva("font-sans text-foreground", {
|
|
6812
7580
|
variants: {
|
|
6813
7581
|
size: {
|
|
6814
|
-
lg:
|
|
6815
|
-
xl:
|
|
7582
|
+
lg: `${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`,
|
|
7583
|
+
xl: `${TEXT_TOKENS.fontSize.xl} ${TEXT_TOKENS.lineHeight.normal} ${TEXT_TOKENS.letterSpacing.normal}`
|
|
6816
7584
|
},
|
|
6817
7585
|
muted: {
|
|
6818
7586
|
true: "text-muted-foreground",
|
|
@@ -6949,7 +7717,7 @@ function getSpacingPx(token) {
|
|
|
6949
7717
|
return 4;
|
|
6950
7718
|
}
|
|
6951
7719
|
var selectTriggerVariants = classVarianceAuthority.cva(
|
|
6952
|
-
`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`,
|
|
7720
|
+
`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`,
|
|
6953
7721
|
{
|
|
6954
7722
|
variants: {
|
|
6955
7723
|
size: {
|
|
@@ -7408,7 +8176,7 @@ var ModalClose = React49__namespace.forwardRef(
|
|
|
7408
8176
|
MODAL_TOKENS.close.radius,
|
|
7409
8177
|
MODAL_TOKENS.close.opacity.default,
|
|
7410
8178
|
MODAL_TOKENS.close.opacity.hover,
|
|
7411
|
-
"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",
|
|
8179
|
+
"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",
|
|
7412
8180
|
className
|
|
7413
8181
|
),
|
|
7414
8182
|
...props,
|
|
@@ -8000,8 +8768,10 @@ var Input = React49__namespace.forwardRef(
|
|
|
8000
8768
|
}
|
|
8001
8769
|
return void 0;
|
|
8002
8770
|
});
|
|
8771
|
+
const baseVariant = getBaseValue(variant);
|
|
8772
|
+
const baseSize = getBaseValue(size3);
|
|
8003
8773
|
const inputClasses = cn(
|
|
8004
|
-
inputVariants({ variant, size:
|
|
8774
|
+
inputVariants({ variant: baseVariant, size: baseSize, state, fullWidth }),
|
|
8005
8775
|
// Add padding for icons if present
|
|
8006
8776
|
iconLeft && INPUT_TOKENS.icon.paddingLeft,
|
|
8007
8777
|
iconRight && INPUT_TOKENS.icon.paddingRight,
|
|
@@ -8339,31 +9109,31 @@ var Radio = React49__namespace.forwardRef(
|
|
|
8339
9109
|
);
|
|
8340
9110
|
Radio.displayName = "Radio";
|
|
8341
9111
|
var textareaVariants = classVarianceAuthority.cva(
|
|
8342
|
-
`flex min-h-[80px] ${
|
|
9112
|
+
`flex min-h-[80px] ${TEXTAREA_TOKENS.shadow} ${MOTION_TOKENS.transition.colors} disabled:cursor-not-allowed focus-visible:outline-none resize-y`,
|
|
8343
9113
|
{
|
|
8344
9114
|
variants: {
|
|
8345
9115
|
variant: {
|
|
8346
|
-
primary: `${
|
|
8347
|
-
secondary: `${
|
|
8348
|
-
outline: `${
|
|
8349
|
-
ghost: `${
|
|
8350
|
-
destructive: `${
|
|
9116
|
+
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}`,
|
|
9117
|
+
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}`,
|
|
9118
|
+
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}`,
|
|
9119
|
+
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}`,
|
|
9120
|
+
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}`
|
|
8351
9121
|
},
|
|
8352
9122
|
size: {
|
|
8353
|
-
xs: `${
|
|
8354
|
-
sm: `${
|
|
8355
|
-
md: `${
|
|
8356
|
-
lg: `${
|
|
8357
|
-
xl: `${
|
|
9123
|
+
xs: `${TEXTAREA_TOKENS.size.xs.padding.horizontal} ${TEXTAREA_TOKENS.size.xs.padding.vertical} ${TEXTAREA_TOKENS.size.xs.radius} ${TEXTAREA_TOKENS.size.xs.fontSize}`,
|
|
9124
|
+
sm: `${TEXTAREA_TOKENS.size.sm.padding.horizontal} ${TEXTAREA_TOKENS.size.sm.padding.vertical} ${TEXTAREA_TOKENS.size.sm.radius} ${TEXTAREA_TOKENS.size.sm.fontSize}`,
|
|
9125
|
+
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}`,
|
|
9126
|
+
lg: `${TEXTAREA_TOKENS.size.lg.padding.horizontal} ${TEXTAREA_TOKENS.size.lg.padding.vertical} ${TEXTAREA_TOKENS.size.lg.radius} ${TEXTAREA_TOKENS.size.lg.fontSize}`,
|
|
9127
|
+
xl: `${TEXTAREA_TOKENS.size.xl.padding.horizontal} ${TEXTAREA_TOKENS.size.xl.padding.vertical} ${TEXTAREA_TOKENS.size.xl.radius} ${TEXTAREA_TOKENS.size.xl.fontSize}`
|
|
8358
9128
|
},
|
|
8359
9129
|
state: {
|
|
8360
|
-
default: `${
|
|
8361
|
-
error: `${
|
|
8362
|
-
success: `${
|
|
8363
|
-
disabled: `${
|
|
9130
|
+
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}`,
|
|
9131
|
+
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}`,
|
|
9132
|
+
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}`,
|
|
9133
|
+
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}`
|
|
8364
9134
|
},
|
|
8365
9135
|
fullWidth: {
|
|
8366
|
-
true:
|
|
9136
|
+
true: TEXTAREA_TOKENS.width.full,
|
|
8367
9137
|
false: ""
|
|
8368
9138
|
}
|
|
8369
9139
|
},
|
|
@@ -8407,7 +9177,7 @@ var Textarea = React49__namespace.forwardRef(
|
|
|
8407
9177
|
const currentLength = typeof currentValue === "string" ? currentValue.length : 0;
|
|
8408
9178
|
const shouldShowCounter = showCharacterCount && maxLength !== void 0;
|
|
8409
9179
|
if (shouldShowCounter) {
|
|
8410
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", fullWidth !== false &&
|
|
9180
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", fullWidth !== false && TEXTAREA_TOKENS.width.full), children: [
|
|
8411
9181
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8412
9182
|
"textarea",
|
|
8413
9183
|
{
|
|
@@ -8427,11 +9197,11 @@ var Textarea = React49__namespace.forwardRef(
|
|
|
8427
9197
|
{
|
|
8428
9198
|
className: cn(
|
|
8429
9199
|
"absolute",
|
|
8430
|
-
|
|
8431
|
-
|
|
9200
|
+
TEXTAREA_TOKENS.message.position.bottom,
|
|
9201
|
+
TEXTAREA_TOKENS.message.position.right,
|
|
8432
9202
|
TEXT_TOKENS.fontSize.xs,
|
|
8433
|
-
|
|
8434
|
-
currentLength > maxLength &&
|
|
9203
|
+
TEXTAREA_TOKENS.message.color.default,
|
|
9204
|
+
currentLength > maxLength && TEXTAREA_TOKENS.message.color.error
|
|
8435
9205
|
),
|
|
8436
9206
|
children: [
|
|
8437
9207
|
currentLength,
|
|
@@ -8466,45 +9236,6 @@ function shadowToClass(value) {
|
|
|
8466
9236
|
if (!value || value === "none") return void 0;
|
|
8467
9237
|
return `shadow-${value}`;
|
|
8468
9238
|
}
|
|
8469
|
-
function displayToClass(value) {
|
|
8470
|
-
if (!value) return void 0;
|
|
8471
|
-
if (value === "inline") return "inline";
|
|
8472
|
-
if (value === "inline-block") return "inline-block";
|
|
8473
|
-
if (value === "flex") return "flex";
|
|
8474
|
-
if (value === "inline-flex") return "inline-flex";
|
|
8475
|
-
if (value === "grid") return "grid";
|
|
8476
|
-
if (value === "inline-grid") return "inline-grid";
|
|
8477
|
-
if (value === "block") return "block";
|
|
8478
|
-
if (value === "none") return "hidden";
|
|
8479
|
-
return void 0;
|
|
8480
|
-
}
|
|
8481
|
-
function flexDirectionToClass(value) {
|
|
8482
|
-
if (!value) return void 0;
|
|
8483
|
-
if (value === "row") return "flex-row";
|
|
8484
|
-
if (value === "column") return "flex-col";
|
|
8485
|
-
if (value === "row-reverse") return "flex-row-reverse";
|
|
8486
|
-
if (value === "column-reverse") return "flex-col-reverse";
|
|
8487
|
-
return void 0;
|
|
8488
|
-
}
|
|
8489
|
-
function alignToClass(value) {
|
|
8490
|
-
if (!value) return void 0;
|
|
8491
|
-
if (value === "start") return "items-start";
|
|
8492
|
-
if (value === "end") return "items-end";
|
|
8493
|
-
if (value === "center") return "items-center";
|
|
8494
|
-
if (value === "baseline") return "items-baseline";
|
|
8495
|
-
if (value === "stretch") return "items-stretch";
|
|
8496
|
-
return void 0;
|
|
8497
|
-
}
|
|
8498
|
-
function justifyToClass(value) {
|
|
8499
|
-
if (!value) return void 0;
|
|
8500
|
-
if (value === "start") return "justify-start";
|
|
8501
|
-
if (value === "end") return "justify-end";
|
|
8502
|
-
if (value === "center") return "justify-center";
|
|
8503
|
-
if (value === "between") return "justify-between";
|
|
8504
|
-
if (value === "around") return "justify-around";
|
|
8505
|
-
if (value === "evenly") return "justify-evenly";
|
|
8506
|
-
return void 0;
|
|
8507
|
-
}
|
|
8508
9239
|
var Box = React49__namespace.forwardRef(
|
|
8509
9240
|
({
|
|
8510
9241
|
as: Component = "div",
|
|
@@ -8522,14 +9253,9 @@ var Box = React49__namespace.forwardRef(
|
|
|
8522
9253
|
mr,
|
|
8523
9254
|
mb,
|
|
8524
9255
|
ml,
|
|
8525
|
-
display,
|
|
8526
|
-
flexDirection,
|
|
8527
9256
|
radius,
|
|
8528
9257
|
shadow,
|
|
8529
9258
|
bg,
|
|
8530
|
-
gap,
|
|
8531
|
-
align,
|
|
8532
|
-
justify,
|
|
8533
9259
|
className,
|
|
8534
9260
|
style,
|
|
8535
9261
|
...props
|
|
@@ -8550,7 +9276,6 @@ var Box = React49__namespace.forwardRef(
|
|
|
8550
9276
|
const mlValue = getBaseValue2(ml);
|
|
8551
9277
|
const radiusValue = getBaseValue2(radius);
|
|
8552
9278
|
const bgValue = getBaseValue2(bg);
|
|
8553
|
-
const gapValue = getBaseValue2(gap);
|
|
8554
9279
|
const inlineStyles = {
|
|
8555
9280
|
...pValue !== void 0 && { padding: getSpacingCSSVar(String(pValue)) },
|
|
8556
9281
|
...!p && pxValue !== void 0 && {
|
|
@@ -8580,18 +9305,9 @@ var Box = React49__namespace.forwardRef(
|
|
|
8580
9305
|
...!m && !mx && mlValue !== void 0 && { marginLeft: getSpacingCSSVar(String(mlValue)) },
|
|
8581
9306
|
...radiusValue !== void 0 && { borderRadius: getRadiusCSSVar(radiusValue) },
|
|
8582
9307
|
...bgValue !== void 0 && { backgroundColor: getColorCSSVar(bgValue) },
|
|
8583
|
-
...gapValue !== void 0 && { gap: getSpacingCSSVar(String(gapValue)) },
|
|
8584
9308
|
...style
|
|
8585
9309
|
};
|
|
8586
9310
|
const classes = cn(
|
|
8587
|
-
// Display
|
|
8588
|
-
displayToClass(display),
|
|
8589
|
-
// Flex direction
|
|
8590
|
-
flexDirectionToClass(flexDirection),
|
|
8591
|
-
// Align
|
|
8592
|
-
alignToClass(align),
|
|
8593
|
-
// Justify
|
|
8594
|
-
justifyToClass(justify),
|
|
8595
9311
|
// Shadow
|
|
8596
9312
|
shadowToClass(shadow),
|
|
8597
9313
|
className
|
|
@@ -8602,18 +9318,46 @@ var Box = React49__namespace.forwardRef(
|
|
|
8602
9318
|
}
|
|
8603
9319
|
);
|
|
8604
9320
|
Box.displayName = "Box";
|
|
9321
|
+
function alignToClass(value) {
|
|
9322
|
+
if (!value) return void 0;
|
|
9323
|
+
if (value === "start") return "items-start";
|
|
9324
|
+
if (value === "end") return "items-end";
|
|
9325
|
+
if (value === "center") return "items-center";
|
|
9326
|
+
if (value === "baseline") return "items-baseline";
|
|
9327
|
+
if (value === "stretch") return "items-stretch";
|
|
9328
|
+
return void 0;
|
|
9329
|
+
}
|
|
9330
|
+
function justifyToClass(value) {
|
|
9331
|
+
if (!value) return void 0;
|
|
9332
|
+
if (value === "start") return "justify-start";
|
|
9333
|
+
if (value === "end") return "justify-end";
|
|
9334
|
+
if (value === "center") return "justify-center";
|
|
9335
|
+
if (value === "between") return "justify-between";
|
|
9336
|
+
if (value === "around") return "justify-around";
|
|
9337
|
+
if (value === "evenly") return "justify-evenly";
|
|
9338
|
+
return void 0;
|
|
9339
|
+
}
|
|
8605
9340
|
var Stack = React49__namespace.forwardRef(
|
|
8606
|
-
({ direction = "vertical", spacing: spacing2, gap, align, justify, ...props }, ref) => {
|
|
9341
|
+
({ direction = "vertical", spacing: spacing2, gap, align, justify, className, style, ...props }, ref) => {
|
|
8607
9342
|
const gapValue = spacing2 ?? gap;
|
|
9343
|
+
const gapBaseValue = getBaseValue(gapValue);
|
|
9344
|
+
const flexClasses = cn(
|
|
9345
|
+
"flex",
|
|
9346
|
+
direction === "horizontal" ? "flex-row" : "flex-col",
|
|
9347
|
+
alignToClass(align),
|
|
9348
|
+
justifyToClass(justify),
|
|
9349
|
+
className
|
|
9350
|
+
);
|
|
9351
|
+
const inlineStyles = {
|
|
9352
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
9353
|
+
...style
|
|
9354
|
+
};
|
|
8608
9355
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8609
9356
|
Box,
|
|
8610
9357
|
{
|
|
8611
9358
|
ref,
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
gap: gapValue,
|
|
8615
|
-
align,
|
|
8616
|
-
justify,
|
|
9359
|
+
className: flexClasses,
|
|
9360
|
+
style: Object.keys(inlineStyles).length > 0 ? inlineStyles : void 0,
|
|
8617
9361
|
...props
|
|
8618
9362
|
}
|
|
8619
9363
|
);
|
|
@@ -8724,7 +9468,7 @@ function getFlexBaseValue(value) {
|
|
|
8724
9468
|
}
|
|
8725
9469
|
return value;
|
|
8726
9470
|
}
|
|
8727
|
-
function
|
|
9471
|
+
function flexDirectionToClass(value) {
|
|
8728
9472
|
if (!value) return void 0;
|
|
8729
9473
|
if (value === "row") return "flex-row";
|
|
8730
9474
|
if (value === "column") return "flex-col";
|
|
@@ -8777,8 +9521,10 @@ var Flex = React49__namespace.forwardRef(
|
|
|
8777
9521
|
const alignValue = getFlexBaseValue(align);
|
|
8778
9522
|
const justifyValue = getFlexBaseValue(justify);
|
|
8779
9523
|
const basisValue = getFlexBaseValue(basis);
|
|
9524
|
+
const gapBaseValue = getBaseValue(gap);
|
|
8780
9525
|
const flexClasses = cn(
|
|
8781
|
-
|
|
9526
|
+
"flex",
|
|
9527
|
+
flexDirectionToClass(directionValue),
|
|
8782
9528
|
flexWrapToClass(wrapValue),
|
|
8783
9529
|
growToClass(grow),
|
|
8784
9530
|
shrinkToClass(shrink),
|
|
@@ -8797,15 +9543,13 @@ var Flex = React49__namespace.forwardRef(
|
|
|
8797
9543
|
})();
|
|
8798
9544
|
const flexStyle = {
|
|
8799
9545
|
...flexBasisCSS ? { flexBasis: flexBasisCSS } : {},
|
|
9546
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
8800
9547
|
...style
|
|
8801
9548
|
};
|
|
8802
9549
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8803
9550
|
Box,
|
|
8804
9551
|
{
|
|
8805
9552
|
ref,
|
|
8806
|
-
display: "flex",
|
|
8807
|
-
flexDirection: directionValue,
|
|
8808
|
-
gap,
|
|
8809
9553
|
className: flexClasses,
|
|
8810
9554
|
style: Object.keys(flexStyle).length > 0 ? flexStyle : void 0,
|
|
8811
9555
|
...props
|
|
@@ -8872,7 +9616,22 @@ function justifyToClass3(value) {
|
|
|
8872
9616
|
return void 0;
|
|
8873
9617
|
}
|
|
8874
9618
|
var Grid = React49__namespace.forwardRef(
|
|
8875
|
-
({
|
|
9619
|
+
({
|
|
9620
|
+
cols,
|
|
9621
|
+
sm,
|
|
9622
|
+
md,
|
|
9623
|
+
lg,
|
|
9624
|
+
xl,
|
|
9625
|
+
"2xl": xl2,
|
|
9626
|
+
rows,
|
|
9627
|
+
gap,
|
|
9628
|
+
flow,
|
|
9629
|
+
align,
|
|
9630
|
+
justify,
|
|
9631
|
+
className,
|
|
9632
|
+
style,
|
|
9633
|
+
...props
|
|
9634
|
+
}, ref) => {
|
|
8876
9635
|
let colsValue = cols;
|
|
8877
9636
|
if (sm || md || lg || xl || xl2) {
|
|
8878
9637
|
if (cols !== void 0 && typeof cols !== "object") {
|
|
@@ -8941,23 +9700,25 @@ var Grid = React49__namespace.forwardRef(
|
|
|
8941
9700
|
justifyToClass3(justifyValue),
|
|
8942
9701
|
className
|
|
8943
9702
|
);
|
|
8944
|
-
|
|
9703
|
+
const gapBaseValue = gap ? getBaseValue(gap) : void 0;
|
|
9704
|
+
const gridStyle = {
|
|
9705
|
+
...gapBaseValue !== void 0 && { gap: getSpacingCSSVar(String(gapBaseValue)) },
|
|
9706
|
+
...style
|
|
9707
|
+
};
|
|
9708
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9709
|
+
Box,
|
|
9710
|
+
{
|
|
9711
|
+
ref,
|
|
9712
|
+
className: cn("grid", gridClasses),
|
|
9713
|
+
style: Object.keys(gridStyle).length > 0 ? gridStyle : void 0,
|
|
9714
|
+
...props
|
|
9715
|
+
}
|
|
9716
|
+
);
|
|
8945
9717
|
}
|
|
8946
9718
|
);
|
|
8947
9719
|
Grid.displayName = "Grid";
|
|
8948
|
-
var Row = React49__namespace.forwardRef((
|
|
8949
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8950
|
-
Box,
|
|
8951
|
-
{
|
|
8952
|
-
ref,
|
|
8953
|
-
display: "flex",
|
|
8954
|
-
flexDirection: "row",
|
|
8955
|
-
gap,
|
|
8956
|
-
align,
|
|
8957
|
-
justify,
|
|
8958
|
-
...props
|
|
8959
|
-
}
|
|
8960
|
-
);
|
|
9720
|
+
var Row = React49__namespace.forwardRef((props, ref) => {
|
|
9721
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Stack, { ref, direction: "horizontal", ...props });
|
|
8961
9722
|
});
|
|
8962
9723
|
Row.displayName = "Row";
|
|
8963
9724
|
var surfaceVariants = classVarianceAuthority.cva("", {
|
|
@@ -8992,7 +9753,7 @@ var labelVariants = classVarianceAuthority.cva(
|
|
|
8992
9753
|
var Label2 = React49__namespace.forwardRef(
|
|
8993
9754
|
({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(LabelPrimitive__namespace.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
8994
9755
|
children,
|
|
8995
|
-
required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
|
|
9756
|
+
required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(FORM_TOKENS.label.requiredMark, "ml-xs"), children: "*" })
|
|
8996
9757
|
] })
|
|
8997
9758
|
);
|
|
8998
9759
|
Label2.displayName = LabelPrimitive__namespace.Root.displayName;
|
|
@@ -9339,7 +10100,7 @@ var ToastRoot = React49__namespace.forwardRef(
|
|
|
9339
10100
|
altText: toast.action.label,
|
|
9340
10101
|
onClick: toast.action.onClick,
|
|
9341
10102
|
className: cn(
|
|
9342
|
-
"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",
|
|
10103
|
+
"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",
|
|
9343
10104
|
TOAST_TOKENS.action.height,
|
|
9344
10105
|
TOAST_TOKENS.action.padding,
|
|
9345
10106
|
TOAST_TOKENS.action.fontSize
|
|
@@ -9397,7 +10158,7 @@ var ToastAction = React49__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
9397
10158
|
{
|
|
9398
10159
|
ref,
|
|
9399
10160
|
className: cn(
|
|
9400
|
-
"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",
|
|
10161
|
+
"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",
|
|
9401
10162
|
TOAST_TOKENS.action.height,
|
|
9402
10163
|
TOAST_TOKENS.action.padding,
|
|
9403
10164
|
TOAST_TOKENS.action.fontSize,
|
|
@@ -9837,7 +10598,7 @@ var NotificationCenterItem = React49__namespace.forwardRef(
|
|
|
9837
10598
|
size: "icon",
|
|
9838
10599
|
onClick: handleDismiss,
|
|
9839
10600
|
"aria-label": "Dismiss notification",
|
|
9840
|
-
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",
|
|
10601
|
+
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",
|
|
9841
10602
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
9842
10603
|
}
|
|
9843
10604
|
)
|
|
@@ -10398,7 +11159,7 @@ var PopoverArrow = React49__namespace.forwardRef(
|
|
|
10398
11159
|
);
|
|
10399
11160
|
PopoverArrow.displayName = "PopoverArrow";
|
|
10400
11161
|
|
|
10401
|
-
// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
|
|
11162
|
+
// node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
|
|
10402
11163
|
var min = Math.min;
|
|
10403
11164
|
var max = Math.max;
|
|
10404
11165
|
var round = Math.round;
|
|
@@ -10529,7 +11290,7 @@ function rectToClientRect(rect) {
|
|
|
10529
11290
|
};
|
|
10530
11291
|
}
|
|
10531
11292
|
|
|
10532
|
-
// node_modules/@floating-ui/core/dist/floating-ui.core.mjs
|
|
11293
|
+
// node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs
|
|
10533
11294
|
function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
10534
11295
|
let {
|
|
10535
11296
|
reference,
|
|
@@ -10974,7 +11735,7 @@ var shift = function(options) {
|
|
|
10974
11735
|
};
|
|
10975
11736
|
};
|
|
10976
11737
|
|
|
10977
|
-
// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
|
|
11738
|
+
// node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
|
|
10978
11739
|
function hasWindow() {
|
|
10979
11740
|
return typeof window !== "undefined";
|
|
10980
11741
|
}
|
|
@@ -11127,7 +11888,7 @@ function getFrameElement(win) {
|
|
|
11127
11888
|
return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
|
|
11128
11889
|
}
|
|
11129
11890
|
|
|
11130
|
-
// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
|
|
11891
|
+
// node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
|
|
11131
11892
|
function getCssDimensions(element) {
|
|
11132
11893
|
const css = getComputedStyle2(element);
|
|
11133
11894
|
let width = parseFloat(css.width) || 0;
|
|
@@ -11981,7 +12742,7 @@ function usePositioning({
|
|
|
11981
12742
|
return offsetValue;
|
|
11982
12743
|
}
|
|
11983
12744
|
const baseOffset = getBaseValue(offsetValue);
|
|
11984
|
-
return baseOffset ? getSpacingPx(baseOffset) :
|
|
12745
|
+
return baseOffset ? getSpacingPx(baseOffset) : getSpacingPx(1);
|
|
11985
12746
|
}, [offsetValue]);
|
|
11986
12747
|
React49__namespace.useEffect(() => {
|
|
11987
12748
|
setMounted(true);
|
|
@@ -11992,7 +12753,7 @@ function usePositioning({
|
|
|
11992
12753
|
middlewareArray.push(flip3());
|
|
11993
12754
|
}
|
|
11994
12755
|
if (enableShift) {
|
|
11995
|
-
middlewareArray.push(shift3({ padding:
|
|
12756
|
+
middlewareArray.push(shift3({ padding: getSpacingPx(2) }));
|
|
11996
12757
|
}
|
|
11997
12758
|
return middlewareArray;
|
|
11998
12759
|
}, [offsetPx, enableFlip, enableShift]);
|
|
@@ -12351,7 +13112,7 @@ var DropdownMenuItem = React49__namespace.forwardRef(
|
|
|
12351
13112
|
MENU_TOKENS.item.padding.md,
|
|
12352
13113
|
MENU_TOKENS.item.radius.md,
|
|
12353
13114
|
inset && "pl-8",
|
|
12354
|
-
!disabled && "focus:bg-accent focus:text-accent-foreground",
|
|
13115
|
+
!disabled && "focus-visible:bg-accent focus-visible:text-accent-foreground",
|
|
12355
13116
|
selected && "bg-accent/50",
|
|
12356
13117
|
disabled && "pointer-events-none opacity-50",
|
|
12357
13118
|
className
|
|
@@ -12834,9 +13595,9 @@ var CONTEXT_MENU_TOKENS = {
|
|
|
12834
13595
|
radius: "rounded-sm",
|
|
12835
13596
|
// 4px (0.25rem)
|
|
12836
13597
|
focus: {
|
|
12837
|
-
background: "focus:bg-[hsl(var(--accent))]",
|
|
13598
|
+
background: "focus-visible:bg-[hsl(var(--accent))]",
|
|
12838
13599
|
// Focus background using CSS var
|
|
12839
|
-
text: "focus:text-[hsl(var(--accent-foreground))]"
|
|
13600
|
+
text: "focus-visible:text-[hsl(var(--accent-foreground))]"
|
|
12840
13601
|
// Focus text using CSS var
|
|
12841
13602
|
},
|
|
12842
13603
|
disabled: {
|
|
@@ -13224,7 +13985,7 @@ var Skeleton = React49__namespace.forwardRef(
|
|
|
13224
13985
|
Skeleton.displayName = "Skeleton";
|
|
13225
13986
|
var EmptyStateAction = React49__namespace.forwardRef(
|
|
13226
13987
|
({ className, children, ...props }, ref) => {
|
|
13227
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn(
|
|
13988
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn(EMPTY_STATE_TOKENS.spacing.action, className), ...props, children });
|
|
13228
13989
|
}
|
|
13229
13990
|
);
|
|
13230
13991
|
EmptyStateAction.displayName = "EmptyStateAction";
|
|
@@ -13235,9 +13996,10 @@ var EmptyStateDescription = React49__namespace.forwardRef(
|
|
|
13235
13996
|
{
|
|
13236
13997
|
ref,
|
|
13237
13998
|
className: cn(
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13999
|
+
EMPTY_STATE_TOKENS.typography.description.fontSize,
|
|
14000
|
+
EMPTY_STATE_TOKENS.typography.description.fontWeight,
|
|
14001
|
+
EMPTY_STATE_TOKENS.typography.description.color,
|
|
14002
|
+
EMPTY_STATE_TOKENS.typography.description.maxWidth,
|
|
13241
14003
|
className
|
|
13242
14004
|
),
|
|
13243
14005
|
...props,
|
|
@@ -13249,16 +14011,12 @@ var EmptyStateDescription = React49__namespace.forwardRef(
|
|
|
13249
14011
|
EmptyStateDescription.displayName = "EmptyStateDescription";
|
|
13250
14012
|
var EmptyStateIcon = React49__namespace.forwardRef(
|
|
13251
14013
|
({ children, size: size3 = "md", className, ...props }, ref) => {
|
|
13252
|
-
const iconSizeClass =
|
|
14014
|
+
const iconSizeClass = EMPTY_STATE_TOKENS.icon.size[size3];
|
|
13253
14015
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13254
14016
|
"div",
|
|
13255
14017
|
{
|
|
13256
14018
|
ref,
|
|
13257
|
-
className: cn(
|
|
13258
|
-
"flex items-center justify-center text-muted-foreground",
|
|
13259
|
-
iconSizeClass,
|
|
13260
|
-
className
|
|
13261
|
-
),
|
|
14019
|
+
className: cn(EMPTY_STATE_TOKENS.icon.container, iconSizeClass, className),
|
|
13262
14020
|
...props,
|
|
13263
14021
|
children
|
|
13264
14022
|
}
|
|
@@ -13273,9 +14031,9 @@ var EmptyStateTitle = React49__namespace.forwardRef(
|
|
|
13273
14031
|
{
|
|
13274
14032
|
ref,
|
|
13275
14033
|
className: cn(
|
|
13276
|
-
|
|
13277
|
-
|
|
13278
|
-
|
|
14034
|
+
EMPTY_STATE_TOKENS.typography.title.fontSize,
|
|
14035
|
+
EMPTY_STATE_TOKENS.typography.title.fontWeight,
|
|
14036
|
+
EMPTY_STATE_TOKENS.typography.title.color,
|
|
13279
14037
|
className
|
|
13280
14038
|
),
|
|
13281
14039
|
...props,
|
|
@@ -13296,7 +14054,7 @@ var EmptyState = React49__namespace.forwardRef(
|
|
|
13296
14054
|
variant: "flat",
|
|
13297
14055
|
radius: "xl",
|
|
13298
14056
|
p: "lg",
|
|
13299
|
-
className: cn(
|
|
14057
|
+
className: cn(EMPTY_STATE_TOKENS.alignment.center, className),
|
|
13300
14058
|
id: emptyStateId,
|
|
13301
14059
|
...props,
|
|
13302
14060
|
children: /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "md", align: "center", justify: "center", children })
|
|
@@ -13313,14 +14071,16 @@ var DataListItem = React49__namespace.forwardRef(
|
|
|
13313
14071
|
({ padding = "md", className, children, ...props }, ref) => {
|
|
13314
14072
|
const paddingValue = getBaseValue(padding);
|
|
13315
14073
|
const paddingKey = paddingValue && ["sm", "md", "lg"].includes(String(paddingValue)) ? String(paddingValue) : "md";
|
|
13316
|
-
const paddingClass =
|
|
14074
|
+
const paddingClass = DATA_LIST_TOKENS.rowPadding[paddingKey];
|
|
13317
14075
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13318
14076
|
"div",
|
|
13319
14077
|
{
|
|
13320
14078
|
ref,
|
|
13321
14079
|
className: cn(
|
|
13322
14080
|
paddingClass,
|
|
13323
|
-
|
|
14081
|
+
DATA_LIST_TOKENS.item.layout.mobile,
|
|
14082
|
+
DATA_LIST_TOKENS.item.layout.desktop,
|
|
14083
|
+
DATA_LIST_TOKENS.item.border,
|
|
13324
14084
|
className
|
|
13325
14085
|
),
|
|
13326
14086
|
...props,
|
|
@@ -13337,9 +14097,9 @@ var DataListLabel = React49__namespace.forwardRef(
|
|
|
13337
14097
|
{
|
|
13338
14098
|
ref,
|
|
13339
14099
|
className: cn(
|
|
13340
|
-
|
|
13341
|
-
|
|
13342
|
-
|
|
14100
|
+
DATA_LIST_TOKENS.label.mobile,
|
|
14101
|
+
DATA_LIST_TOKENS.label.desktop,
|
|
14102
|
+
DATA_LIST_TOKENS.labelWidth.md,
|
|
13343
14103
|
className
|
|
13344
14104
|
),
|
|
13345
14105
|
...props,
|
|
@@ -13351,13 +14111,21 @@ var DataListLabel = React49__namespace.forwardRef(
|
|
|
13351
14111
|
DataListLabel.displayName = "DataListLabel";
|
|
13352
14112
|
var DataListValue = React49__namespace.forwardRef(
|
|
13353
14113
|
({ className, children, ...props }, ref) => {
|
|
13354
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14114
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14115
|
+
"dd",
|
|
14116
|
+
{
|
|
14117
|
+
ref,
|
|
14118
|
+
className: cn(DATA_LIST_TOKENS.value.flex, DATA_LIST_TOKENS.value.color, className),
|
|
14119
|
+
...props,
|
|
14120
|
+
children
|
|
14121
|
+
}
|
|
14122
|
+
);
|
|
13355
14123
|
}
|
|
13356
14124
|
);
|
|
13357
14125
|
DataListValue.displayName = "DataListValue";
|
|
13358
14126
|
var DataListRoot = React49__namespace.forwardRef(
|
|
13359
14127
|
({ labelWidth: _labelWidth = "md", className, children, ...props }, ref) => {
|
|
13360
|
-
return /* @__PURE__ */ jsxRuntime.jsx("dl", { ref, className: cn(
|
|
14128
|
+
return /* @__PURE__ */ jsxRuntime.jsx("dl", { ref, className: cn(DATA_LIST_TOKENS.spacing.gap, className), ...props, children });
|
|
13361
14129
|
}
|
|
13362
14130
|
);
|
|
13363
14131
|
DataListRoot.displayName = "DataListRoot";
|
|
@@ -13372,9 +14140,9 @@ var TableBody = React49__namespace.forwardRef(
|
|
|
13372
14140
|
TableBody.displayName = "TableBody";
|
|
13373
14141
|
var TableCell = React49__namespace.forwardRef(
|
|
13374
14142
|
({ align = "left", size: size3 = "md", className, ...props }, ref) => {
|
|
13375
|
-
const paddingClass =
|
|
13376
|
-
const typographyClass =
|
|
13377
|
-
const fontWeightClass =
|
|
14143
|
+
const paddingClass = TABLE_TOKENS.padding.cell[size3];
|
|
14144
|
+
const typographyClass = TABLE_TOKENS.typography.cell.fontSize;
|
|
14145
|
+
const fontWeightClass = TABLE_TOKENS.typography.cell.fontWeight;
|
|
13378
14146
|
const alignmentClasses = {
|
|
13379
14147
|
left: "text-left",
|
|
13380
14148
|
center: "text-center",
|
|
@@ -13400,7 +14168,7 @@ var TableCell = React49__namespace.forwardRef(
|
|
|
13400
14168
|
TableCell.displayName = "TableCell";
|
|
13401
14169
|
var TableEmpty = React49__namespace.forwardRef(
|
|
13402
14170
|
({ colSpan, message = "No data available", className, ...props }, ref) => {
|
|
13403
|
-
return /* @__PURE__ */ jsxRuntime.jsx("tr", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan, className:
|
|
14171
|
+
return /* @__PURE__ */ jsxRuntime.jsx("tr", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan, className: TABLE_TOKENS.empty.padding, children: /* @__PURE__ */ jsxRuntime.jsxs(EmptyState, { children: [
|
|
13404
14172
|
/* @__PURE__ */ jsxRuntime.jsx(EmptyStateIcon, { children: "\u{1F4ED}" }),
|
|
13405
14173
|
/* @__PURE__ */ jsxRuntime.jsx(EmptyStateTitle, { children: message })
|
|
13406
14174
|
] }) }) });
|
|
@@ -13415,13 +14183,22 @@ var TableExpandableContent = React49__namespace.forwardRef(
|
|
|
13415
14183
|
ref,
|
|
13416
14184
|
colSpan,
|
|
13417
14185
|
className: cn(
|
|
13418
|
-
|
|
13419
|
-
|
|
13420
|
-
expanded ?
|
|
14186
|
+
TABLE_TOKENS.expandable.container,
|
|
14187
|
+
TABLE_TOKENS.expandable.transition,
|
|
14188
|
+
expanded ? TABLE_TOKENS.expandable.expanded : TABLE_TOKENS.expandable.collapsed,
|
|
13421
14189
|
className
|
|
13422
14190
|
),
|
|
13423
14191
|
...props,
|
|
13424
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14192
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14193
|
+
"div",
|
|
14194
|
+
{
|
|
14195
|
+
className: cn(
|
|
14196
|
+
TABLE_TOKENS.expandable.padding,
|
|
14197
|
+
expanded ? TABLE_TOKENS.expandable.content.expanded : TABLE_TOKENS.expandable.content.collapsed
|
|
14198
|
+
),
|
|
14199
|
+
children
|
|
14200
|
+
}
|
|
14201
|
+
)
|
|
13425
14202
|
}
|
|
13426
14203
|
);
|
|
13427
14204
|
}
|
|
@@ -13434,9 +14211,9 @@ var TableSortIcon = React49__namespace.forwardRef(
|
|
|
13434
14211
|
{
|
|
13435
14212
|
ref,
|
|
13436
14213
|
className: cn(
|
|
13437
|
-
|
|
13438
|
-
direction === "desc" &&
|
|
13439
|
-
!direction &&
|
|
14214
|
+
TABLE_TOKENS.sortable.icon.base,
|
|
14215
|
+
direction === "desc" && TABLE_TOKENS.sortable.icon.rotated,
|
|
14216
|
+
!direction && TABLE_TOKENS.sortable.icon.inactive,
|
|
13440
14217
|
className
|
|
13441
14218
|
),
|
|
13442
14219
|
"aria-hidden": "true",
|
|
@@ -13483,9 +14260,9 @@ var TableHead = React49__namespace.forwardRef(
|
|
|
13483
14260
|
direction: nextDirection
|
|
13484
14261
|
});
|
|
13485
14262
|
}, [sortable, columnKey, sortState, setSortState]);
|
|
13486
|
-
const paddingClass =
|
|
13487
|
-
const typographyClass =
|
|
13488
|
-
const fontWeightClass =
|
|
14263
|
+
const paddingClass = TABLE_TOKENS.padding.header[size3];
|
|
14264
|
+
const typographyClass = TABLE_TOKENS.typography.header.fontSize;
|
|
14265
|
+
const fontWeightClass = TABLE_TOKENS.typography.header.fontWeight;
|
|
13489
14266
|
const alignmentClasses = {
|
|
13490
14267
|
left: "text-left",
|
|
13491
14268
|
center: "text-center",
|
|
@@ -13502,9 +14279,10 @@ var TableHead = React49__namespace.forwardRef(
|
|
|
13502
14279
|
typographyClass,
|
|
13503
14280
|
fontWeightClass,
|
|
13504
14281
|
alignmentClasses[align],
|
|
13505
|
-
|
|
13506
|
-
|
|
13507
|
-
sortable &&
|
|
14282
|
+
TABLE_TOKENS.colors.border,
|
|
14283
|
+
TABLE_TOKENS.border.bottom,
|
|
14284
|
+
sortable && TABLE_TOKENS.sortable.cursor,
|
|
14285
|
+
sortable && TABLE_TOKENS.sortable.hover,
|
|
13508
14286
|
className
|
|
13509
14287
|
),
|
|
13510
14288
|
onClick: handleSort,
|
|
@@ -13516,7 +14294,7 @@ var TableHead = React49__namespace.forwardRef(
|
|
|
13516
14294
|
})(),
|
|
13517
14295
|
role: "columnheader",
|
|
13518
14296
|
...props,
|
|
13519
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
14297
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(TABLE_TOKENS.sortable.container, TABLE_TOKENS.sortable.gap), children: [
|
|
13520
14298
|
children,
|
|
13521
14299
|
sortable && /* @__PURE__ */ jsxRuntime.jsx(TableSortIcon, { direction: sortDirection })
|
|
13522
14300
|
] })
|
|
@@ -13531,7 +14309,7 @@ var TableHeader = React49__namespace.forwardRef(
|
|
|
13531
14309
|
"thead",
|
|
13532
14310
|
{
|
|
13533
14311
|
ref,
|
|
13534
|
-
className: cn(sticky &&
|
|
14312
|
+
className: cn(sticky && TABLE_TOKENS.sticky.header, className),
|
|
13535
14313
|
role: "rowgroup",
|
|
13536
14314
|
...props
|
|
13537
14315
|
}
|
|
@@ -13541,7 +14319,7 @@ var TableHeader = React49__namespace.forwardRef(
|
|
|
13541
14319
|
TableHeader.displayName = "TableHeader";
|
|
13542
14320
|
var TableLoadingState = React49__namespace.forwardRef(
|
|
13543
14321
|
({ colSpan, rows = 5, className, ...props }, ref) => {
|
|
13544
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from({ length: rows }).map((_, index2) => /* @__PURE__ */ jsxRuntime.jsx("tr", { ref: index2 === 0 ? ref : void 0, className: cn(className), ...props, children: Array.from({ length: colSpan }).map((_2, cellIndex) => /* @__PURE__ */ jsxRuntime.jsx("td", { className:
|
|
14322
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from({ length: rows }).map((_, index2) => /* @__PURE__ */ jsxRuntime.jsx("tr", { ref: index2 === 0 ? ref : void 0, className: cn(className), ...props, children: Array.from({ length: colSpan }).map((_2, cellIndex) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: TABLE_TOKENS.loading.cellPadding, children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "text", className: TABLE_TOKENS.loading.skeletonWidth }) }, cellIndex)) }, index2)) });
|
|
13545
14323
|
}
|
|
13546
14324
|
);
|
|
13547
14325
|
TableLoadingState.displayName = "TableLoadingState";
|
|
@@ -13559,11 +14337,11 @@ var TableRow = React49__namespace.forwardRef(
|
|
|
13559
14337
|
{
|
|
13560
14338
|
ref,
|
|
13561
14339
|
className: cn(
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
selected &&
|
|
13566
|
-
expandable &&
|
|
14340
|
+
TABLE_TOKENS.colors.border,
|
|
14341
|
+
TABLE_TOKENS.border.bottom,
|
|
14342
|
+
TABLE_TOKENS.colors.rowHover,
|
|
14343
|
+
selected && TABLE_TOKENS.colors.rowSelected,
|
|
14344
|
+
expandable && TABLE_TOKENS.expandable.cursor,
|
|
13567
14345
|
className
|
|
13568
14346
|
),
|
|
13569
14347
|
"aria-expanded": expandable ? expanded : void 0,
|
|
@@ -13624,13 +14402,13 @@ function TableRoot({
|
|
|
13624
14402
|
}),
|
|
13625
14403
|
[sortState, expandedRows, toggleRow, expandable, renderExpandableContent]
|
|
13626
14404
|
);
|
|
13627
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
14405
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: TABLE_TOKENS.layout.overflow, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
13628
14406
|
"table",
|
|
13629
14407
|
{
|
|
13630
14408
|
className: cn(
|
|
13631
|
-
|
|
13632
|
-
|
|
13633
|
-
|
|
14409
|
+
TABLE_TOKENS.layout.table,
|
|
14410
|
+
TABLE_TOKENS.radius.default,
|
|
14411
|
+
TABLE_TOKENS.shadow.subtle,
|
|
13634
14412
|
className
|
|
13635
14413
|
),
|
|
13636
14414
|
role: "table",
|
|
@@ -15197,8 +15975,8 @@ var artistCardGenresVariants = classVarianceAuthority.cva(
|
|
|
15197
15975
|
}
|
|
15198
15976
|
);
|
|
15199
15977
|
var artistCardFooterBorderVariants = classVarianceAuthority.cva(
|
|
15200
|
-
// Base classes - border top, spacing
|
|
15201
|
-
|
|
15978
|
+
// Base classes - border top from ARTIST_TOKENS, spacing from DOMAIN_TOKENS
|
|
15979
|
+
ARTIST_TOKENS.footer.border.top,
|
|
15202
15980
|
{
|
|
15203
15981
|
variants: {
|
|
15204
15982
|
size: {
|
|
@@ -15258,37 +16036,49 @@ var ArtistCard = React49__namespace.forwardRef(
|
|
|
15258
16036
|
...props,
|
|
15259
16037
|
children: [
|
|
15260
16038
|
featured && popularBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: artistCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: artistCardBadgeSurfaceVariants({ size: size3, variant: "featured" }), children: popularBadgeText }) }),
|
|
15261
|
-
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15262
|
-
|
|
15263
|
-
|
|
15264
|
-
|
|
15265
|
-
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
|
|
15271
|
-
|
|
15272
|
-
|
|
15273
|
-
|
|
15274
|
-
|
|
15275
|
-
|
|
15276
|
-
|
|
15277
|
-
|
|
15278
|
-
|
|
15279
|
-
|
|
15280
|
-
|
|
16039
|
+
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16040
|
+
"div",
|
|
16041
|
+
{
|
|
16042
|
+
className: cn(
|
|
16043
|
+
ARTIST_TOKENS.image.container.layout,
|
|
16044
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16045
|
+
),
|
|
16046
|
+
children: [
|
|
16047
|
+
imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16048
|
+
"img",
|
|
16049
|
+
{
|
|
16050
|
+
src: imageUrl,
|
|
16051
|
+
alt: name,
|
|
16052
|
+
className: cn(
|
|
16053
|
+
ARTIST_TOKENS.image.sizing.full,
|
|
16054
|
+
artistCardImageTransformVariants({ size: size3 })
|
|
16055
|
+
)
|
|
16056
|
+
}
|
|
16057
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: ARTIST_TOKENS.image.placeholder.container, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16058
|
+
Icon2,
|
|
16059
|
+
{
|
|
16060
|
+
name: "info",
|
|
16061
|
+
size: "xl",
|
|
16062
|
+
color: "muted",
|
|
16063
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
16064
|
+
"aria-hidden": "true"
|
|
16065
|
+
}
|
|
16066
|
+
) }),
|
|
16067
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: artistCardImageOverlayVariants({ size: size3 }) })
|
|
16068
|
+
]
|
|
16069
|
+
}
|
|
16070
|
+
) }),
|
|
15281
16071
|
/* @__PURE__ */ jsxRuntime.jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
15282
16072
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15283
16073
|
Heading,
|
|
15284
16074
|
{
|
|
15285
16075
|
level: 3,
|
|
15286
16076
|
className: cn(
|
|
15287
|
-
|
|
16077
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15288
16078
|
TEXT_TOKENS.fontSize.lg,
|
|
15289
16079
|
TEXT_TOKENS.fontWeight.bold,
|
|
15290
16080
|
MOTION_TOKENS.transition.colors,
|
|
15291
|
-
|
|
16081
|
+
DOMAIN_TOKENS.text.hover.primary,
|
|
15292
16082
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15293
16083
|
),
|
|
15294
16084
|
children: href ? /* @__PURE__ */ jsxRuntime.jsx(Link, { href, variant: "ghost", children: name }) : name
|
|
@@ -15300,7 +16090,7 @@ var ArtistCard = React49__namespace.forwardRef(
|
|
|
15300
16090
|
size: "sm",
|
|
15301
16091
|
variant: "muted",
|
|
15302
16092
|
className: cn(
|
|
15303
|
-
|
|
16093
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15304
16094
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15305
16095
|
),
|
|
15306
16096
|
children: description
|
|
@@ -15362,16 +16152,16 @@ var ArtistCard = React49__namespace.forwardRef(
|
|
|
15362
16152
|
}
|
|
15363
16153
|
);
|
|
15364
16154
|
ArtistCard.displayName = "ArtistCard";
|
|
15365
|
-
var
|
|
16155
|
+
var categoryCardBadgeVariants = classVarianceAuthority.cva(
|
|
15366
16156
|
// Base classes - absolute positioning, z-index
|
|
15367
16157
|
"absolute z-10",
|
|
15368
16158
|
{
|
|
15369
16159
|
variants: {
|
|
15370
16160
|
size: {
|
|
15371
16161
|
default: DOMAIN_TOKENS.badges.position.default,
|
|
15372
|
-
// Default positioning -
|
|
16162
|
+
// Default positioning - references semanticSpacing.md (16px)
|
|
15373
16163
|
compact: DOMAIN_TOKENS.badges.position.compact
|
|
15374
|
-
// Compact positioning -
|
|
16164
|
+
// Compact positioning - references semanticSpacing.sm (8px)
|
|
15375
16165
|
}
|
|
15376
16166
|
},
|
|
15377
16167
|
defaultVariants: {
|
|
@@ -15379,9 +16169,10 @@ var eventCardBadgeVariants = classVarianceAuthority.cva(
|
|
|
15379
16169
|
}
|
|
15380
16170
|
}
|
|
15381
16171
|
);
|
|
15382
|
-
var
|
|
16172
|
+
var categoryCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
15383
16173
|
// Base classes - flex layout, items center, badge styling
|
|
15384
|
-
|
|
16174
|
+
// Uses DOMAIN_TOKENS for badge-specific styles, TEXT_TOKENS for typography
|
|
16175
|
+
`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}`,
|
|
15385
16176
|
{
|
|
15386
16177
|
variants: {
|
|
15387
16178
|
variant: {
|
|
@@ -15394,130 +16185,14 @@ var eventCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
|
15394
16185
|
}
|
|
15395
16186
|
}
|
|
15396
16187
|
);
|
|
15397
|
-
var
|
|
15398
|
-
// Base classes - flex column, metadata spacing
|
|
15399
|
-
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
15400
|
-
{
|
|
15401
|
-
variants: {
|
|
15402
|
-
size: {
|
|
15403
|
-
default: "",
|
|
15404
|
-
compact: ""
|
|
15405
|
-
}
|
|
15406
|
-
},
|
|
15407
|
-
defaultVariants: {
|
|
15408
|
-
size: "default"
|
|
15409
|
-
}
|
|
15410
|
-
}
|
|
15411
|
-
);
|
|
15412
|
-
var eventCardMetadataItemVariants = classVarianceAuthority.cva(
|
|
15413
|
-
// Base classes - flex items center, metadata spacing and text
|
|
15414
|
-
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
15415
|
-
{
|
|
15416
|
-
variants: {
|
|
15417
|
-
size: {
|
|
15418
|
-
default: "",
|
|
15419
|
-
compact: ""
|
|
15420
|
-
}
|
|
15421
|
-
},
|
|
15422
|
-
defaultVariants: {
|
|
15423
|
-
size: "default"
|
|
15424
|
-
}
|
|
15425
|
-
}
|
|
15426
|
-
);
|
|
15427
|
-
var eventCardMetadataIconVariants = classVarianceAuthority.cva(
|
|
15428
|
-
// Base classes - icon size and color
|
|
15429
|
-
`${ICON_TOKENS.sizes.md} ${ICON_TOKENS.colors.muted}`,
|
|
15430
|
-
{
|
|
15431
|
-
variants: {
|
|
15432
|
-
size: {
|
|
15433
|
-
default: "",
|
|
15434
|
-
compact: ""
|
|
15435
|
-
}
|
|
15436
|
-
},
|
|
15437
|
-
defaultVariants: {
|
|
15438
|
-
size: "default"
|
|
15439
|
-
}
|
|
15440
|
-
}
|
|
15441
|
-
);
|
|
15442
|
-
var eventCardFooterVariants = classVarianceAuthority.cva(
|
|
15443
|
-
// Base classes - border top, spacing
|
|
15444
|
-
"border-t border-border",
|
|
15445
|
-
{
|
|
15446
|
-
variants: {
|
|
15447
|
-
size: {
|
|
15448
|
-
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
15449
|
-
// Default padding top - references semanticSpacing.sm (8px) via Tailwind
|
|
15450
|
-
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
15451
|
-
// Compact padding top - references semanticSpacing.xs (4px) via Tailwind
|
|
15452
|
-
}
|
|
15453
|
-
},
|
|
15454
|
-
defaultVariants: {
|
|
15455
|
-
size: "default"
|
|
15456
|
-
}
|
|
15457
|
-
}
|
|
15458
|
-
);
|
|
15459
|
-
var eventCardTicketButtonVariants = classVarianceAuthority.cva(
|
|
15460
|
-
// Base classes - flex layout, badge gradient, motion
|
|
15461
|
-
`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`,
|
|
15462
|
-
{
|
|
15463
|
-
variants: {
|
|
15464
|
-
size: {
|
|
15465
|
-
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
15466
|
-
// Default padding - references semanticSpacing.md (16px) horizontal, xs (4px) vertical via Tailwind
|
|
15467
|
-
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
15468
|
-
// Compact padding - references semanticSpacing.sm (8px) horizontal, xs (4px) vertical via Tailwind
|
|
15469
|
-
}
|
|
15470
|
-
},
|
|
15471
|
-
defaultVariants: {
|
|
15472
|
-
size: "default"
|
|
15473
|
-
}
|
|
15474
|
-
}
|
|
15475
|
-
);
|
|
15476
|
-
var eventCardTicketButtonIconVariants = classVarianceAuthority.cva(
|
|
15477
|
-
// Base classes - icon size and spacing
|
|
15478
|
-
`${ICON_TOKENS.sizes.md} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
15479
|
-
{
|
|
15480
|
-
variants: {
|
|
15481
|
-
size: {
|
|
15482
|
-
default: "",
|
|
15483
|
-
compact: ""
|
|
15484
|
-
}
|
|
15485
|
-
},
|
|
15486
|
-
defaultVariants: {
|
|
15487
|
-
size: "default"
|
|
15488
|
-
}
|
|
15489
|
-
}
|
|
15490
|
-
);
|
|
15491
|
-
var eventCardPriceVariants = classVarianceAuthority.cva(
|
|
15492
|
-
// Base classes - price gradient text
|
|
15493
|
-
`bg-gradient-to-r from-accent-500 to-primary-600 bg-clip-text text-transparent`,
|
|
15494
|
-
{
|
|
15495
|
-
variants: {
|
|
15496
|
-
size: {
|
|
15497
|
-
default: TEXT_TOKENS.fontSize.lg,
|
|
15498
|
-
// Default size
|
|
15499
|
-
compact: TEXT_TOKENS.fontSize.md
|
|
15500
|
-
// Compact size
|
|
15501
|
-
}
|
|
15502
|
-
},
|
|
15503
|
-
defaultVariants: {
|
|
15504
|
-
size: "default"
|
|
15505
|
-
}
|
|
15506
|
-
}
|
|
15507
|
-
);
|
|
15508
|
-
var EventCard = React49__namespace.forwardRef(
|
|
16188
|
+
var CategoryCard = React49__namespace.forwardRef(
|
|
15509
16189
|
({
|
|
15510
16190
|
title,
|
|
15511
16191
|
description,
|
|
15512
|
-
date,
|
|
15513
|
-
venueName,
|
|
15514
|
-
price,
|
|
15515
16192
|
imageUrl,
|
|
15516
16193
|
href,
|
|
15517
|
-
ticketUrl,
|
|
15518
16194
|
featured = false,
|
|
15519
16195
|
showImage = true,
|
|
15520
|
-
getTicketsLabel,
|
|
15521
16196
|
featuredBadgeText,
|
|
15522
16197
|
size: size3 = "default",
|
|
15523
16198
|
variant,
|
|
@@ -15540,46 +16215,57 @@ var EventCard = React49__namespace.forwardRef(
|
|
|
15540
16215
|
className: cn("group relative", className),
|
|
15541
16216
|
...props,
|
|
15542
16217
|
children: [
|
|
15543
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
15544
|
-
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15545
|
-
|
|
15546
|
-
|
|
15547
|
-
|
|
15548
|
-
|
|
15549
|
-
|
|
15550
|
-
|
|
15551
|
-
|
|
15552
|
-
|
|
15553
|
-
|
|
15554
|
-
|
|
15555
|
-
|
|
15556
|
-
|
|
15557
|
-
|
|
15558
|
-
|
|
15559
|
-
|
|
15560
|
-
|
|
15561
|
-
|
|
15562
|
-
|
|
15563
|
-
"
|
|
15564
|
-
|
|
15565
|
-
|
|
15566
|
-
|
|
15567
|
-
|
|
15568
|
-
|
|
15569
|
-
|
|
15570
|
-
|
|
15571
|
-
|
|
16218
|
+
featured && featuredBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: categoryCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: categoryCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
16219
|
+
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16220
|
+
"div",
|
|
16221
|
+
{
|
|
16222
|
+
className: cn(
|
|
16223
|
+
"relative w-full overflow-hidden",
|
|
16224
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16225
|
+
),
|
|
16226
|
+
children: [
|
|
16227
|
+
imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16228
|
+
"img",
|
|
16229
|
+
{
|
|
16230
|
+
src: imageUrl,
|
|
16231
|
+
alt: title,
|
|
16232
|
+
className: cn(
|
|
16233
|
+
"h-full w-full object-cover",
|
|
16234
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
16235
|
+
DOMAIN_TOKENS.motion.hover.scale
|
|
16236
|
+
)
|
|
16237
|
+
}
|
|
16238
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16239
|
+
Icon2,
|
|
16240
|
+
{
|
|
16241
|
+
name: "info",
|
|
16242
|
+
className: cn(ICON_TOKENS.sizes["4xl"], ICON_TOKENS.colors.muted),
|
|
16243
|
+
"aria-hidden": "true"
|
|
16244
|
+
}
|
|
16245
|
+
) }),
|
|
16246
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16247
|
+
"div",
|
|
16248
|
+
{
|
|
16249
|
+
className: cn(
|
|
16250
|
+
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
16251
|
+
MOTION_TOKENS.transition.opacity,
|
|
16252
|
+
MOTION_TOKENS.duration.normal,
|
|
16253
|
+
DOMAIN_TOKENS.image.overlay.gradient
|
|
16254
|
+
)
|
|
16255
|
+
}
|
|
15572
16256
|
)
|
|
15573
|
-
|
|
15574
|
-
|
|
15575
|
-
|
|
16257
|
+
]
|
|
16258
|
+
}
|
|
16259
|
+
) }),
|
|
15576
16260
|
/* @__PURE__ */ jsxRuntime.jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
15577
16261
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15578
16262
|
Heading,
|
|
15579
16263
|
{
|
|
15580
16264
|
level: 3,
|
|
15581
16265
|
className: cn(
|
|
15582
|
-
|
|
16266
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
16267
|
+
MOTION_TOKENS.transition.colors,
|
|
16268
|
+
DOMAIN_TOKENS.text.hover.primary,
|
|
15583
16269
|
TEXT_TOKENS.fontSize.lg,
|
|
15584
16270
|
TEXT_TOKENS.fontWeight.bold,
|
|
15585
16271
|
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
@@ -15591,47 +16277,21 @@ var EventCard = React49__namespace.forwardRef(
|
|
|
15591
16277
|
Text,
|
|
15592
16278
|
{
|
|
15593
16279
|
size: "sm",
|
|
15594
|
-
|
|
16280
|
+
variant: "muted",
|
|
15595
16281
|
className: cn(
|
|
15596
|
-
|
|
16282
|
+
DOMAIN_TOKENS.text.lineClamp.two,
|
|
15597
16283
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
15598
16284
|
),
|
|
15599
16285
|
children: description
|
|
15600
16286
|
}
|
|
15601
|
-
)
|
|
15602
|
-
|
|
15603
|
-
date && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), children: [
|
|
15604
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconCalendar, { className: eventCardMetadataIconVariants({ size: size3 }) }),
|
|
15605
|
-
/* @__PURE__ */ jsxRuntime.jsx(Text, { size: "xs", muted: true, children: date })
|
|
15606
|
-
] }),
|
|
15607
|
-
venueName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), children: [
|
|
15608
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconLocation, { className: eventCardMetadataIconVariants({ size: size3 }) }),
|
|
15609
|
-
/* @__PURE__ */ jsxRuntime.jsx(Text, { size: "xs", muted: true, className: "line-clamp-1", children: venueName })
|
|
15610
|
-
] })
|
|
15611
|
-
] })
|
|
15612
|
-
] }),
|
|
15613
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full", eventCardFooterVariants({ size: size3 })), children: [
|
|
15614
|
-
ticketUrl && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15615
|
-
Link,
|
|
15616
|
-
{
|
|
15617
|
-
href: ticketUrl,
|
|
15618
|
-
className: cn("w-full", eventCardTicketButtonVariants({ size: size3 })),
|
|
15619
|
-
target: "_blank",
|
|
15620
|
-
rel: "noopener noreferrer",
|
|
15621
|
-
children: [
|
|
15622
|
-
getTicketsLabel,
|
|
15623
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconArrowRight, { className: eventCardTicketButtonIconVariants({ size: size3 }) })
|
|
15624
|
-
]
|
|
15625
|
-
}
|
|
15626
|
-
),
|
|
15627
|
-
!ticketUrl && price && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { size: size3 === "compact" ? "md" : "lg", weight: "bold", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventCardPriceVariants({ size: size3 }), children: price }) }) })
|
|
15628
|
-
] }) })
|
|
16287
|
+
)
|
|
16288
|
+
] })
|
|
15629
16289
|
]
|
|
15630
16290
|
}
|
|
15631
16291
|
) });
|
|
15632
16292
|
}
|
|
15633
16293
|
);
|
|
15634
|
-
|
|
16294
|
+
CategoryCard.displayName = "CategoryCard";
|
|
15635
16295
|
var promoCardBadgeVariants = classVarianceAuthority.cva(
|
|
15636
16296
|
// Base classes - absolute positioning, z-index
|
|
15637
16297
|
"absolute z-10",
|
|
@@ -15665,14 +16325,14 @@ var promoCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
|
15665
16325
|
}
|
|
15666
16326
|
);
|
|
15667
16327
|
var promoCardCtaButtonVariants = classVarianceAuthority.cva(
|
|
15668
|
-
// Base classes - flex layout, button tokens, motion
|
|
15669
|
-
`inline-flex items-center justify-center ${
|
|
16328
|
+
// Base classes - flex layout, CTA button tokens, motion
|
|
16329
|
+
`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`,
|
|
15670
16330
|
{
|
|
15671
16331
|
variants: {
|
|
15672
16332
|
size: {
|
|
15673
|
-
default: `${
|
|
16333
|
+
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}`,
|
|
15674
16334
|
// Default size - uses md height and padding
|
|
15675
|
-
compact: `${
|
|
16335
|
+
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}`
|
|
15676
16336
|
// Compact size - uses sm height and padding
|
|
15677
16337
|
}
|
|
15678
16338
|
},
|
|
@@ -15804,6 +16464,22 @@ var PromoCard = React49__namespace.forwardRef(
|
|
|
15804
16464
|
}
|
|
15805
16465
|
);
|
|
15806
16466
|
PromoCard.displayName = "PromoCard";
|
|
16467
|
+
var ticketCardVariants = classVarianceAuthority.cva("group relative", {
|
|
16468
|
+
variants: {
|
|
16469
|
+
size: {
|
|
16470
|
+
default: "",
|
|
16471
|
+
compact: ""
|
|
16472
|
+
},
|
|
16473
|
+
variant: {
|
|
16474
|
+
default: "",
|
|
16475
|
+
featured: ""
|
|
16476
|
+
}
|
|
16477
|
+
},
|
|
16478
|
+
defaultVariants: {
|
|
16479
|
+
size: "default",
|
|
16480
|
+
variant: "default"
|
|
16481
|
+
}
|
|
16482
|
+
});
|
|
15807
16483
|
var ticketCardBadgeVariants = classVarianceAuthority.cva(
|
|
15808
16484
|
// Base classes - absolute positioning, z-index
|
|
15809
16485
|
"absolute z-10",
|
|
@@ -15811,7 +16487,7 @@ var ticketCardBadgeVariants = classVarianceAuthority.cva(
|
|
|
15811
16487
|
variants: {
|
|
15812
16488
|
size: {
|
|
15813
16489
|
default: DOMAIN_TOKENS.badges.position.default,
|
|
15814
|
-
// Default positioning - maps to semanticSpacing.md (
|
|
16490
|
+
// Default positioning - maps to semanticSpacing.md (16px)
|
|
15815
16491
|
compact: DOMAIN_TOKENS.badges.position.compact
|
|
15816
16492
|
// Compact positioning - maps to semanticSpacing.sm (8px)
|
|
15817
16493
|
}
|
|
@@ -15823,7 +16499,7 @@ var ticketCardBadgeVariants = classVarianceAuthority.cva(
|
|
|
15823
16499
|
);
|
|
15824
16500
|
var ticketCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
15825
16501
|
// Base classes - flex layout, items center, badge styling
|
|
15826
|
-
`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}
|
|
16502
|
+
`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}`,
|
|
15827
16503
|
{
|
|
15828
16504
|
variants: {
|
|
15829
16505
|
variant: {
|
|
@@ -15840,6 +16516,45 @@ var ticketCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
|
15840
16516
|
}
|
|
15841
16517
|
}
|
|
15842
16518
|
);
|
|
16519
|
+
var ticketCardTitleVariants = classVarianceAuthority.cva(
|
|
16520
|
+
`${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.fontWeight.bold} ${MOTION_TOKENS.transition.colors} ${DOMAIN_TOKENS.text.hover.primary} ${DOMAIN_TOKENS.text.lineClamp.two}`,
|
|
16521
|
+
{
|
|
16522
|
+
variants: {
|
|
16523
|
+
size: {
|
|
16524
|
+
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
16525
|
+
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
16526
|
+
}
|
|
16527
|
+
},
|
|
16528
|
+
defaultVariants: {
|
|
16529
|
+
size: "default"
|
|
16530
|
+
}
|
|
16531
|
+
}
|
|
16532
|
+
);
|
|
16533
|
+
var ticketCardDateVariants = classVarianceAuthority.cva(
|
|
16534
|
+
`${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.sm} ${MOTION_TOKENS.transition.colors}`,
|
|
16535
|
+
{
|
|
16536
|
+
variants: {
|
|
16537
|
+
size: {
|
|
16538
|
+
default: DOMAIN_TOKENS.spacing.section.titleToSubtitle,
|
|
16539
|
+
compact: `${DOMAIN_TOKENS.spacing.section.titleToSubtitle} ${TEXT_TOKENS.fontSize.xs}`
|
|
16540
|
+
}
|
|
16541
|
+
},
|
|
16542
|
+
defaultVariants: {
|
|
16543
|
+
size: "default"
|
|
16544
|
+
}
|
|
16545
|
+
}
|
|
16546
|
+
);
|
|
16547
|
+
var ticketCardDescriptionVariants = classVarianceAuthority.cva(`${DOMAIN_TOKENS.text.lineClamp.two}`, {
|
|
16548
|
+
variants: {
|
|
16549
|
+
size: {
|
|
16550
|
+
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
16551
|
+
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
16552
|
+
}
|
|
16553
|
+
},
|
|
16554
|
+
defaultVariants: {
|
|
16555
|
+
size: "default"
|
|
16556
|
+
}
|
|
16557
|
+
});
|
|
15843
16558
|
var ticketCardPriceCapacityContainerVariants = classVarianceAuthority.cva(
|
|
15844
16559
|
// Base classes - flex layout, price/capacity spacing
|
|
15845
16560
|
`flex items-center ${DOMAIN_TOKENS.priceCapacity.spacing}`,
|
|
@@ -15857,7 +16572,7 @@ var ticketCardPriceCapacityContainerVariants = classVarianceAuthority.cva(
|
|
|
15857
16572
|
);
|
|
15858
16573
|
var ticketCardPriceVariants = classVarianceAuthority.cva(
|
|
15859
16574
|
// Base classes - price text color
|
|
15860
|
-
`${DOMAIN_TOKENS.priceCapacity.text.primary}
|
|
16575
|
+
`${DOMAIN_TOKENS.priceCapacity.text.primary} ${TEXT_TOKENS.fontWeight.bold}`,
|
|
15861
16576
|
{
|
|
15862
16577
|
variants: {
|
|
15863
16578
|
size: {
|
|
@@ -15891,7 +16606,7 @@ var ticketCardCapacityVariants = classVarianceAuthority.cva(
|
|
|
15891
16606
|
);
|
|
15892
16607
|
var ticketCardAvailabilityVariants = classVarianceAuthority.cva(
|
|
15893
16608
|
// Base classes - availability indicator styling
|
|
15894
|
-
`inline-flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${TEXT_TOKENS.fontSize.xs}
|
|
16609
|
+
`inline-flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.medium}`,
|
|
15895
16610
|
{
|
|
15896
16611
|
variants: {
|
|
15897
16612
|
availability: {
|
|
@@ -15924,7 +16639,7 @@ var ticketCardFooterVariants = classVarianceAuthority.cva(
|
|
|
15924
16639
|
);
|
|
15925
16640
|
var ticketCardPurchaseButtonVariants = classVarianceAuthority.cva(
|
|
15926
16641
|
// Base classes - flex layout, badge gradient, motion
|
|
15927
|
-
`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}
|
|
16642
|
+
`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`,
|
|
15928
16643
|
{
|
|
15929
16644
|
variants: {
|
|
15930
16645
|
size: {
|
|
@@ -15959,9 +16674,38 @@ var ticketCardPurchaseButtonIconVariants = classVarianceAuthority.cva(
|
|
|
15959
16674
|
}
|
|
15960
16675
|
}
|
|
15961
16676
|
);
|
|
16677
|
+
var ticketCardImageOverlayVariants = classVarianceAuthority.cva(
|
|
16678
|
+
`absolute inset-0 ${DOMAIN_TOKENS.image.overlay.gradient} opacity-0 ${MOTION_TOKENS.transition.opacity} ${MOTION_TOKENS.duration.normal} group-hover:opacity-100`,
|
|
16679
|
+
{
|
|
16680
|
+
variants: {
|
|
16681
|
+
size: {
|
|
16682
|
+
default: "",
|
|
16683
|
+
compact: ""
|
|
16684
|
+
}
|
|
16685
|
+
},
|
|
16686
|
+
defaultVariants: {
|
|
16687
|
+
size: "default"
|
|
16688
|
+
}
|
|
16689
|
+
}
|
|
16690
|
+
);
|
|
16691
|
+
var ticketCardImageTransformVariants = classVarianceAuthority.cva(
|
|
16692
|
+
`object-cover ${MOTION_TOKENS.transition.transform} ${MOTION_TOKENS.duration.slow} ${DOMAIN_TOKENS.motion.hover.scale}`,
|
|
16693
|
+
{
|
|
16694
|
+
variants: {
|
|
16695
|
+
size: {
|
|
16696
|
+
default: "",
|
|
16697
|
+
compact: ""
|
|
16698
|
+
}
|
|
16699
|
+
},
|
|
16700
|
+
defaultVariants: {
|
|
16701
|
+
size: "default"
|
|
16702
|
+
}
|
|
16703
|
+
}
|
|
16704
|
+
);
|
|
15962
16705
|
var TicketCard = React49__namespace.forwardRef(
|
|
15963
16706
|
({
|
|
15964
16707
|
title,
|
|
16708
|
+
date,
|
|
15965
16709
|
description,
|
|
15966
16710
|
price,
|
|
15967
16711
|
capacity,
|
|
@@ -16008,57 +16752,368 @@ var TicketCard = React49__namespace.forwardRef(
|
|
|
16008
16752
|
}
|
|
16009
16753
|
};
|
|
16010
16754
|
const availabilityLabel = getAvailabilityLabel();
|
|
16755
|
+
const formattedDate = date ? formatDate(date) : null;
|
|
16756
|
+
const dateTimeValue = (() => {
|
|
16757
|
+
if (!date) return null;
|
|
16758
|
+
if (typeof date === "string") {
|
|
16759
|
+
return new Date(date).toISOString();
|
|
16760
|
+
}
|
|
16761
|
+
if (date instanceof Date) {
|
|
16762
|
+
return date.toISOString();
|
|
16763
|
+
}
|
|
16764
|
+
return new Date(date).toISOString();
|
|
16765
|
+
})();
|
|
16011
16766
|
return /* @__PURE__ */ jsxRuntime.jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16012
16767
|
CardBase,
|
|
16013
16768
|
{
|
|
16014
16769
|
ref,
|
|
16015
16770
|
size: size3,
|
|
16016
16771
|
variant: cardVariant,
|
|
16017
|
-
className: cn(
|
|
16772
|
+
className: cn(ticketCardVariants({ size: size3, variant: cardVariant }), className),
|
|
16018
16773
|
...props,
|
|
16019
16774
|
children: [
|
|
16020
16775
|
featured && featuredBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ticketCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
16021
16776
|
vipBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(ticketCardBadgeVariants({ size: size3 }), getVipBadgePosition()), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "vip" }), children: vipBadgeText }) }),
|
|
16022
16777
|
discountBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(ticketCardBadgeVariants({ size: size3 }), getDiscountBadgePosition()), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "discount" }), children: discountBadgeText }) }),
|
|
16023
|
-
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16024
|
-
|
|
16025
|
-
|
|
16026
|
-
|
|
16027
|
-
|
|
16028
|
-
|
|
16029
|
-
|
|
16030
|
-
|
|
16031
|
-
|
|
16032
|
-
|
|
16033
|
-
|
|
16034
|
-
|
|
16035
|
-
|
|
16036
|
-
|
|
16778
|
+
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16779
|
+
"div",
|
|
16780
|
+
{
|
|
16781
|
+
className: cn(
|
|
16782
|
+
"relative w-full overflow-hidden",
|
|
16783
|
+
DOMAIN_TOKENS.image.placeholder.gradient
|
|
16784
|
+
),
|
|
16785
|
+
children: [
|
|
16786
|
+
imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16787
|
+
"img",
|
|
16788
|
+
{
|
|
16789
|
+
src: imageUrl,
|
|
16790
|
+
alt: title,
|
|
16791
|
+
className: cn("h-full w-full", ticketCardImageTransformVariants({ size: size3 }))
|
|
16792
|
+
}
|
|
16793
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16794
|
+
Icon2,
|
|
16795
|
+
{
|
|
16796
|
+
name: "info",
|
|
16797
|
+
size: "xl",
|
|
16798
|
+
color: "muted",
|
|
16799
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
16800
|
+
"aria-hidden": "true"
|
|
16801
|
+
}
|
|
16802
|
+
) }),
|
|
16803
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ticketCardImageOverlayVariants({ size: size3 }) })
|
|
16804
|
+
]
|
|
16805
|
+
}
|
|
16806
|
+
) }),
|
|
16807
|
+
/* @__PURE__ */ jsxRuntime.jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
16808
|
+
/* @__PURE__ */ jsxRuntime.jsx(Heading, { level: 3, className: ticketCardTitleVariants({ size: size3 }), children: href ? /* @__PURE__ */ jsxRuntime.jsx(Link, { href, variant: "ghost", children: title }) : title }),
|
|
16809
|
+
formattedDate && dateTimeValue && /* @__PURE__ */ jsxRuntime.jsx("time", { dateTime: dateTimeValue, className: ticketCardDateVariants({ size: size3 }), children: formattedDate }),
|
|
16810
|
+
description && /* @__PURE__ */ jsxRuntime.jsx(Text, { size: "sm", variant: "muted", className: ticketCardDescriptionVariants({ size: size3 }), children: description }),
|
|
16811
|
+
(price || capacity) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ticketCardPriceCapacityContainerVariants({ size: size3 }), children: [
|
|
16812
|
+
price && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16813
|
+
Text,
|
|
16814
|
+
{
|
|
16815
|
+
size: size3 === "compact" ? "md" : "lg",
|
|
16816
|
+
weight: "bold",
|
|
16817
|
+
className: ticketCardPriceVariants({ size: size3 }),
|
|
16818
|
+
children: price
|
|
16819
|
+
}
|
|
16820
|
+
),
|
|
16821
|
+
capacity && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16822
|
+
Text,
|
|
16823
|
+
{
|
|
16824
|
+
size: size3 === "compact" ? "xs" : "sm",
|
|
16825
|
+
variant: "muted",
|
|
16826
|
+
className: ticketCardCapacityVariants({ size: size3 }),
|
|
16827
|
+
children: capacity
|
|
16828
|
+
}
|
|
16829
|
+
)
|
|
16830
|
+
] }),
|
|
16831
|
+
availabilityLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ticketCardAvailabilityVariants({ availability }), children: /* @__PURE__ */ jsxRuntime.jsx(Text, { size: "xs", variant: availability === "sold_out" ? "muted" : "primary", children: availabilityLabel }) })
|
|
16832
|
+
] }),
|
|
16833
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full", ticketCardFooterVariants({ size: size3 })), children: [
|
|
16834
|
+
purchaseUrl && !isPurchaseDisabled && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16835
|
+
Link,
|
|
16037
16836
|
{
|
|
16038
|
-
|
|
16039
|
-
|
|
16040
|
-
|
|
16041
|
-
|
|
16042
|
-
|
|
16837
|
+
href: purchaseUrl,
|
|
16838
|
+
className: cn(
|
|
16839
|
+
"w-full",
|
|
16840
|
+
ticketCardPurchaseButtonVariants({ size: size3, disabled: false })
|
|
16841
|
+
),
|
|
16842
|
+
target: "_blank",
|
|
16843
|
+
rel: "noopener noreferrer",
|
|
16844
|
+
children: [
|
|
16845
|
+
purchaseLabel,
|
|
16846
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16847
|
+
]
|
|
16043
16848
|
}
|
|
16044
|
-
)
|
|
16045
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16849
|
+
),
|
|
16850
|
+
(!purchaseUrl || isPurchaseDisabled) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16046
16851
|
"div",
|
|
16047
16852
|
{
|
|
16048
16853
|
className: cn(
|
|
16049
|
-
"
|
|
16050
|
-
|
|
16051
|
-
)
|
|
16854
|
+
"w-full",
|
|
16855
|
+
ticketCardPurchaseButtonVariants({ size: size3, disabled: isPurchaseDisabled })
|
|
16856
|
+
),
|
|
16857
|
+
children: [
|
|
16858
|
+
purchaseLabel,
|
|
16859
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16860
|
+
]
|
|
16052
16861
|
}
|
|
16053
16862
|
)
|
|
16054
|
-
] }) })
|
|
16863
|
+
] }) })
|
|
16864
|
+
]
|
|
16865
|
+
}
|
|
16866
|
+
) });
|
|
16867
|
+
}
|
|
16868
|
+
);
|
|
16869
|
+
TicketCard.displayName = "TicketCard";
|
|
16870
|
+
var eventCardVariants = classVarianceAuthority.cva(
|
|
16871
|
+
// Base classes - surface, border, radius, shadow, motion from tokens
|
|
16872
|
+
`${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`,
|
|
16873
|
+
{
|
|
16874
|
+
variants: {
|
|
16875
|
+
size: {
|
|
16876
|
+
default: `${CARD_TOKENS.size.md.padding} ${DOMAIN_TOKENS.layout.gap.default}`,
|
|
16877
|
+
compact: `${CARD_TOKENS.size.sm.padding} ${DOMAIN_TOKENS.layout.gap.compact}`
|
|
16878
|
+
},
|
|
16879
|
+
layout: {
|
|
16880
|
+
vertical: "flex flex-col"
|
|
16881
|
+
},
|
|
16882
|
+
variant: {
|
|
16883
|
+
default: "",
|
|
16884
|
+
featured: `${DOMAIN_TOKENS.badges.surface.featured}`
|
|
16885
|
+
}
|
|
16886
|
+
},
|
|
16887
|
+
defaultVariants: {
|
|
16888
|
+
size: "default",
|
|
16889
|
+
layout: "vertical",
|
|
16890
|
+
variant: "default"
|
|
16891
|
+
}
|
|
16892
|
+
}
|
|
16893
|
+
);
|
|
16894
|
+
var eventCardBadgeVariants = classVarianceAuthority.cva(
|
|
16895
|
+
// Base classes - absolute positioning, z-index
|
|
16896
|
+
"absolute z-10",
|
|
16897
|
+
{
|
|
16898
|
+
variants: {
|
|
16899
|
+
size: {
|
|
16900
|
+
default: DOMAIN_TOKENS.badges.position.default,
|
|
16901
|
+
compact: DOMAIN_TOKENS.badges.position.compact
|
|
16902
|
+
}
|
|
16903
|
+
},
|
|
16904
|
+
defaultVariants: {
|
|
16905
|
+
size: "default"
|
|
16906
|
+
}
|
|
16907
|
+
}
|
|
16908
|
+
);
|
|
16909
|
+
var eventCardBadgeSurfaceVariants = classVarianceAuthority.cva(
|
|
16910
|
+
// Base classes - flex layout, items center, badge styling from tokens
|
|
16911
|
+
`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}`,
|
|
16912
|
+
{
|
|
16913
|
+
variants: {
|
|
16914
|
+
variant: {
|
|
16915
|
+
default: DOMAIN_TOKENS.badges.surface.default,
|
|
16916
|
+
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
16917
|
+
}
|
|
16918
|
+
},
|
|
16919
|
+
defaultVariants: {
|
|
16920
|
+
variant: "featured"
|
|
16921
|
+
}
|
|
16922
|
+
}
|
|
16923
|
+
);
|
|
16924
|
+
var eventCardMetadataVariants = classVarianceAuthority.cva(
|
|
16925
|
+
// Base classes - flex column, metadata spacing from tokens
|
|
16926
|
+
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
16927
|
+
{
|
|
16928
|
+
variants: {
|
|
16929
|
+
size: {
|
|
16930
|
+
default: "",
|
|
16931
|
+
compact: ""
|
|
16932
|
+
}
|
|
16933
|
+
},
|
|
16934
|
+
defaultVariants: {
|
|
16935
|
+
size: "default"
|
|
16936
|
+
}
|
|
16937
|
+
}
|
|
16938
|
+
);
|
|
16939
|
+
var eventCardMetadataItemVariants = classVarianceAuthority.cva(
|
|
16940
|
+
// Base classes - flex items center, metadata spacing and text from tokens
|
|
16941
|
+
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
16942
|
+
{
|
|
16943
|
+
variants: {
|
|
16944
|
+
size: {
|
|
16945
|
+
default: "",
|
|
16946
|
+
compact: ""
|
|
16947
|
+
}
|
|
16948
|
+
},
|
|
16949
|
+
defaultVariants: {
|
|
16950
|
+
size: "default"
|
|
16951
|
+
}
|
|
16952
|
+
}
|
|
16953
|
+
);
|
|
16954
|
+
var eventCardMetadataIconVariants = classVarianceAuthority.cva(
|
|
16955
|
+
// Base classes - icon size and color from tokens
|
|
16956
|
+
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.metadata.icon.default}`,
|
|
16957
|
+
{
|
|
16958
|
+
variants: {
|
|
16959
|
+
size: {
|
|
16960
|
+
default: "",
|
|
16961
|
+
compact: ""
|
|
16962
|
+
}
|
|
16963
|
+
},
|
|
16964
|
+
defaultVariants: {
|
|
16965
|
+
size: "default"
|
|
16966
|
+
}
|
|
16967
|
+
}
|
|
16968
|
+
);
|
|
16969
|
+
var eventCardFooterVariants = classVarianceAuthority.cva(
|
|
16970
|
+
// Base classes - border top, spacing from tokens
|
|
16971
|
+
"border-t border-border",
|
|
16972
|
+
{
|
|
16973
|
+
variants: {
|
|
16974
|
+
size: {
|
|
16975
|
+
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
16976
|
+
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
16977
|
+
}
|
|
16978
|
+
},
|
|
16979
|
+
defaultVariants: {
|
|
16980
|
+
size: "default"
|
|
16981
|
+
}
|
|
16982
|
+
}
|
|
16983
|
+
);
|
|
16984
|
+
var eventCardTicketButtonVariants = classVarianceAuthority.cva(
|
|
16985
|
+
// Base classes - flex layout, badge gradient, motion from tokens
|
|
16986
|
+
`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`,
|
|
16987
|
+
{
|
|
16988
|
+
variants: {
|
|
16989
|
+
size: {
|
|
16990
|
+
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
16991
|
+
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
16992
|
+
}
|
|
16993
|
+
},
|
|
16994
|
+
defaultVariants: {
|
|
16995
|
+
size: "default"
|
|
16996
|
+
}
|
|
16997
|
+
}
|
|
16998
|
+
);
|
|
16999
|
+
var eventCardTicketButtonIconVariants = classVarianceAuthority.cva(
|
|
17000
|
+
// Base classes - icon size and spacing from tokens
|
|
17001
|
+
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
17002
|
+
{
|
|
17003
|
+
variants: {
|
|
17004
|
+
size: {
|
|
17005
|
+
default: "",
|
|
17006
|
+
compact: ""
|
|
17007
|
+
}
|
|
17008
|
+
},
|
|
17009
|
+
defaultVariants: {
|
|
17010
|
+
size: "default"
|
|
17011
|
+
}
|
|
17012
|
+
}
|
|
17013
|
+
);
|
|
17014
|
+
var eventCardPriceVariants = classVarianceAuthority.cva(
|
|
17015
|
+
// Base classes - price gradient text from tokens
|
|
17016
|
+
`bg-gradient-to-r from-accent-500 to-primary-600 bg-clip-text text-transparent`,
|
|
17017
|
+
{
|
|
17018
|
+
variants: {
|
|
17019
|
+
size: {
|
|
17020
|
+
default: TEXT_TOKENS.fontSize.lg,
|
|
17021
|
+
compact: TEXT_TOKENS.fontSize.md
|
|
17022
|
+
}
|
|
17023
|
+
},
|
|
17024
|
+
defaultVariants: {
|
|
17025
|
+
size: "default"
|
|
17026
|
+
}
|
|
17027
|
+
}
|
|
17028
|
+
);
|
|
17029
|
+
var EventCard = React49__namespace.forwardRef(
|
|
17030
|
+
({
|
|
17031
|
+
title,
|
|
17032
|
+
description,
|
|
17033
|
+
date,
|
|
17034
|
+
venueName,
|
|
17035
|
+
price,
|
|
17036
|
+
imageUrl,
|
|
17037
|
+
href,
|
|
17038
|
+
ticketUrl,
|
|
17039
|
+
featured = false,
|
|
17040
|
+
showImage = true,
|
|
17041
|
+
getTicketsLabel,
|
|
17042
|
+
featuredBadgeText,
|
|
17043
|
+
size: size3 = "default",
|
|
17044
|
+
layout = "vertical",
|
|
17045
|
+
variant,
|
|
17046
|
+
className,
|
|
17047
|
+
animation,
|
|
17048
|
+
...props
|
|
17049
|
+
}, ref) => {
|
|
17050
|
+
const animationProps = resolveComponentAnimations({
|
|
17051
|
+
animation: animation?.animation || "fadeInUp",
|
|
17052
|
+
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
17053
|
+
animationProps: animation?.animationProps
|
|
17054
|
+
});
|
|
17055
|
+
const cardVariant = variant || (featured ? "featured" : "default");
|
|
17056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17057
|
+
CardBase,
|
|
17058
|
+
{
|
|
17059
|
+
ref,
|
|
17060
|
+
size: size3,
|
|
17061
|
+
variant: cardVariant,
|
|
17062
|
+
className: cn(
|
|
17063
|
+
eventCardVariants({ size: size3, layout, variant: cardVariant }),
|
|
17064
|
+
"group relative",
|
|
17065
|
+
className
|
|
17066
|
+
),
|
|
17067
|
+
...props,
|
|
17068
|
+
children: [
|
|
17069
|
+
featured && featuredBadgeText && /* @__PURE__ */ jsxRuntime.jsx("div", { className: eventCardBadgeVariants({ size: size3 }), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
17070
|
+
showImage && /* @__PURE__ */ jsxRuntime.jsx(CardBaseImageWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17071
|
+
"div",
|
|
17072
|
+
{
|
|
17073
|
+
className: cn("relative w-full overflow-hidden", DOMAIN_TOKENS.surface.bg.default),
|
|
17074
|
+
children: [
|
|
17075
|
+
imageUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
17076
|
+
"img",
|
|
17077
|
+
{
|
|
17078
|
+
src: imageUrl,
|
|
17079
|
+
alt: title,
|
|
17080
|
+
className: cn(
|
|
17081
|
+
"h-full w-full object-cover",
|
|
17082
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
17083
|
+
DOMAIN_TOKENS.motion.hover.scale
|
|
17084
|
+
)
|
|
17085
|
+
}
|
|
17086
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17087
|
+
Icon2,
|
|
17088
|
+
{
|
|
17089
|
+
name: "info",
|
|
17090
|
+
size: "xl",
|
|
17091
|
+
color: "muted",
|
|
17092
|
+
className: ICON_TOKENS.sizes["4xl"],
|
|
17093
|
+
"aria-hidden": "true"
|
|
17094
|
+
}
|
|
17095
|
+
) }),
|
|
17096
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17097
|
+
"div",
|
|
17098
|
+
{
|
|
17099
|
+
className: cn(
|
|
17100
|
+
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
17101
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
17102
|
+
DOMAIN_TOKENS.image.overlay.gradient
|
|
17103
|
+
)
|
|
17104
|
+
}
|
|
17105
|
+
)
|
|
17106
|
+
]
|
|
17107
|
+
}
|
|
17108
|
+
) }),
|
|
16055
17109
|
/* @__PURE__ */ jsxRuntime.jsxs(CardBaseContentWrapper, { size: size3, children: [
|
|
16056
17110
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16057
17111
|
Heading,
|
|
16058
17112
|
{
|
|
16059
17113
|
level: 3,
|
|
16060
17114
|
className: cn(
|
|
16061
|
-
"line-clamp-2
|
|
17115
|
+
"line-clamp-2 group-hover:text-primary",
|
|
17116
|
+
DOMAIN_TOKENS.motion.hover.transition,
|
|
16062
17117
|
TEXT_TOKENS.fontSize.lg,
|
|
16063
17118
|
TEXT_TOKENS.fontWeight.bold,
|
|
16064
17119
|
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
@@ -16070,7 +17125,7 @@ var TicketCard = React49__namespace.forwardRef(
|
|
|
16070
17125
|
Text,
|
|
16071
17126
|
{
|
|
16072
17127
|
size: "sm",
|
|
16073
|
-
|
|
17128
|
+
muted: true,
|
|
16074
17129
|
className: cn(
|
|
16075
17130
|
"line-clamp-2",
|
|
16076
17131
|
size3 === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
@@ -16078,49 +17133,57 @@ var TicketCard = React49__namespace.forwardRef(
|
|
|
16078
17133
|
children: description
|
|
16079
17134
|
}
|
|
16080
17135
|
),
|
|
16081
|
-
|
|
16082
|
-
|
|
16083
|
-
|
|
16084
|
-
|
|
16085
|
-
|
|
17136
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: eventCardMetadataVariants({ size: size3 }), children: [
|
|
17137
|
+
date && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), role: "text", children: [
|
|
17138
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17139
|
+
IconCalendar,
|
|
17140
|
+
{
|
|
17141
|
+
className: eventCardMetadataIconVariants({ size: size3 }),
|
|
17142
|
+
"aria-hidden": true
|
|
17143
|
+
}
|
|
17144
|
+
),
|
|
17145
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text, { size: "xs", muted: true, children: /* @__PURE__ */ jsxRuntime.jsx("time", { dateTime: date, children: date }) })
|
|
17146
|
+
] }),
|
|
17147
|
+
venueName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: eventCardMetadataItemVariants({ size: size3 }), role: "text", children: [
|
|
17148
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17149
|
+
IconLocation,
|
|
17150
|
+
{
|
|
17151
|
+
className: eventCardMetadataIconVariants({ size: size3 }),
|
|
17152
|
+
"aria-hidden": true
|
|
17153
|
+
}
|
|
17154
|
+
),
|
|
17155
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text, { size: "xs", muted: true, className: "line-clamp-1", children: /* @__PURE__ */ jsxRuntime.jsx("address", { children: venueName }) })
|
|
17156
|
+
] })
|
|
17157
|
+
] })
|
|
16086
17158
|
] }),
|
|
16087
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full",
|
|
16088
|
-
|
|
17159
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardBaseFooterWrapper, { size: size3, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("w-full", eventCardFooterVariants({ size: size3 })), children: [
|
|
17160
|
+
ticketUrl && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16089
17161
|
Link,
|
|
16090
17162
|
{
|
|
16091
|
-
href:
|
|
16092
|
-
className: cn(
|
|
16093
|
-
"w-full",
|
|
16094
|
-
ticketCardPurchaseButtonVariants({ size: size3, disabled: false })
|
|
16095
|
-
),
|
|
17163
|
+
href: ticketUrl,
|
|
17164
|
+
className: cn("w-full", eventCardTicketButtonVariants({ size: size3 })),
|
|
16096
17165
|
target: "_blank",
|
|
16097
17166
|
rel: "noopener noreferrer",
|
|
16098
17167
|
children: [
|
|
16099
|
-
|
|
16100
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17168
|
+
getTicketsLabel,
|
|
17169
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17170
|
+
IconArrowRight,
|
|
17171
|
+
{
|
|
17172
|
+
className: eventCardTicketButtonIconVariants({ size: size3 }),
|
|
17173
|
+
"aria-hidden": true
|
|
17174
|
+
}
|
|
17175
|
+
)
|
|
16101
17176
|
]
|
|
16102
17177
|
}
|
|
16103
17178
|
),
|
|
16104
|
-
|
|
16105
|
-
"div",
|
|
16106
|
-
{
|
|
16107
|
-
className: cn(
|
|
16108
|
-
"w-full",
|
|
16109
|
-
ticketCardPurchaseButtonVariants({ size: size3, disabled: isPurchaseDisabled })
|
|
16110
|
-
),
|
|
16111
|
-
children: [
|
|
16112
|
-
purchaseLabel,
|
|
16113
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size: size3 }) })
|
|
16114
|
-
]
|
|
16115
|
-
}
|
|
16116
|
-
)
|
|
17179
|
+
!ticketUrl && price && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-right", children: /* @__PURE__ */ jsxRuntime.jsx(Text, { size: size3 === "compact" ? "md" : "lg", weight: "bold", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventCardPriceVariants({ size: size3 }), children: price }) }) })
|
|
16117
17180
|
] }) })
|
|
16118
17181
|
]
|
|
16119
17182
|
}
|
|
16120
17183
|
) });
|
|
16121
17184
|
}
|
|
16122
17185
|
);
|
|
16123
|
-
|
|
17186
|
+
EventCard.displayName = "EventCard";
|
|
16124
17187
|
|
|
16125
17188
|
exports.ALERT_TOKENS = ALERT_TOKENS;
|
|
16126
17189
|
exports.Alert = Alert;
|
|
@@ -16138,6 +17201,7 @@ exports.Card = Card;
|
|
|
16138
17201
|
exports.CardBody = CardBody;
|
|
16139
17202
|
exports.CardFooter = CardFooter;
|
|
16140
17203
|
exports.CardHeader = CardHeader;
|
|
17204
|
+
exports.CategoryCard = CategoryCard;
|
|
16141
17205
|
exports.Checkbox = Checkbox;
|
|
16142
17206
|
exports.Code = Code;
|
|
16143
17207
|
exports.Column = Column;
|