@tenerife.music/ui 1.1.0 → 1.1.1
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 +2 -1
- package/dist/{index-Cj8oRSOc.d.cts → index-DInIMlaR.d.cts} +1 -485
- package/dist/{index-Cj8oRSOc.d.ts → index-DInIMlaR.d.ts} +1 -485
- package/dist/index.cjs +782 -2709
- package/dist/index.d.cts +82 -390
- package/dist/index.d.ts +82 -390
- package/dist/index.mjs +765 -2692
- package/dist/styles.css +0 -26
- package/dist/tokens/index.d.cts +486 -2
- package/dist/tokens/index.d.ts +486 -2
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Slot } from '@radix-ui/react-slot';
|
|
2
|
-
import * as
|
|
2
|
+
import * as React49 from 'react';
|
|
3
3
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
@@ -612,6 +612,162 @@ var MOTION_TOKENS = {
|
|
|
612
612
|
}
|
|
613
613
|
};
|
|
614
614
|
|
|
615
|
+
// src/FOUNDATION/tokens/components/badge.ts
|
|
616
|
+
var BADGE_TOKENS = {
|
|
617
|
+
/**
|
|
618
|
+
* Layout tokens
|
|
619
|
+
* Base layout utilities for badge component
|
|
620
|
+
*/
|
|
621
|
+
layout: "inline-flex items-center",
|
|
622
|
+
// Base layout for badge container
|
|
623
|
+
/**
|
|
624
|
+
* Badge padding
|
|
625
|
+
* Uses semantic spacing tokens
|
|
626
|
+
*/
|
|
627
|
+
padding: {
|
|
628
|
+
horizontal: "px-xs",
|
|
629
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
630
|
+
vertical: "py-xs"
|
|
631
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
632
|
+
},
|
|
633
|
+
/**
|
|
634
|
+
* Border radius for badges
|
|
635
|
+
* Uses fully rounded (pill shape) - maps to borderRadius.full
|
|
636
|
+
*
|
|
637
|
+
* @rule References borderRadius.full (9999px) from Radius Authority
|
|
638
|
+
* @see docs/architecture/RADIUS_AUTHORITY_CONTRACT.md
|
|
639
|
+
*/
|
|
640
|
+
radius: "rounded-full",
|
|
641
|
+
// References borderRadius.full (9999px) - Radius Authority compliant
|
|
642
|
+
/**
|
|
643
|
+
* Font size for badges
|
|
644
|
+
* References foundation typography fontSize tokens from Typography Authority
|
|
645
|
+
*
|
|
646
|
+
* @rule All fontSize values reference Typography Authority tokens
|
|
647
|
+
* @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
|
|
648
|
+
*/
|
|
649
|
+
fontSize: "text-xs",
|
|
650
|
+
// References fontSize.xs[0] from Typography Authority (~12px)
|
|
651
|
+
/**
|
|
652
|
+
* Font weight for badges
|
|
653
|
+
*/
|
|
654
|
+
fontWeight: "font-semibold",
|
|
655
|
+
// Semibold weight (600)
|
|
656
|
+
/**
|
|
657
|
+
* Border token
|
|
658
|
+
* Base border style
|
|
659
|
+
*/
|
|
660
|
+
border: "border",
|
|
661
|
+
// Base border
|
|
662
|
+
/**
|
|
663
|
+
* Underline offset for link variant
|
|
664
|
+
* Uses spacing token (xs = 4px) which matches underline-offset-4
|
|
665
|
+
*/
|
|
666
|
+
underlineOffset: "underline-offset-4",
|
|
667
|
+
// 4px (0.25rem) - matches semanticSpacing.xs
|
|
668
|
+
/**
|
|
669
|
+
* Transition tokens
|
|
670
|
+
* References Motion Authority tokens for consistent motion behavior
|
|
671
|
+
*
|
|
672
|
+
* @rule Uses MOTION_TOKENS.transitionPreset.colors from Motion Authority
|
|
673
|
+
* @rule Motion transitions MUST use canonical motion tokens only
|
|
674
|
+
* @see docs/architecture/MOTION_AUTHORITY_CONTRACT.md
|
|
675
|
+
*/
|
|
676
|
+
transition: {
|
|
677
|
+
colors: MOTION_TOKENS.transitionPreset.colors
|
|
678
|
+
// "transition-colors duration-normal ease-out" - Motion Authority compliant
|
|
679
|
+
},
|
|
680
|
+
/**
|
|
681
|
+
* Focus state tokens
|
|
682
|
+
* Focus ring for keyboard navigation
|
|
683
|
+
*
|
|
684
|
+
* @rule Focus MUST use focus-visible: prefix (keyboard navigation only)
|
|
685
|
+
* @rule Focus MUST be blocked when disabled={true}
|
|
686
|
+
*/
|
|
687
|
+
focus: {
|
|
688
|
+
ring: "focus-visible:ring-2 focus-visible:ring-ring",
|
|
689
|
+
// Focus ring using semantic ring color
|
|
690
|
+
outline: "focus-visible:outline-none",
|
|
691
|
+
// Remove default outline (replaced by ring)
|
|
692
|
+
offset: "focus-visible:ring-offset-2"
|
|
693
|
+
// Ring offset
|
|
694
|
+
},
|
|
695
|
+
/**
|
|
696
|
+
* Color tokens for badge variants
|
|
697
|
+
* Uses semantic color tokens that map to CSS variables
|
|
698
|
+
*/
|
|
699
|
+
variant: {
|
|
700
|
+
primary: {
|
|
701
|
+
border: "border-transparent",
|
|
702
|
+
// Transparent border
|
|
703
|
+
background: "bg-primary",
|
|
704
|
+
// Primary background using CSS var
|
|
705
|
+
text: "text-primary-foreground",
|
|
706
|
+
// Primary text using CSS var
|
|
707
|
+
hover: "hover:bg-primary/80"
|
|
708
|
+
// Primary hover background
|
|
709
|
+
},
|
|
710
|
+
secondary: {
|
|
711
|
+
border: "border-transparent",
|
|
712
|
+
// Transparent border
|
|
713
|
+
background: "bg-secondary",
|
|
714
|
+
// Secondary background using CSS var
|
|
715
|
+
text: "text-secondary-foreground",
|
|
716
|
+
// Secondary text using CSS var
|
|
717
|
+
hover: "hover:bg-secondary/80"
|
|
718
|
+
// Secondary hover background
|
|
719
|
+
},
|
|
720
|
+
accent: {
|
|
721
|
+
border: "border-transparent",
|
|
722
|
+
// Transparent border
|
|
723
|
+
background: "bg-accent",
|
|
724
|
+
// Accent background using CSS var
|
|
725
|
+
text: "text-accent-foreground",
|
|
726
|
+
// Accent text using CSS var
|
|
727
|
+
hover: "hover:bg-accent/80"
|
|
728
|
+
// Accent hover background
|
|
729
|
+
},
|
|
730
|
+
outline: {
|
|
731
|
+
border: "border-border",
|
|
732
|
+
// No background
|
|
733
|
+
text: "text-foreground"
|
|
734
|
+
// Foreground text using CSS var
|
|
735
|
+
},
|
|
736
|
+
ghost: {
|
|
737
|
+
border: "border-transparent",
|
|
738
|
+
// Transparent border
|
|
739
|
+
background: "bg-transparent",
|
|
740
|
+
// Transparent background
|
|
741
|
+
text: "text-foreground",
|
|
742
|
+
// Foreground text using CSS var
|
|
743
|
+
hover: "hover:bg-accent/10"
|
|
744
|
+
// Ghost hover background
|
|
745
|
+
},
|
|
746
|
+
link: {
|
|
747
|
+
border: "border-transparent",
|
|
748
|
+
// Transparent border
|
|
749
|
+
background: "bg-transparent",
|
|
750
|
+
// Transparent background
|
|
751
|
+
text: "text-primary",
|
|
752
|
+
// Primary text using CSS var
|
|
753
|
+
hover: "hover:text-primary/80",
|
|
754
|
+
// Primary hover text
|
|
755
|
+
underline: "hover:underline"
|
|
756
|
+
// Underline on hover
|
|
757
|
+
},
|
|
758
|
+
destructive: {
|
|
759
|
+
border: "border-transparent",
|
|
760
|
+
// Transparent border
|
|
761
|
+
background: "bg-destructive",
|
|
762
|
+
// Destructive background using CSS var
|
|
763
|
+
text: "text-destructive-foreground",
|
|
764
|
+
// Destructive text using CSS var
|
|
765
|
+
hover: "hover:bg-destructive/80"
|
|
766
|
+
// Destructive hover background
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
};
|
|
770
|
+
|
|
615
771
|
// src/FOUNDATION/tokens/components/button.ts
|
|
616
772
|
var BUTTON_TOKENS = {
|
|
617
773
|
/**
|
|
@@ -1035,68 +1191,6 @@ var CARD_TOKENS = {
|
|
|
1035
1191
|
}
|
|
1036
1192
|
};
|
|
1037
1193
|
|
|
1038
|
-
// src/FOUNDATION/tokens/components/artist.ts
|
|
1039
|
-
var ARTIST_TOKENS = {
|
|
1040
|
-
/**
|
|
1041
|
-
* Image container tokens
|
|
1042
|
-
* Layout classes for image container wrapper
|
|
1043
|
-
*/
|
|
1044
|
-
image: {
|
|
1045
|
-
/**
|
|
1046
|
-
* Container layout tokens
|
|
1047
|
-
* Positioning and sizing for image container
|
|
1048
|
-
*/
|
|
1049
|
-
container: {
|
|
1050
|
-
/**
|
|
1051
|
-
* Base container layout
|
|
1052
|
-
* Relative positioning, full width, overflow hidden
|
|
1053
|
-
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1054
|
-
*/
|
|
1055
|
-
layout: "relative w-full overflow-hidden"
|
|
1056
|
-
},
|
|
1057
|
-
/**
|
|
1058
|
-
* Image sizing tokens
|
|
1059
|
-
* Full width and height for images
|
|
1060
|
-
*/
|
|
1061
|
-
sizing: {
|
|
1062
|
-
/**
|
|
1063
|
-
* Full size image
|
|
1064
|
-
* Uses Tailwind sizing utilities (allowed per architecture)
|
|
1065
|
-
*/
|
|
1066
|
-
full: "h-full w-full"
|
|
1067
|
-
},
|
|
1068
|
-
/**
|
|
1069
|
-
* Placeholder container tokens
|
|
1070
|
-
* Layout for placeholder icon container when no image is provided
|
|
1071
|
-
*/
|
|
1072
|
-
placeholder: {
|
|
1073
|
-
/**
|
|
1074
|
-
* Placeholder container layout
|
|
1075
|
-
* Flex centering for placeholder icon
|
|
1076
|
-
* Uses Tailwind layout utilities (allowed per architecture)
|
|
1077
|
-
*/
|
|
1078
|
-
container: "flex h-full w-full items-center justify-center"
|
|
1079
|
-
}
|
|
1080
|
-
},
|
|
1081
|
-
/**
|
|
1082
|
-
* Footer border tokens
|
|
1083
|
-
* Border styling for card footer separator
|
|
1084
|
-
*/
|
|
1085
|
-
footer: {
|
|
1086
|
-
/**
|
|
1087
|
-
* Footer border tokens
|
|
1088
|
-
* Top border separator for footer section
|
|
1089
|
-
*/
|
|
1090
|
-
border: {
|
|
1091
|
-
/**
|
|
1092
|
-
* Footer border top
|
|
1093
|
-
* Uses semantic border color token
|
|
1094
|
-
*/
|
|
1095
|
-
top: "border-t border-border"
|
|
1096
|
-
}
|
|
1097
|
-
}
|
|
1098
|
-
};
|
|
1099
|
-
|
|
1100
1194
|
// src/FOUNDATION/tokens/spacing.ts
|
|
1101
1195
|
var spacing = {
|
|
1102
1196
|
// Zero spacing
|
|
@@ -1483,609 +1577,87 @@ var ICON_TOKENS = {
|
|
|
1483
1577
|
}
|
|
1484
1578
|
};
|
|
1485
1579
|
|
|
1486
|
-
// src/FOUNDATION/tokens/components/
|
|
1487
|
-
var
|
|
1580
|
+
// src/FOUNDATION/tokens/components/input.ts
|
|
1581
|
+
var INPUT_TOKENS = {
|
|
1488
1582
|
/**
|
|
1489
|
-
*
|
|
1490
|
-
*
|
|
1583
|
+
* Input heights by size
|
|
1584
|
+
* Supports xs, sm, md, lg, xl sizes
|
|
1491
1585
|
*/
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
/**
|
|
1504
|
-
* Border styles
|
|
1505
|
-
* Maps to semantic border tokens
|
|
1506
|
-
*/
|
|
1507
|
-
border: {
|
|
1508
|
-
default: "border border-border",
|
|
1509
|
-
// Default border - maps to semantic border tokens
|
|
1510
|
-
hover: "hover:border-primary/20"
|
|
1511
|
-
// Hover state border with primary color at 20% opacity
|
|
1512
|
-
},
|
|
1513
|
-
/**
|
|
1514
|
-
* Border radius
|
|
1515
|
-
* References borderRadius.xl (0.75rem / 12px)
|
|
1516
|
-
* Using Tailwind class "rounded-xl" which maps to borderRadius.xl
|
|
1517
|
-
*/
|
|
1518
|
-
radius: {
|
|
1519
|
-
default: "rounded-xl"
|
|
1520
|
-
// References borderRadius.xl (0.75rem / 12px) via Tailwind
|
|
1521
|
-
},
|
|
1522
|
-
/**
|
|
1523
|
-
* Shadow (elevation) tokens
|
|
1524
|
-
* References elevationShadows.md
|
|
1525
|
-
* Using Tailwind class "shadow-md" which maps to elevationShadows.md
|
|
1526
|
-
*/
|
|
1527
|
-
shadow: {
|
|
1528
|
-
default: "shadow-md"
|
|
1529
|
-
// References elevationShadows.md via Tailwind
|
|
1530
|
-
},
|
|
1531
|
-
/**
|
|
1532
|
-
* Elevation change on hover
|
|
1533
|
-
* References elevationShadows.xl
|
|
1534
|
-
* Using Tailwind class "hover:shadow-xl" which maps to elevationShadows.xl
|
|
1535
|
-
*/
|
|
1536
|
-
elevation: {
|
|
1537
|
-
hover: "hover:shadow-xl"
|
|
1538
|
-
// References elevationShadows.xl via Tailwind
|
|
1539
|
-
}
|
|
1586
|
+
height: {
|
|
1587
|
+
xs: "h-7",
|
|
1588
|
+
// 28px (1.75rem)
|
|
1589
|
+
sm: "h-8",
|
|
1590
|
+
// 32px (2rem)
|
|
1591
|
+
md: "h-9",
|
|
1592
|
+
// 36px (2.25rem) - default
|
|
1593
|
+
lg: "h-10",
|
|
1594
|
+
// 40px (2.5rem)
|
|
1595
|
+
xl: "h-11"
|
|
1596
|
+
// 44px (2.75rem)
|
|
1540
1597
|
},
|
|
1541
1598
|
/**
|
|
1542
|
-
*
|
|
1543
|
-
*
|
|
1544
|
-
* Note: Tailwind classes are used for component className application
|
|
1599
|
+
* Input padding by size
|
|
1600
|
+
* Horizontal and vertical padding values
|
|
1545
1601
|
*/
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
*/
|
|
1559
|
-
badges: {
|
|
1560
|
-
offsetX: semanticSpacing.md,
|
|
1561
|
-
// Horizontal offset for badges (16px)
|
|
1562
|
-
offsetY: semanticSpacing.md
|
|
1563
|
-
// Vertical offset for badges (16px)
|
|
1564
|
-
},
|
|
1565
|
-
/**
|
|
1566
|
-
* Image spacing
|
|
1567
|
-
*/
|
|
1568
|
-
image: {
|
|
1569
|
-
bottomMargin: semanticSpacing.none
|
|
1570
|
-
// Margin below image (0px)
|
|
1571
|
-
},
|
|
1572
|
-
/**
|
|
1573
|
-
* Card vertical gap
|
|
1574
|
-
*/
|
|
1575
|
-
card: {
|
|
1576
|
-
verticalGap: semanticSpacing.md
|
|
1577
|
-
// Vertical gap in card content (16px)
|
|
1578
|
-
},
|
|
1579
|
-
/**
|
|
1580
|
-
* Metadata item gap
|
|
1581
|
-
*/
|
|
1582
|
-
metadata: {
|
|
1583
|
-
itemGap: semanticSpacing.xs
|
|
1584
|
-
// Gap between metadata items (4px)
|
|
1585
|
-
},
|
|
1586
|
-
/**
|
|
1587
|
-
* Footer spacing
|
|
1588
|
-
*/
|
|
1589
|
-
footer: {
|
|
1590
|
-
paddingTopDefault: "pt-sm",
|
|
1591
|
-
// Footer padding top default - references semanticSpacing.sm (8px) via Tailwind
|
|
1592
|
-
paddingTopCompact: "pt-xs"
|
|
1593
|
-
// Footer padding top compact - references semanticSpacing.xs (4px) via Tailwind
|
|
1602
|
+
padding: {
|
|
1603
|
+
horizontal: {
|
|
1604
|
+
xs: "px-xs",
|
|
1605
|
+
// 4px (0.25rem)
|
|
1606
|
+
sm: "px-sm",
|
|
1607
|
+
// 8px (0.5rem)
|
|
1608
|
+
md: "px-sm",
|
|
1609
|
+
// 8px (0.5rem) - default
|
|
1610
|
+
lg: "px-md",
|
|
1611
|
+
// 16px (1rem)
|
|
1612
|
+
xl: "px-lg"
|
|
1613
|
+
// 24px (1.5rem)
|
|
1594
1614
|
},
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1615
|
+
vertical: {
|
|
1616
|
+
xs: "py-xs",
|
|
1617
|
+
// 4px (0.25rem)
|
|
1618
|
+
sm: "py-xs",
|
|
1619
|
+
// 4px (0.25rem)
|
|
1620
|
+
md: "py-xs",
|
|
1621
|
+
// 4px (0.25rem) - default
|
|
1622
|
+
lg: "py-sm",
|
|
1623
|
+
// 8px (0.5rem)
|
|
1624
|
+
xl: "py-md"
|
|
1625
|
+
// 16px (1rem)
|
|
1605
1626
|
}
|
|
1606
1627
|
},
|
|
1607
1628
|
/**
|
|
1608
|
-
*
|
|
1609
|
-
* References semanticSpacing tokens
|
|
1610
|
-
* Note: Tailwind utilities are used for component className application
|
|
1629
|
+
* Border radius by size
|
|
1611
1630
|
*/
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
},
|
|
1624
|
-
/**
|
|
1625
|
-
* Gap tokens for spacing between card elements
|
|
1626
|
-
* References semanticSpacing (md = 16px, xs = 4px)
|
|
1627
|
-
* Note: "gap-md" and "gap-xs" are Tailwind utilities that apply semanticSpacing values
|
|
1628
|
-
*/
|
|
1629
|
-
gap: {
|
|
1630
|
-
default: "gap-md",
|
|
1631
|
-
// Default gap - references semanticSpacing.md (16px)
|
|
1632
|
-
compact: "gap-xs"
|
|
1633
|
-
// Compact variant gap - references semanticSpacing.xs (4px)
|
|
1634
|
-
}
|
|
1631
|
+
radius: {
|
|
1632
|
+
xs: "rounded-sm",
|
|
1633
|
+
// 4px (0.25rem)
|
|
1634
|
+
sm: "rounded-md",
|
|
1635
|
+
// 6px (0.375rem)
|
|
1636
|
+
md: "rounded-md",
|
|
1637
|
+
// 6px (0.375rem) - default
|
|
1638
|
+
lg: "rounded-md",
|
|
1639
|
+
// 6px (0.375rem)
|
|
1640
|
+
xl: "rounded-lg"
|
|
1641
|
+
// 8px (0.5rem)
|
|
1635
1642
|
},
|
|
1636
1643
|
/**
|
|
1637
|
-
*
|
|
1638
|
-
*
|
|
1644
|
+
* Font sizes by size variant
|
|
1645
|
+
* Maps to foundation typography fontSize tokens
|
|
1639
1646
|
*/
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
//
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
*/
|
|
1652
|
-
radius: "rounded-t-xl",
|
|
1653
|
-
// References borderRadius.xl (0.75rem / 12px) via Tailwind
|
|
1654
|
-
/**
|
|
1655
|
-
* Overlay gradient tokens for image overlays
|
|
1656
|
-
* Used for hover states and text readability
|
|
1657
|
-
*/
|
|
1658
|
-
overlay: {
|
|
1659
|
-
gradient: "bg-gradient-to-t from-black/60 via-transparent to-transparent"
|
|
1660
|
-
// Gradient overlay for image hover states
|
|
1661
|
-
},
|
|
1662
|
-
/**
|
|
1663
|
-
* Placeholder gradient tokens for image placeholders
|
|
1664
|
-
* Used when no image URL is provided
|
|
1665
|
-
*/
|
|
1666
|
-
placeholder: {
|
|
1667
|
-
gradient: "bg-gradient-to-br from-muted to-muted/50"
|
|
1668
|
-
// Placeholder gradient background
|
|
1669
|
-
}
|
|
1647
|
+
fontSize: {
|
|
1648
|
+
xs: "text-xs",
|
|
1649
|
+
// Maps to fontSize.xs[0]
|
|
1650
|
+
sm: "text-sm",
|
|
1651
|
+
// Maps to fontSize.sm[0]
|
|
1652
|
+
md: "text-base",
|
|
1653
|
+
// Maps to fontSize.base[0] - default
|
|
1654
|
+
lg: "text-base",
|
|
1655
|
+
// Maps to fontSize.base[0]
|
|
1656
|
+
xl: "text-lg"
|
|
1657
|
+
// Maps to fontSize.lg[0]
|
|
1670
1658
|
},
|
|
1671
1659
|
/**
|
|
1672
|
-
*
|
|
1673
|
-
* Defines hover states and line clamping for titles and descriptions
|
|
1674
|
-
*/
|
|
1675
|
-
text: {
|
|
1676
|
-
/**
|
|
1677
|
-
* Hover state tokens for text elements
|
|
1678
|
-
* Used for interactive text elements like titles
|
|
1679
|
-
*/
|
|
1680
|
-
hover: {
|
|
1681
|
-
primary: "group-hover:text-primary"
|
|
1682
|
-
// Hover state for primary text color
|
|
1683
|
-
},
|
|
1684
|
-
/**
|
|
1685
|
-
* Line clamp tokens for text truncation
|
|
1686
|
-
* Used for limiting text to specific number of lines
|
|
1687
|
-
*/
|
|
1688
|
-
lineClamp: {
|
|
1689
|
-
one: "line-clamp-1",
|
|
1690
|
-
// Single line clamp
|
|
1691
|
-
two: "line-clamp-2",
|
|
1692
|
-
// Two line clamp
|
|
1693
|
-
three: "line-clamp-3"
|
|
1694
|
-
// Three line clamp
|
|
1695
|
-
}
|
|
1696
|
-
},
|
|
1697
|
-
/**
|
|
1698
|
-
* Metadata tokens for card information displays
|
|
1699
|
-
* Used for date/time, location, and other metadata patterns
|
|
1700
|
-
* Maps to TEXT_TOKENS, ICON_TOKENS, and semanticSpacing
|
|
1701
|
-
*/
|
|
1702
|
-
metadata: {
|
|
1703
|
-
/**
|
|
1704
|
-
* Text color tokens
|
|
1705
|
-
* Maps to semantic text color tokens
|
|
1706
|
-
*/
|
|
1707
|
-
text: {
|
|
1708
|
-
primary: "text-foreground",
|
|
1709
|
-
// Primary metadata text - maps to semantic text color
|
|
1710
|
-
secondary: "text-muted-foreground"
|
|
1711
|
-
// Secondary metadata text - maps to semantic muted text color
|
|
1712
|
-
},
|
|
1713
|
-
/**
|
|
1714
|
-
* Icon tokens
|
|
1715
|
-
* Maps to ICON_TOKENS for sizes and colors
|
|
1716
|
-
*/
|
|
1717
|
-
icon: {
|
|
1718
|
-
default: "text-muted-foreground",
|
|
1719
|
-
// Default icon color - maps to ICON_TOKENS.colors.muted
|
|
1720
|
-
sizeSm: ICON_TOKENS.sizes.md
|
|
1721
|
-
// Small icon size - references ICON_TOKENS.sizes.md (16px)
|
|
1722
|
-
},
|
|
1723
|
-
/**
|
|
1724
|
-
* Spacing tokens for metadata layouts
|
|
1725
|
-
* References semanticSpacing (xs = 4px, sm = 8px)
|
|
1726
|
-
* Using Tailwind classes which map to semanticSpacing values
|
|
1727
|
-
*/
|
|
1728
|
-
spacing: {
|
|
1729
|
-
vertical: "gap-xs",
|
|
1730
|
-
// References semanticSpacing.xs (4px) via Tailwind
|
|
1731
|
-
horizontal: "gap-sm"
|
|
1732
|
-
// References semanticSpacing.sm (8px) via Tailwind
|
|
1733
|
-
}
|
|
1734
|
-
},
|
|
1735
|
-
/**
|
|
1736
|
-
* Badge tokens for featured/popular badges
|
|
1737
|
-
* References semanticSpacing, borderRadius, and elevationShadows
|
|
1738
|
-
*/
|
|
1739
|
-
badges: {
|
|
1740
|
-
/**
|
|
1741
|
-
* Badge size tokens (padding)
|
|
1742
|
-
* References semanticSpacing for padding values
|
|
1743
|
-
* Using Tailwind classes which map to semanticSpacing values
|
|
1744
|
-
*/
|
|
1745
|
-
size: {
|
|
1746
|
-
sm: "px-xs py-xs",
|
|
1747
|
-
// References semanticSpacing.xs (4px) for both horizontal and vertical via Tailwind
|
|
1748
|
-
md: "px-sm py-xs"
|
|
1749
|
-
// References semanticSpacing.sm (8px) horizontal, semanticSpacing.xs (4px) vertical via Tailwind
|
|
1750
|
-
},
|
|
1751
|
-
/**
|
|
1752
|
-
* Badge positioning tokens
|
|
1753
|
-
* References semanticSpacing for absolute positioning
|
|
1754
|
-
* Using Tailwind classes which map to semanticSpacing values
|
|
1755
|
-
*/
|
|
1756
|
-
position: {
|
|
1757
|
-
default: "right-md top-md",
|
|
1758
|
-
// References semanticSpacing.md (16px) for both right and top via Tailwind
|
|
1759
|
-
compact: "right-sm top-sm"
|
|
1760
|
-
// References semanticSpacing.sm (8px) for both right and top via Tailwind
|
|
1761
|
-
},
|
|
1762
|
-
/**
|
|
1763
|
-
* Additional vertical positioning tokens for multi-badge scenarios
|
|
1764
|
-
* References semanticSpacing for top positioning
|
|
1765
|
-
* Using Tailwind classes which map to semanticSpacing values
|
|
1766
|
-
*/
|
|
1767
|
-
positionY: {
|
|
1768
|
-
xl: "top-xl",
|
|
1769
|
-
// References semanticSpacing.xl (32px) via Tailwind
|
|
1770
|
-
"2xl": "top-2xl",
|
|
1771
|
-
// References semanticSpacing["2xl"] (48px) via Tailwind
|
|
1772
|
-
"3xl": "top-3xl"
|
|
1773
|
-
// References semanticSpacing["3xl"] (64px) via Tailwind
|
|
1774
|
-
},
|
|
1775
|
-
/**
|
|
1776
|
-
* Badge surface (background) tokens
|
|
1777
|
-
* Maps to semantic color tokens
|
|
1778
|
-
*/
|
|
1779
|
-
surface: {
|
|
1780
|
-
default: "bg-primary",
|
|
1781
|
-
// Default badge background - maps to semantic primary color
|
|
1782
|
-
featured: "bg-gradient-to-r from-accent-500 to-primary-600"
|
|
1783
|
-
// Featured badge gradient
|
|
1784
|
-
},
|
|
1785
|
-
/**
|
|
1786
|
-
* Badge text color
|
|
1787
|
-
* White for contrast on colored backgrounds
|
|
1788
|
-
*/
|
|
1789
|
-
text: {
|
|
1790
|
-
color: "text-white"
|
|
1791
|
-
// Badge text color - white for contrast on colored backgrounds
|
|
1792
|
-
},
|
|
1793
|
-
/**
|
|
1794
|
-
* Badge border radius
|
|
1795
|
-
* References borderRadius.full (pill shape)
|
|
1796
|
-
* Using Tailwind class "rounded-full" which maps to borderRadius.full
|
|
1797
|
-
*/
|
|
1798
|
-
radius: "rounded-full",
|
|
1799
|
-
// References borderRadius.full via Tailwind
|
|
1800
|
-
/**
|
|
1801
|
-
* Badge shadow
|
|
1802
|
-
* References elevationShadows.lg
|
|
1803
|
-
* Using Tailwind class "shadow-lg" which maps to elevationShadows.lg
|
|
1804
|
-
*/
|
|
1805
|
-
shadow: "shadow-lg"
|
|
1806
|
-
// References elevationShadows.lg via Tailwind
|
|
1807
|
-
},
|
|
1808
|
-
/**
|
|
1809
|
-
* Price/Capacity tokens for displaying price and capacity information
|
|
1810
|
-
* Maps to semantic text color tokens and semanticSpacing
|
|
1811
|
-
*/
|
|
1812
|
-
priceCapacity: {
|
|
1813
|
-
/**
|
|
1814
|
-
* Text color tokens
|
|
1815
|
-
* Maps to semantic text color tokens
|
|
1816
|
-
*/
|
|
1817
|
-
text: {
|
|
1818
|
-
primary: "text-foreground",
|
|
1819
|
-
// Primary price/capacity text - maps to semantic text color
|
|
1820
|
-
secondary: "text-muted-foreground"
|
|
1821
|
-
// Secondary price/capacity text - maps to semantic muted text color
|
|
1822
|
-
},
|
|
1823
|
-
/**
|
|
1824
|
-
* Spacing between price and capacity elements
|
|
1825
|
-
* References semanticSpacing.sm (8px)
|
|
1826
|
-
* Using Tailwind class "gap-sm" which maps to semanticSpacing.sm
|
|
1827
|
-
*/
|
|
1828
|
-
spacing: "gap-sm"
|
|
1829
|
-
// References semanticSpacing.sm (8px) via Tailwind
|
|
1830
|
-
},
|
|
1831
|
-
/**
|
|
1832
|
-
* Motion tokens for hover and interaction states
|
|
1833
|
-
* References MOTION_TOKENS for transitions and animations
|
|
1834
|
-
*/
|
|
1835
|
-
motion: {
|
|
1836
|
-
/**
|
|
1837
|
-
* Hover state tokens
|
|
1838
|
-
* References MOTION_TOKENS and elevationShadows
|
|
1839
|
-
*/
|
|
1840
|
-
hover: {
|
|
1841
|
-
transition: MOTION_TOKENS.transitionPreset.normal,
|
|
1842
|
-
// References MOTION_TOKENS.transitionPreset.normal
|
|
1843
|
-
scale: "hover:scale-110",
|
|
1844
|
-
// Hover scale transform (110% scale) - domain-specific value
|
|
1845
|
-
elevation: "hover:shadow-xl"
|
|
1846
|
-
// References elevationShadows.xl via Tailwind
|
|
1847
|
-
}
|
|
1848
|
-
},
|
|
1849
|
-
/**
|
|
1850
|
-
* Skeleton tokens for loading states
|
|
1851
|
-
* References DATA_TOKENS.skeleton for skeleton patterns and semanticSpacing for dimensions
|
|
1852
|
-
*/
|
|
1853
|
-
skeleton: {
|
|
1854
|
-
/**
|
|
1855
|
-
* Base skeleton wrapper tokens
|
|
1856
|
-
* Default styling for skeleton wrapper components
|
|
1857
|
-
*/
|
|
1858
|
-
base: {
|
|
1859
|
-
/**
|
|
1860
|
-
* Default border radius for skeleton wrapper
|
|
1861
|
-
* References DATA_TOKENS.skeleton.radius.text
|
|
1862
|
-
*/
|
|
1863
|
-
radius: DATA_TOKENS.skeleton.radius.text,
|
|
1864
|
-
/**
|
|
1865
|
-
* Default animation for skeleton wrapper
|
|
1866
|
-
* References DATA_TOKENS.skeleton.animation.pulse
|
|
1867
|
-
*/
|
|
1868
|
-
animation: DATA_TOKENS.skeleton.animation.pulse,
|
|
1869
|
-
/**
|
|
1870
|
-
* Default background for skeleton wrapper
|
|
1871
|
-
* References DATA_TOKENS.skeleton.background.default
|
|
1872
|
-
*/
|
|
1873
|
-
background: DATA_TOKENS.skeleton.background.default
|
|
1874
|
-
},
|
|
1875
|
-
/**
|
|
1876
|
-
* Image skeleton height
|
|
1877
|
-
* Domain-specific: card images need 192px (spacing[48] = 12rem)
|
|
1878
|
-
* Note: DATA_TOKENS.skeleton.height.card is 128px, but card images need 192px
|
|
1879
|
-
* Using Tailwind class "h-48" which maps to spacing[48] (12rem / 192px)
|
|
1880
|
-
*/
|
|
1881
|
-
image: {
|
|
1882
|
-
height: "h-48"
|
|
1883
|
-
// References spacing[48] (12rem / 192px) via Tailwind
|
|
1884
|
-
},
|
|
1885
|
-
/**
|
|
1886
|
-
* Content gap for skeleton elements
|
|
1887
|
-
* References semanticSpacing.md (16px)
|
|
1888
|
-
* Using Tailwind class "gap-md" which maps to semanticSpacing.md
|
|
1889
|
-
*/
|
|
1890
|
-
content: {
|
|
1891
|
-
gap: "gap-md",
|
|
1892
|
-
// References semanticSpacing.md (16px) via Tailwind
|
|
1893
|
-
/**
|
|
1894
|
-
* Content width tokens for skeleton elements
|
|
1895
|
-
* References DATA_TOKENS where available, uses Tailwind fraction classes for domain-specific values
|
|
1896
|
-
*/
|
|
1897
|
-
width: {
|
|
1898
|
-
full: DATA_TOKENS.skeleton.width.full,
|
|
1899
|
-
// References DATA_TOKENS.skeleton.width.full
|
|
1900
|
-
threeQuarters: "w-3/4",
|
|
1901
|
-
// Three quarters width (75%) - domain-specific, using Tailwind fraction
|
|
1902
|
-
half: "w-1/2"
|
|
1903
|
-
// Half width (50%) - domain-specific, using Tailwind fraction
|
|
1904
|
-
}
|
|
1905
|
-
},
|
|
1906
|
-
/**
|
|
1907
|
-
* Badge skeleton dimensions
|
|
1908
|
-
* Domain-specific values for badge skeleton sizing
|
|
1909
|
-
* References spacing values via Tailwind classes
|
|
1910
|
-
*/
|
|
1911
|
-
badge: {
|
|
1912
|
-
width: "w-20",
|
|
1913
|
-
// References spacing[20] (5rem / 80px) via Tailwind
|
|
1914
|
-
height: "h-6"
|
|
1915
|
-
// References spacing[6] (1.5rem / 24px) via Tailwind
|
|
1916
|
-
}
|
|
1917
|
-
},
|
|
1918
|
-
/**
|
|
1919
|
-
* CTA (Call-to-Action) button tokens for domain card components
|
|
1920
|
-
* Provides PromoCard-specific CTA button styling tokens
|
|
1921
|
-
* These tokens are semantically owned by domain card components, not by the Button component
|
|
1922
|
-
* References foundation tokens (spacing, typography, radius, shadows, motion) for consistency
|
|
1923
|
-
*/
|
|
1924
|
-
cta: {
|
|
1925
|
-
/**
|
|
1926
|
-
* CTA button styling tokens
|
|
1927
|
-
* Used by PromoCard and other domain card components for CTA button elements
|
|
1928
|
-
*/
|
|
1929
|
-
button: {
|
|
1930
|
-
/**
|
|
1931
|
-
* Button heights by size
|
|
1932
|
-
* Maps to Tailwind height utilities: h-8, h-9
|
|
1933
|
-
*/
|
|
1934
|
-
height: {
|
|
1935
|
-
sm: "h-8",
|
|
1936
|
-
// 32px (2rem) - compact size
|
|
1937
|
-
md: "h-9"
|
|
1938
|
-
// 36px (2.25rem) - default size
|
|
1939
|
-
},
|
|
1940
|
-
/**
|
|
1941
|
-
* Button padding by size
|
|
1942
|
-
* Horizontal and vertical padding values
|
|
1943
|
-
* References semanticSpacing tokens
|
|
1944
|
-
*/
|
|
1945
|
-
padding: {
|
|
1946
|
-
horizontal: {
|
|
1947
|
-
sm: "px-sm",
|
|
1948
|
-
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
1949
|
-
md: "px-md"
|
|
1950
|
-
// 16px (1rem) - maps to semanticSpacing.md
|
|
1951
|
-
},
|
|
1952
|
-
vertical: {
|
|
1953
|
-
sm: "py-xs"
|
|
1954
|
-
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
1955
|
-
}
|
|
1956
|
-
},
|
|
1957
|
-
/**
|
|
1958
|
-
* Border radius for CTA buttons
|
|
1959
|
-
* References borderRadius.md (6px / 0.375rem)
|
|
1960
|
-
* Using Tailwind class "rounded-md" which maps to borderRadius.md
|
|
1961
|
-
*/
|
|
1962
|
-
radius: "rounded-md",
|
|
1963
|
-
// References borderRadius.md via Tailwind
|
|
1964
|
-
/**
|
|
1965
|
-
* Font sizes by button size
|
|
1966
|
-
* Maps to foundation typography fontSize tokens
|
|
1967
|
-
*/
|
|
1968
|
-
fontSize: {
|
|
1969
|
-
sm: "text-xs",
|
|
1970
|
-
// Maps to fontSize.xs[0]
|
|
1971
|
-
md: "text-sm"
|
|
1972
|
-
// Maps to fontSize.sm[0]
|
|
1973
|
-
},
|
|
1974
|
-
/**
|
|
1975
|
-
* Shadow tokens for CTA buttons
|
|
1976
|
-
* Maps to foundation elevation shadow tokens
|
|
1977
|
-
*/
|
|
1978
|
-
shadow: {
|
|
1979
|
-
primary: "shadow"
|
|
1980
|
-
// Maps to elevationShadows.xs (primary variant uses shadow)
|
|
1981
|
-
},
|
|
1982
|
-
/**
|
|
1983
|
-
* Color tokens for CTA button variants
|
|
1984
|
-
* Uses semantic color tokens that map to CSS variables
|
|
1985
|
-
*/
|
|
1986
|
-
variant: {
|
|
1987
|
-
primary: {
|
|
1988
|
-
background: "bg-primary",
|
|
1989
|
-
// Primary background using CSS var
|
|
1990
|
-
text: "text-primary-foreground",
|
|
1991
|
-
// Primary text using CSS var
|
|
1992
|
-
hover: "hover:bg-primary/90"
|
|
1993
|
-
// Primary hover using CSS var
|
|
1994
|
-
}
|
|
1995
|
-
},
|
|
1996
|
-
/**
|
|
1997
|
-
* Transition tokens for CTA buttons
|
|
1998
|
-
* References MOTION_TOKENS for transitions
|
|
1999
|
-
*/
|
|
2000
|
-
transition: {
|
|
2001
|
-
colors: "transition-colors"
|
|
2002
|
-
// Color transition using motion tokens
|
|
2003
|
-
}
|
|
2004
|
-
}
|
|
2005
|
-
}
|
|
2006
|
-
};
|
|
2007
|
-
|
|
2008
|
-
// src/FOUNDATION/tokens/components/input.ts
|
|
2009
|
-
var INPUT_TOKENS = {
|
|
2010
|
-
/**
|
|
2011
|
-
* Input heights by size
|
|
2012
|
-
* Supports xs, sm, md, lg, xl sizes
|
|
2013
|
-
*/
|
|
2014
|
-
height: {
|
|
2015
|
-
xs: "h-7",
|
|
2016
|
-
// 28px (1.75rem)
|
|
2017
|
-
sm: "h-8",
|
|
2018
|
-
// 32px (2rem)
|
|
2019
|
-
md: "h-9",
|
|
2020
|
-
// 36px (2.25rem) - default
|
|
2021
|
-
lg: "h-10",
|
|
2022
|
-
// 40px (2.5rem)
|
|
2023
|
-
xl: "h-11"
|
|
2024
|
-
// 44px (2.75rem)
|
|
2025
|
-
},
|
|
2026
|
-
/**
|
|
2027
|
-
* Input padding by size
|
|
2028
|
-
* Horizontal and vertical padding values
|
|
2029
|
-
*/
|
|
2030
|
-
padding: {
|
|
2031
|
-
horizontal: {
|
|
2032
|
-
xs: "px-xs",
|
|
2033
|
-
// 4px (0.25rem)
|
|
2034
|
-
sm: "px-sm",
|
|
2035
|
-
// 8px (0.5rem)
|
|
2036
|
-
md: "px-sm",
|
|
2037
|
-
// 8px (0.5rem) - default
|
|
2038
|
-
lg: "px-md",
|
|
2039
|
-
// 16px (1rem)
|
|
2040
|
-
xl: "px-lg"
|
|
2041
|
-
// 24px (1.5rem)
|
|
2042
|
-
},
|
|
2043
|
-
vertical: {
|
|
2044
|
-
xs: "py-xs",
|
|
2045
|
-
// 4px (0.25rem)
|
|
2046
|
-
sm: "py-xs",
|
|
2047
|
-
// 4px (0.25rem)
|
|
2048
|
-
md: "py-xs",
|
|
2049
|
-
// 4px (0.25rem) - default
|
|
2050
|
-
lg: "py-sm",
|
|
2051
|
-
// 8px (0.5rem)
|
|
2052
|
-
xl: "py-md"
|
|
2053
|
-
// 16px (1rem)
|
|
2054
|
-
}
|
|
2055
|
-
},
|
|
2056
|
-
/**
|
|
2057
|
-
* Border radius by size
|
|
2058
|
-
*/
|
|
2059
|
-
radius: {
|
|
2060
|
-
xs: "rounded-sm",
|
|
2061
|
-
// 4px (0.25rem)
|
|
2062
|
-
sm: "rounded-md",
|
|
2063
|
-
// 6px (0.375rem)
|
|
2064
|
-
md: "rounded-md",
|
|
2065
|
-
// 6px (0.375rem) - default
|
|
2066
|
-
lg: "rounded-md",
|
|
2067
|
-
// 6px (0.375rem)
|
|
2068
|
-
xl: "rounded-lg"
|
|
2069
|
-
// 8px (0.5rem)
|
|
2070
|
-
},
|
|
2071
|
-
/**
|
|
2072
|
-
* Font sizes by size variant
|
|
2073
|
-
* Maps to foundation typography fontSize tokens
|
|
2074
|
-
*/
|
|
2075
|
-
fontSize: {
|
|
2076
|
-
xs: "text-xs",
|
|
2077
|
-
// Maps to fontSize.xs[0]
|
|
2078
|
-
sm: "text-sm",
|
|
2079
|
-
// Maps to fontSize.sm[0]
|
|
2080
|
-
md: "text-base",
|
|
2081
|
-
// Maps to fontSize.base[0] - default
|
|
2082
|
-
lg: "text-base",
|
|
2083
|
-
// Maps to fontSize.base[0]
|
|
2084
|
-
xl: "text-lg"
|
|
2085
|
-
// Maps to fontSize.lg[0]
|
|
2086
|
-
},
|
|
2087
|
-
/**
|
|
2088
|
-
* Responsive font size (md breakpoint)
|
|
1660
|
+
* Responsive font size (md breakpoint)
|
|
2089
1661
|
*/
|
|
2090
1662
|
fontSizeResponsive: {
|
|
2091
1663
|
md: "md:text-sm"
|
|
@@ -5502,41 +5074,246 @@ var EMPTY_STATE_TOKENS = {
|
|
|
5502
5074
|
center: "text-center"}
|
|
5503
5075
|
};
|
|
5504
5076
|
|
|
5505
|
-
// src/FOUNDATION/tokens/
|
|
5506
|
-
var
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
// Strong, decisive
|
|
5523
|
-
};
|
|
5524
|
-
var motionV2Transitions = {
|
|
5525
|
-
fast: `${motionV2Durations.fast} ${motionV2Easings.standard}`,
|
|
5526
|
-
normal: `${motionV2Durations.normal} ${motionV2Easings.standard}`,
|
|
5527
|
-
slow: `${motionV2Durations.slow} ${motionV2Easings.emphasized}`,
|
|
5528
|
-
soft: `${motionV2Durations.normal} ${motionV2Easings.soft}`,
|
|
5529
|
-
reduced: `${motionV2Durations.reduced} linear`
|
|
5530
|
-
};
|
|
5531
|
-
var motionV2Fade = {
|
|
5532
|
-
in: {
|
|
5533
|
-
from: { opacity: 0 },
|
|
5534
|
-
to: { opacity: 1 }
|
|
5077
|
+
// src/FOUNDATION/tokens/components/link.ts
|
|
5078
|
+
var LINK_TOKENS = {
|
|
5079
|
+
/**
|
|
5080
|
+
* Link heights by size
|
|
5081
|
+
* Maps to Tailwind height utilities
|
|
5082
|
+
*/
|
|
5083
|
+
height: {
|
|
5084
|
+
xs: "h-7",
|
|
5085
|
+
// 28px (1.75rem)
|
|
5086
|
+
sm: "h-8",
|
|
5087
|
+
// 32px (2rem)
|
|
5088
|
+
md: "h-9",
|
|
5089
|
+
// 36px (2.25rem)
|
|
5090
|
+
lg: "h-10",
|
|
5091
|
+
// 40px (2.5rem)
|
|
5092
|
+
xl: "h-11"
|
|
5093
|
+
// 44px (2.75rem)
|
|
5535
5094
|
},
|
|
5536
|
-
|
|
5537
|
-
|
|
5538
|
-
|
|
5539
|
-
|
|
5095
|
+
/**
|
|
5096
|
+
* Link padding by size
|
|
5097
|
+
* Horizontal and vertical padding values
|
|
5098
|
+
*/
|
|
5099
|
+
padding: {
|
|
5100
|
+
horizontal: {
|
|
5101
|
+
xs: "px-xs",
|
|
5102
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5103
|
+
sm: "px-sm",
|
|
5104
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5105
|
+
md: "px-md",
|
|
5106
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5107
|
+
lg: "px-lg",
|
|
5108
|
+
// 24px (1.5rem) - maps to semanticSpacing.lg
|
|
5109
|
+
xl: "px-xl"
|
|
5110
|
+
// 32px (2rem) - maps to semanticSpacing.xl
|
|
5111
|
+
},
|
|
5112
|
+
vertical: {
|
|
5113
|
+
xs: "py-xs",
|
|
5114
|
+
// 4px (0.25rem) - maps to semanticSpacing.xs
|
|
5115
|
+
sm: "py-sm",
|
|
5116
|
+
// 8px (0.5rem) - maps to semanticSpacing.sm
|
|
5117
|
+
md: "py-md"
|
|
5118
|
+
// 16px (1rem) - maps to semanticSpacing.md
|
|
5119
|
+
}
|
|
5120
|
+
},
|
|
5121
|
+
/**
|
|
5122
|
+
* Layout tokens
|
|
5123
|
+
* Base layout utilities for link component
|
|
5124
|
+
*/
|
|
5125
|
+
layout: "inline-flex items-center justify-center whitespace-nowrap",
|
|
5126
|
+
// Base layout for link container
|
|
5127
|
+
/**
|
|
5128
|
+
* Font weight token
|
|
5129
|
+
* References foundation typography fontWeight tokens from Typography Authority
|
|
5130
|
+
*
|
|
5131
|
+
* @rule References fontWeight.medium (500) from Typography Authority
|
|
5132
|
+
* @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
|
|
5133
|
+
*/
|
|
5134
|
+
fontWeight: "font-medium",
|
|
5135
|
+
// References fontWeight.medium (500) - Typography Authority compliant
|
|
5136
|
+
/**
|
|
5137
|
+
* Icon wrapper layout
|
|
5138
|
+
* Layout utilities for icon containers
|
|
5139
|
+
*/
|
|
5140
|
+
iconWrapper: "inline-flex items-center",
|
|
5141
|
+
// Layout for left/right icon wrappers
|
|
5142
|
+
/**
|
|
5143
|
+
* Font sizes by link size
|
|
5144
|
+
* References foundation typography fontSize tokens from Typography Authority
|
|
5145
|
+
*
|
|
5146
|
+
* @rule All fontSize values reference Typography Authority tokens
|
|
5147
|
+
* @see docs/architecture/TYPOGRAPHY_AUTHORITY_CONTRACT.md
|
|
5148
|
+
*/
|
|
5149
|
+
fontSize: {
|
|
5150
|
+
xs: "text-xs",
|
|
5151
|
+
// References fontSize.xs[0] from Typography Authority (~12px)
|
|
5152
|
+
sm: "text-xs",
|
|
5153
|
+
// References fontSize.xs[0] from Typography Authority (~12px)
|
|
5154
|
+
md: "text-sm",
|
|
5155
|
+
// References fontSize.sm[0] from Typography Authority (~14px)
|
|
5156
|
+
lg: "text-sm",
|
|
5157
|
+
// References fontSize.sm[0] from Typography Authority (~14px)
|
|
5158
|
+
xl: "text-base"
|
|
5159
|
+
// References fontSize.base[0] from Typography Authority (~16px)
|
|
5160
|
+
},
|
|
5161
|
+
/**
|
|
5162
|
+
* Border radius for outline and ghost variants
|
|
5163
|
+
* References componentRadius from Radius Authority
|
|
5164
|
+
*
|
|
5165
|
+
* @rule References borderRadius.md (6px / 0.375rem) from Radius Authority
|
|
5166
|
+
* @see docs/architecture/RADIUS_AUTHORITY_CONTRACT.md
|
|
5167
|
+
*/
|
|
5168
|
+
radius: "rounded-md",
|
|
5169
|
+
// References borderRadius.md (6px / 0.375rem) - Radius Authority compliant
|
|
5170
|
+
/**
|
|
5171
|
+
* Underline offset for text decoration
|
|
5172
|
+
* Uses spacing token (xs = 4px) which matches underline-offset-4
|
|
5173
|
+
*/
|
|
5174
|
+
underlineOffset: "underline-offset-4",
|
|
5175
|
+
// 4px (0.25rem) - matches semanticSpacing.xs
|
|
5176
|
+
/**
|
|
5177
|
+
* Transition tokens
|
|
5178
|
+
* References Motion Authority tokens for consistent motion behavior
|
|
5179
|
+
*
|
|
5180
|
+
* @rule Uses MOTION_TOKENS.transitionPreset.colors from Motion Authority
|
|
5181
|
+
* @rule Motion transitions MUST use canonical motion tokens only
|
|
5182
|
+
* @see docs/architecture/MOTION_AUTHORITY_CONTRACT.md
|
|
5183
|
+
*/
|
|
5184
|
+
transition: {
|
|
5185
|
+
colors: MOTION_TOKENS.transitionPreset.colors
|
|
5186
|
+
// "transition-colors duration-normal ease-out" - Motion Authority compliant
|
|
5187
|
+
},
|
|
5188
|
+
/**
|
|
5189
|
+
* Focus state tokens
|
|
5190
|
+
* Focus ring for keyboard navigation
|
|
5191
|
+
*
|
|
5192
|
+
* @rule Focus MUST use focus-visible: prefix (keyboard navigation only)
|
|
5193
|
+
* @rule Focus MUST be blocked when disabled={true}
|
|
5194
|
+
*/
|
|
5195
|
+
focus: {
|
|
5196
|
+
ring: "focus-visible:ring-2 focus-visible:ring-ring",
|
|
5197
|
+
// Focus ring using semantic ring color
|
|
5198
|
+
outline: "focus-visible:outline-none",
|
|
5199
|
+
// Remove default outline (replaced by ring)
|
|
5200
|
+
offset: "focus-visible:ring-offset-2"
|
|
5201
|
+
// Ring offset
|
|
5202
|
+
},
|
|
5203
|
+
/**
|
|
5204
|
+
* Disabled state tokens
|
|
5205
|
+
*/
|
|
5206
|
+
state: {
|
|
5207
|
+
disabled: {
|
|
5208
|
+
pointerEvents: "disabled:pointer-events-none",
|
|
5209
|
+
// Disable pointer events
|
|
5210
|
+
opacity: "disabled:opacity-50"
|
|
5211
|
+
// Disabled opacity
|
|
5212
|
+
}
|
|
5213
|
+
},
|
|
5214
|
+
/**
|
|
5215
|
+
* Color tokens for link variants
|
|
5216
|
+
* Uses semantic color tokens that map to CSS variables
|
|
5217
|
+
*/
|
|
5218
|
+
variant: {
|
|
5219
|
+
primary: {
|
|
5220
|
+
text: "text-primary",
|
|
5221
|
+
// Primary text using CSS var
|
|
5222
|
+
hover: "hover:text-primary/80",
|
|
5223
|
+
// Primary hover text
|
|
5224
|
+
underline: "hover:underline"
|
|
5225
|
+
// Underline on hover
|
|
5226
|
+
},
|
|
5227
|
+
secondary: {
|
|
5228
|
+
text: "text-secondary-foreground",
|
|
5229
|
+
// Secondary text using CSS var
|
|
5230
|
+
hover: "hover:underline"
|
|
5231
|
+
// Underline on hover
|
|
5232
|
+
},
|
|
5233
|
+
accent: {
|
|
5234
|
+
text: "text-accent-foreground",
|
|
5235
|
+
// Accent text using CSS var
|
|
5236
|
+
hover: "hover:text-accent-foreground/80",
|
|
5237
|
+
// Accent hover text
|
|
5238
|
+
underline: "hover:underline"
|
|
5239
|
+
// Underline on hover
|
|
5240
|
+
},
|
|
5241
|
+
outline: {
|
|
5242
|
+
border: "border border-input",
|
|
5243
|
+
// Input border using CSS var
|
|
5244
|
+
background: "bg-background",
|
|
5245
|
+
// Background using CSS var
|
|
5246
|
+
text: "text-foreground",
|
|
5247
|
+
// Foreground text using CSS var
|
|
5248
|
+
hover: {
|
|
5249
|
+
background: "hover:bg-accent",
|
|
5250
|
+
// Hover background
|
|
5251
|
+
text: "hover:text-accent-foreground"
|
|
5252
|
+
// Hover text
|
|
5253
|
+
}
|
|
5254
|
+
},
|
|
5255
|
+
ghost: {
|
|
5256
|
+
text: "text-foreground",
|
|
5257
|
+
// Foreground text using CSS var
|
|
5258
|
+
hover: {
|
|
5259
|
+
background: "hover:bg-accent",
|
|
5260
|
+
// Hover background
|
|
5261
|
+
text: "hover:text-accent-foreground"
|
|
5262
|
+
// Hover text
|
|
5263
|
+
}
|
|
5264
|
+
},
|
|
5265
|
+
link: {
|
|
5266
|
+
text: "text-primary",
|
|
5267
|
+
// Primary text using CSS var
|
|
5268
|
+
hover: "hover:underline"
|
|
5269
|
+
// Underline on hover
|
|
5270
|
+
},
|
|
5271
|
+
destructive: {
|
|
5272
|
+
text: "text-destructive",
|
|
5273
|
+
// Destructive text using CSS var
|
|
5274
|
+
hover: "hover:text-destructive/80",
|
|
5275
|
+
// Destructive hover text
|
|
5276
|
+
underline: "hover:underline"
|
|
5277
|
+
// Underline on hover
|
|
5278
|
+
}
|
|
5279
|
+
}
|
|
5280
|
+
};
|
|
5281
|
+
|
|
5282
|
+
// src/FOUNDATION/tokens/motion/v2.ts
|
|
5283
|
+
var motionV2Durations = {
|
|
5284
|
+
fast: "150ms",
|
|
5285
|
+
// Quick interactions
|
|
5286
|
+
normal: "250ms",
|
|
5287
|
+
// Default transitions
|
|
5288
|
+
slow: "350ms",
|
|
5289
|
+
// Emphasized animations
|
|
5290
|
+
reduced: "0ms"
|
|
5291
|
+
// For prefers-reduced-motion
|
|
5292
|
+
};
|
|
5293
|
+
var motionV2Easings = {
|
|
5294
|
+
soft: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
5295
|
+
// Gentle, smooth
|
|
5296
|
+
standard: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
5297
|
+
// Material Design standard
|
|
5298
|
+
emphasized: "cubic-bezier(0.2, 0, 0, 1)"
|
|
5299
|
+
// Strong, decisive
|
|
5300
|
+
};
|
|
5301
|
+
var motionV2Transitions = {
|
|
5302
|
+
fast: `${motionV2Durations.fast} ${motionV2Easings.standard}`,
|
|
5303
|
+
normal: `${motionV2Durations.normal} ${motionV2Easings.standard}`,
|
|
5304
|
+
slow: `${motionV2Durations.slow} ${motionV2Easings.emphasized}`,
|
|
5305
|
+
soft: `${motionV2Durations.normal} ${motionV2Easings.soft}`,
|
|
5306
|
+
reduced: `${motionV2Durations.reduced} linear`
|
|
5307
|
+
};
|
|
5308
|
+
var motionV2Fade = {
|
|
5309
|
+
in: {
|
|
5310
|
+
from: { opacity: 0 },
|
|
5311
|
+
to: { opacity: 1 }
|
|
5312
|
+
},
|
|
5313
|
+
out: {
|
|
5314
|
+
from: { opacity: 1 },
|
|
5315
|
+
to: { opacity: 0 }
|
|
5316
|
+
}
|
|
5540
5317
|
};
|
|
5541
5318
|
var motionV2Scale = {
|
|
5542
5319
|
in: {
|
|
@@ -6899,13 +6676,6 @@ function tokenCVA(config) {
|
|
|
6899
6676
|
function cn(...inputs) {
|
|
6900
6677
|
return twMerge(clsx(inputs));
|
|
6901
6678
|
}
|
|
6902
|
-
function formatDate(date) {
|
|
6903
|
-
return new Intl.DateTimeFormat("en-US", {
|
|
6904
|
-
month: "long",
|
|
6905
|
-
day: "numeric",
|
|
6906
|
-
year: "numeric"
|
|
6907
|
-
}).format(new Date(date));
|
|
6908
|
-
}
|
|
6909
6679
|
var buttonVariants = tokenCVA({
|
|
6910
6680
|
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`,
|
|
6911
6681
|
variants: {
|
|
@@ -6929,7 +6699,7 @@ var buttonVariants = tokenCVA({
|
|
|
6929
6699
|
size: "md"
|
|
6930
6700
|
}
|
|
6931
6701
|
});
|
|
6932
|
-
var Button =
|
|
6702
|
+
var Button = React49.forwardRef(
|
|
6933
6703
|
({ className, variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
|
|
6934
6704
|
const Comp = asChild ? Slot : "button";
|
|
6935
6705
|
const finalClassName = cn(buttonVariants({ variant, size, className }));
|
|
@@ -7035,7 +6805,7 @@ var textVariants = cva("text-foreground", {
|
|
|
7035
6805
|
muted: false
|
|
7036
6806
|
}
|
|
7037
6807
|
});
|
|
7038
|
-
var Text =
|
|
6808
|
+
var Text = React49.forwardRef(
|
|
7039
6809
|
({ className, size, weight, muted, variant, ...props }, ref) => {
|
|
7040
6810
|
const isMuted = muted !== void 0 ? muted : variant === "muted";
|
|
7041
6811
|
return /* @__PURE__ */ jsx(
|
|
@@ -7069,7 +6839,7 @@ var alertVariants = cva(`${ALERT_TOKENS.radius} border ${ALERT_TOKENS.padding}`,
|
|
|
7069
6839
|
variant: "default"
|
|
7070
6840
|
}
|
|
7071
6841
|
});
|
|
7072
|
-
var Alert =
|
|
6842
|
+
var Alert = React49.forwardRef(
|
|
7073
6843
|
({ className, variant, ...props }, ref) => {
|
|
7074
6844
|
return /* @__PURE__ */ jsx(
|
|
7075
6845
|
"div",
|
|
@@ -7083,6 +6853,81 @@ var Alert = React48.forwardRef(
|
|
|
7083
6853
|
}
|
|
7084
6854
|
);
|
|
7085
6855
|
Alert.displayName = "Alert";
|
|
6856
|
+
var LINK_VARIANTS = [
|
|
6857
|
+
"primary",
|
|
6858
|
+
"secondary",
|
|
6859
|
+
"accent",
|
|
6860
|
+
"outline",
|
|
6861
|
+
"ghost",
|
|
6862
|
+
"link",
|
|
6863
|
+
"destructive"
|
|
6864
|
+
];
|
|
6865
|
+
var LINK_SIZES = ["xs", "sm", "md", "lg", "xl"];
|
|
6866
|
+
var linkVariants = tokenCVA({
|
|
6867
|
+
base: `${LINK_TOKENS.layout} ${LINK_TOKENS.fontWeight} ${LINK_TOKENS.transition.colors} ${LINK_TOKENS.focus.outline} ${LINK_TOKENS.focus.ring} ${LINK_TOKENS.focus.offset} ${LINK_TOKENS.state.disabled.pointerEvents} ${LINK_TOKENS.state.disabled.opacity}`,
|
|
6868
|
+
variants: {
|
|
6869
|
+
variant: {
|
|
6870
|
+
primary: `${LINK_TOKENS.variant.primary.text} ${LINK_TOKENS.variant.primary.hover} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.primary.underline}`,
|
|
6871
|
+
secondary: `${LINK_TOKENS.variant.secondary.text} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.secondary.hover}`,
|
|
6872
|
+
accent: `${LINK_TOKENS.variant.accent.text} ${LINK_TOKENS.variant.accent.hover} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.accent.underline}`,
|
|
6873
|
+
outline: `${LINK_TOKENS.variant.outline.border} ${LINK_TOKENS.variant.outline.background} ${LINK_TOKENS.variant.outline.text} ${LINK_TOKENS.radius} ${LINK_TOKENS.variant.outline.hover.background} ${LINK_TOKENS.variant.outline.hover.text}`,
|
|
6874
|
+
ghost: `${LINK_TOKENS.variant.ghost.text} ${LINK_TOKENS.variant.ghost.hover.background} ${LINK_TOKENS.variant.ghost.hover.text} ${LINK_TOKENS.radius}`,
|
|
6875
|
+
link: `${LINK_TOKENS.variant.link.text} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.link.hover}`,
|
|
6876
|
+
destructive: `${LINK_TOKENS.variant.destructive.text} ${LINK_TOKENS.variant.destructive.hover} ${LINK_TOKENS.underlineOffset} ${LINK_TOKENS.variant.destructive.underline}`
|
|
6877
|
+
},
|
|
6878
|
+
size: {
|
|
6879
|
+
xs: `${LINK_TOKENS.height.xs} ${LINK_TOKENS.fontSize.xs} ${LINK_TOKENS.padding.horizontal.xs} ${LINK_TOKENS.padding.vertical.xs}`,
|
|
6880
|
+
sm: `${LINK_TOKENS.height.sm} ${LINK_TOKENS.fontSize.sm} ${LINK_TOKENS.padding.horizontal.sm} ${LINK_TOKENS.padding.vertical.xs}`,
|
|
6881
|
+
md: `${LINK_TOKENS.height.md} ${LINK_TOKENS.fontSize.md} ${LINK_TOKENS.padding.horizontal.md} ${LINK_TOKENS.padding.vertical.sm}`,
|
|
6882
|
+
lg: `${LINK_TOKENS.height.lg} ${LINK_TOKENS.fontSize.lg} ${LINK_TOKENS.padding.horizontal.lg} ${LINK_TOKENS.padding.vertical.sm}`,
|
|
6883
|
+
xl: `${LINK_TOKENS.height.xl} ${LINK_TOKENS.fontSize.xl} ${LINK_TOKENS.padding.horizontal.xl} ${LINK_TOKENS.padding.vertical.md}`
|
|
6884
|
+
}
|
|
6885
|
+
},
|
|
6886
|
+
defaultVariants: {
|
|
6887
|
+
variant: "link",
|
|
6888
|
+
size: "md"
|
|
6889
|
+
}
|
|
6890
|
+
});
|
|
6891
|
+
var Link = React49.forwardRef(
|
|
6892
|
+
({ className, variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
|
|
6893
|
+
const Comp = asChild ? Slot : "a";
|
|
6894
|
+
return /* @__PURE__ */ jsxs(Comp, { className: cn(linkVariants({ variant, size, className })), ref, ...props, children: [
|
|
6895
|
+
leftIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: leftIcon }),
|
|
6896
|
+
children,
|
|
6897
|
+
rightIcon && /* @__PURE__ */ jsx("span", { className: LINK_TOKENS.iconWrapper, children: rightIcon })
|
|
6898
|
+
] });
|
|
6899
|
+
}
|
|
6900
|
+
);
|
|
6901
|
+
Link.displayName = "Link";
|
|
6902
|
+
var BADGE_VARIANTS = [
|
|
6903
|
+
"primary",
|
|
6904
|
+
"secondary",
|
|
6905
|
+
"accent",
|
|
6906
|
+
"outline",
|
|
6907
|
+
"ghost",
|
|
6908
|
+
"link",
|
|
6909
|
+
"destructive"
|
|
6910
|
+
];
|
|
6911
|
+
var badgeVariants = tokenCVA({
|
|
6912
|
+
base: `${BADGE_TOKENS.layout} ${BADGE_TOKENS.radius} ${BADGE_TOKENS.border} ${BADGE_TOKENS.padding.horizontal} ${BADGE_TOKENS.padding.vertical} ${BADGE_TOKENS.fontSize} ${BADGE_TOKENS.fontWeight} ${BADGE_TOKENS.transition.colors} ${BADGE_TOKENS.focus.outline} ${BADGE_TOKENS.focus.ring} ${BADGE_TOKENS.focus.offset}`,
|
|
6913
|
+
variants: {
|
|
6914
|
+
variant: {
|
|
6915
|
+
primary: `${BADGE_TOKENS.variant.primary.border} ${BADGE_TOKENS.variant.primary.background} ${BADGE_TOKENS.variant.primary.text} ${BADGE_TOKENS.variant.primary.hover}`,
|
|
6916
|
+
secondary: `${BADGE_TOKENS.variant.secondary.border} ${BADGE_TOKENS.variant.secondary.background} ${BADGE_TOKENS.variant.secondary.text} ${BADGE_TOKENS.variant.secondary.hover}`,
|
|
6917
|
+
accent: `${BADGE_TOKENS.variant.accent.border} ${BADGE_TOKENS.variant.accent.background} ${BADGE_TOKENS.variant.accent.text} ${BADGE_TOKENS.variant.accent.hover}`,
|
|
6918
|
+
outline: `${BADGE_TOKENS.variant.outline.border} ${BADGE_TOKENS.variant.outline.text}`,
|
|
6919
|
+
ghost: `${BADGE_TOKENS.variant.ghost.border} ${BADGE_TOKENS.variant.ghost.background} ${BADGE_TOKENS.variant.ghost.text} ${BADGE_TOKENS.variant.ghost.hover}`,
|
|
6920
|
+
link: `${BADGE_TOKENS.variant.link.border} ${BADGE_TOKENS.variant.link.background} ${BADGE_TOKENS.variant.link.text} ${BADGE_TOKENS.variant.link.hover} ${BADGE_TOKENS.underlineOffset} ${BADGE_TOKENS.variant.link.underline}`,
|
|
6921
|
+
destructive: `${BADGE_TOKENS.variant.destructive.border} ${BADGE_TOKENS.variant.destructive.background} ${BADGE_TOKENS.variant.destructive.text} ${BADGE_TOKENS.variant.destructive.hover}`
|
|
6922
|
+
}
|
|
6923
|
+
},
|
|
6924
|
+
defaultVariants: {
|
|
6925
|
+
variant: "primary"
|
|
6926
|
+
}
|
|
6927
|
+
});
|
|
6928
|
+
function Badge({ className, variant, ...props }) {
|
|
6929
|
+
return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
6930
|
+
}
|
|
7086
6931
|
var levelConfig = {
|
|
7087
6932
|
1: [
|
|
7088
6933
|
TEXT_TOKENS.fontSize["5xl"],
|
|
@@ -7169,7 +7014,7 @@ var headingVariants = cva("font-display text-foreground", {
|
|
|
7169
7014
|
muted: false
|
|
7170
7015
|
}
|
|
7171
7016
|
});
|
|
7172
|
-
var Heading =
|
|
7017
|
+
var Heading = React49.forwardRef(
|
|
7173
7018
|
({ className, level = 1, weight, muted, as, children, ...props }, ref) => {
|
|
7174
7019
|
const Component = as || `h${level}`;
|
|
7175
7020
|
return /* @__PURE__ */ jsx(
|
|
@@ -7368,7 +7213,7 @@ var SelectRoot = ({ children, ...props }) => {
|
|
|
7368
7213
|
return /* @__PURE__ */ jsx(SelectPrimitive.Root, { ...props, children });
|
|
7369
7214
|
};
|
|
7370
7215
|
SelectRoot.displayName = SelectPrimitive.Root.displayName;
|
|
7371
|
-
var SelectTrigger =
|
|
7216
|
+
var SelectTrigger = React49.forwardRef(
|
|
7372
7217
|
({ className, size, variant, width, ...props }, ref) => {
|
|
7373
7218
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7374
7219
|
const baseVariant = variant ?? "outline";
|
|
@@ -7395,13 +7240,13 @@ var SelectTrigger = React48.forwardRef(
|
|
|
7395
7240
|
}
|
|
7396
7241
|
);
|
|
7397
7242
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
7398
|
-
var SelectValue =
|
|
7243
|
+
var SelectValue = React49.forwardRef(
|
|
7399
7244
|
({ className, ...props }, ref) => {
|
|
7400
7245
|
return /* @__PURE__ */ jsx(SelectPrimitive.Value, { ref, className: cn("truncate", className), ...props });
|
|
7401
7246
|
}
|
|
7402
7247
|
);
|
|
7403
7248
|
SelectValue.displayName = SelectPrimitive.Value.displayName;
|
|
7404
|
-
var SelectIcon =
|
|
7249
|
+
var SelectIcon = React49.forwardRef(
|
|
7405
7250
|
({ className, ...props }, ref) => {
|
|
7406
7251
|
return /* @__PURE__ */ jsx(SelectPrimitive.Icon, { ref, asChild: true, ...props, children: /* @__PURE__ */ jsx(
|
|
7407
7252
|
ChevronDown,
|
|
@@ -7421,14 +7266,14 @@ var SelectIcon = React48.forwardRef(
|
|
|
7421
7266
|
}
|
|
7422
7267
|
);
|
|
7423
7268
|
SelectIcon.displayName = SelectPrimitive.Icon.displayName;
|
|
7424
|
-
var SelectContent =
|
|
7269
|
+
var SelectContent = React49.forwardRef(
|
|
7425
7270
|
({ className, size, sideOffset, alignOffset, position = "popper", ...props }, ref) => {
|
|
7426
7271
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7427
|
-
const sideOffsetPx =
|
|
7272
|
+
const sideOffsetPx = React49.useMemo(() => {
|
|
7428
7273
|
const baseOffset = getBaseValue(sideOffset);
|
|
7429
7274
|
return baseOffset ? getSpacingPx(baseOffset) : getSpacingPx("xs");
|
|
7430
7275
|
}, [sideOffset]);
|
|
7431
|
-
const alignOffsetPx =
|
|
7276
|
+
const alignOffsetPx = React49.useMemo(() => {
|
|
7432
7277
|
const baseOffset = getBaseValue(alignOffset);
|
|
7433
7278
|
return baseOffset ? getSpacingPx(baseOffset) : void 0;
|
|
7434
7279
|
}, [alignOffset]);
|
|
@@ -7453,7 +7298,7 @@ var SelectContent = React48.forwardRef(
|
|
|
7453
7298
|
}
|
|
7454
7299
|
);
|
|
7455
7300
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
7456
|
-
var SelectViewport =
|
|
7301
|
+
var SelectViewport = React49.forwardRef(
|
|
7457
7302
|
({ className, ...props }, ref) => {
|
|
7458
7303
|
return /* @__PURE__ */ jsx(
|
|
7459
7304
|
SelectPrimitive.Viewport,
|
|
@@ -7470,7 +7315,7 @@ var SelectViewport = React48.forwardRef(
|
|
|
7470
7315
|
}
|
|
7471
7316
|
);
|
|
7472
7317
|
SelectViewport.displayName = SelectPrimitive.Viewport.displayName;
|
|
7473
|
-
var SelectItem =
|
|
7318
|
+
var SelectItem = React49.forwardRef(
|
|
7474
7319
|
({ className, size, children, ...props }, ref) => {
|
|
7475
7320
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7476
7321
|
return /* @__PURE__ */ jsxs(
|
|
@@ -7502,19 +7347,19 @@ var SelectItem = React48.forwardRef(
|
|
|
7502
7347
|
}
|
|
7503
7348
|
);
|
|
7504
7349
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
7505
|
-
var SelectItemText =
|
|
7350
|
+
var SelectItemText = React49.forwardRef(
|
|
7506
7351
|
({ className, ...props }, ref) => {
|
|
7507
7352
|
return /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { ref, className, ...props });
|
|
7508
7353
|
}
|
|
7509
7354
|
);
|
|
7510
7355
|
SelectItemText.displayName = SelectPrimitive.ItemText.displayName;
|
|
7511
|
-
var SelectItemIndicator =
|
|
7356
|
+
var SelectItemIndicator = React49.forwardRef(
|
|
7512
7357
|
({ className, ...props }, ref) => {
|
|
7513
7358
|
return /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { ref, className, ...props, children: /* @__PURE__ */ jsx(Check, { className: cn(SELECT_TOKENS.item.indicator.size) }) });
|
|
7514
7359
|
}
|
|
7515
7360
|
);
|
|
7516
7361
|
SelectItemIndicator.displayName = SelectPrimitive.ItemIndicator.displayName;
|
|
7517
|
-
var SelectSeparator =
|
|
7362
|
+
var SelectSeparator = React49.forwardRef(
|
|
7518
7363
|
({ className, size, ...props }, ref) => {
|
|
7519
7364
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7520
7365
|
const marginHorizontal = baseSize === "xs" || baseSize === "sm" || baseSize === "md" ? SELECT_TOKENS.separator.margin.horizontal.md : SELECT_TOKENS.separator.margin.horizontal.lg;
|
|
@@ -7536,13 +7381,13 @@ var SelectSeparator = React48.forwardRef(
|
|
|
7536
7381
|
}
|
|
7537
7382
|
);
|
|
7538
7383
|
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
7539
|
-
var SelectGroup =
|
|
7384
|
+
var SelectGroup = React49.forwardRef(
|
|
7540
7385
|
({ className, ...props }, ref) => {
|
|
7541
7386
|
return /* @__PURE__ */ jsx(SelectPrimitive.Group, { ref, className, ...props });
|
|
7542
7387
|
}
|
|
7543
7388
|
);
|
|
7544
7389
|
SelectGroup.displayName = SelectPrimitive.Group.displayName;
|
|
7545
|
-
var SelectLabel =
|
|
7390
|
+
var SelectLabel = React49.forwardRef(
|
|
7546
7391
|
({ className, size, ...props }, ref) => {
|
|
7547
7392
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7548
7393
|
const paddingHorizontal = SELECT_TOKENS.label.padding.horizontal[baseSize];
|
|
@@ -7614,14 +7459,14 @@ var ModalRoot = ({ children, ...props }) => {
|
|
|
7614
7459
|
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children });
|
|
7615
7460
|
};
|
|
7616
7461
|
ModalRoot.displayName = DialogPrimitive.Root.displayName;
|
|
7617
|
-
var ModalTrigger =
|
|
7462
|
+
var ModalTrigger = React49.forwardRef(
|
|
7618
7463
|
({ className, ...props }, ref) => {
|
|
7619
7464
|
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ref, className, ...props });
|
|
7620
7465
|
}
|
|
7621
7466
|
);
|
|
7622
7467
|
ModalTrigger.displayName = DialogPrimitive.Trigger.displayName;
|
|
7623
7468
|
DialogPrimitive.Portal.displayName;
|
|
7624
|
-
var ModalOverlay =
|
|
7469
|
+
var ModalOverlay = React49.forwardRef(
|
|
7625
7470
|
({ className, ...props }, ref) => {
|
|
7626
7471
|
return /* @__PURE__ */ jsx(
|
|
7627
7472
|
DialogPrimitive.Overlay,
|
|
@@ -7634,7 +7479,7 @@ var ModalOverlay = React48.forwardRef(
|
|
|
7634
7479
|
}
|
|
7635
7480
|
);
|
|
7636
7481
|
ModalOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
7637
|
-
var ModalContent =
|
|
7482
|
+
var ModalContent = React49.forwardRef(
|
|
7638
7483
|
({ className, size = "md", width, height, padding, radius, surface, children, ...props }, ref) => {
|
|
7639
7484
|
const baseSize = getBaseValue(size) ?? "md";
|
|
7640
7485
|
const baseWidth = width ? getBaseValue(width) : void 0;
|
|
@@ -7672,7 +7517,7 @@ var ModalContent = React48.forwardRef(
|
|
|
7672
7517
|
}
|
|
7673
7518
|
);
|
|
7674
7519
|
ModalContent.displayName = DialogPrimitive.Content.displayName;
|
|
7675
|
-
var ModalHeader =
|
|
7520
|
+
var ModalHeader = React49.forwardRef(
|
|
7676
7521
|
({ className, gap, ...props }, ref) => {
|
|
7677
7522
|
const baseGap = gap ? getBaseValue(gap) : "md";
|
|
7678
7523
|
const gapClass = getSpacingClass("gap", baseGap) ?? MODAL_TOKENS.header.gap.md;
|
|
@@ -7687,7 +7532,7 @@ var ModalHeader = React48.forwardRef(
|
|
|
7687
7532
|
}
|
|
7688
7533
|
);
|
|
7689
7534
|
ModalHeader.displayName = "ModalHeader";
|
|
7690
|
-
var ModalTitle =
|
|
7535
|
+
var ModalTitle = React49.forwardRef(
|
|
7691
7536
|
({ className, ...props }, ref) => {
|
|
7692
7537
|
return /* @__PURE__ */ jsx(
|
|
7693
7538
|
DialogPrimitive.Title,
|
|
@@ -7706,7 +7551,7 @@ var ModalTitle = React48.forwardRef(
|
|
|
7706
7551
|
}
|
|
7707
7552
|
);
|
|
7708
7553
|
ModalTitle.displayName = DialogPrimitive.Title.displayName;
|
|
7709
|
-
var ModalDescription =
|
|
7554
|
+
var ModalDescription = React49.forwardRef(
|
|
7710
7555
|
({ className, ...props }, ref) => {
|
|
7711
7556
|
return /* @__PURE__ */ jsx(
|
|
7712
7557
|
DialogPrimitive.Description,
|
|
@@ -7723,7 +7568,7 @@ var ModalDescription = React48.forwardRef(
|
|
|
7723
7568
|
}
|
|
7724
7569
|
);
|
|
7725
7570
|
ModalDescription.displayName = DialogPrimitive.Description.displayName;
|
|
7726
|
-
var ModalFooter =
|
|
7571
|
+
var ModalFooter = React49.forwardRef(
|
|
7727
7572
|
({ className, gap, align = "right", ...props }, ref) => {
|
|
7728
7573
|
const baseGap = gap ? getBaseValue(gap) : "md";
|
|
7729
7574
|
const gapClass = getSpacingClass("gap", baseGap) ?? MODAL_TOKENS.footer.gap.md;
|
|
@@ -7745,7 +7590,7 @@ var ModalFooter = React48.forwardRef(
|
|
|
7745
7590
|
}
|
|
7746
7591
|
);
|
|
7747
7592
|
ModalFooter.displayName = "ModalFooter";
|
|
7748
|
-
var ModalClose =
|
|
7593
|
+
var ModalClose = React49.forwardRef(
|
|
7749
7594
|
({ className, ...props }, ref) => {
|
|
7750
7595
|
return /* @__PURE__ */ jsxs(
|
|
7751
7596
|
DialogPrimitive.Close,
|
|
@@ -8158,7 +8003,7 @@ var checkboxVariants = cva(
|
|
|
8158
8003
|
}
|
|
8159
8004
|
}
|
|
8160
8005
|
);
|
|
8161
|
-
var Checkbox =
|
|
8006
|
+
var Checkbox = React49.forwardRef(
|
|
8162
8007
|
({
|
|
8163
8008
|
className,
|
|
8164
8009
|
variant,
|
|
@@ -8177,23 +8022,23 @@ var Checkbox = React48.forwardRef(
|
|
|
8177
8022
|
onKeyDown,
|
|
8178
8023
|
...props
|
|
8179
8024
|
}, ref) => {
|
|
8180
|
-
const [uncontrolledChecked, setUncontrolledChecked] =
|
|
8025
|
+
const [uncontrolledChecked, setUncontrolledChecked] = React49.useState(false);
|
|
8181
8026
|
const isControlled = controlledChecked !== void 0;
|
|
8182
8027
|
const checked = isControlled ? controlledChecked : uncontrolledChecked;
|
|
8183
8028
|
const isDisabled = disabled || state === "disabled";
|
|
8184
8029
|
const isError = state === "error";
|
|
8185
|
-
const effectiveState =
|
|
8030
|
+
const effectiveState = React49.useMemo(() => {
|
|
8186
8031
|
if (isDisabled) return "disabled";
|
|
8187
8032
|
if (isError) return "error";
|
|
8188
8033
|
if (indeterminate) return "indeterminate";
|
|
8189
8034
|
if (checked) return "checked";
|
|
8190
8035
|
return "default";
|
|
8191
8036
|
}, [isDisabled, isError, indeterminate, checked]);
|
|
8192
|
-
const ariaChecked =
|
|
8037
|
+
const ariaChecked = React49.useMemo(() => {
|
|
8193
8038
|
if (indeterminate) return "mixed";
|
|
8194
8039
|
return checked ? "true" : "false";
|
|
8195
8040
|
}, [indeterminate, checked]);
|
|
8196
|
-
const handleClick =
|
|
8041
|
+
const handleClick = React49.useCallback(
|
|
8197
8042
|
(event) => {
|
|
8198
8043
|
if (isDisabled) {
|
|
8199
8044
|
event.preventDefault();
|
|
@@ -8207,7 +8052,7 @@ var Checkbox = React48.forwardRef(
|
|
|
8207
8052
|
},
|
|
8208
8053
|
[isDisabled, isControlled, checked, onCheckedChange, onClick]
|
|
8209
8054
|
);
|
|
8210
|
-
const handleKeyDown =
|
|
8055
|
+
const handleKeyDown = React49.useCallback(
|
|
8211
8056
|
(event) => {
|
|
8212
8057
|
if (isDisabled) return;
|
|
8213
8058
|
if (event.key === " " || event.key === "Spacebar") {
|
|
@@ -8293,7 +8138,7 @@ function shadowToClass(value) {
|
|
|
8293
8138
|
if (!value || value === "none") return void 0;
|
|
8294
8139
|
return `shadow-${value}`;
|
|
8295
8140
|
}
|
|
8296
|
-
var Box =
|
|
8141
|
+
var Box = React49.forwardRef(
|
|
8297
8142
|
({
|
|
8298
8143
|
as: Component = "div",
|
|
8299
8144
|
p,
|
|
@@ -8394,7 +8239,7 @@ function justifyToClass(value) {
|
|
|
8394
8239
|
if (value === "evenly") return "justify-evenly";
|
|
8395
8240
|
return void 0;
|
|
8396
8241
|
}
|
|
8397
|
-
var Stack =
|
|
8242
|
+
var Stack = React49.forwardRef(
|
|
8398
8243
|
({ direction = "vertical", spacing: spacing2, gap, align, justify, className, style, ...props }, ref) => {
|
|
8399
8244
|
const gapValue = spacing2 ?? gap;
|
|
8400
8245
|
const gapBaseValue = getBaseValue(gapValue);
|
|
@@ -8454,7 +8299,7 @@ function getMaxWidthValue(value) {
|
|
|
8454
8299
|
}
|
|
8455
8300
|
return getSpacingCSSVar(stringValue);
|
|
8456
8301
|
}
|
|
8457
|
-
var Container =
|
|
8302
|
+
var Container = React49.forwardRef(
|
|
8458
8303
|
({ maxWidth, padding, center = true, className, style, ...props }, ref) => {
|
|
8459
8304
|
const maxWidthValue = maxWidth ? getBaseValue(maxWidth) : void 0;
|
|
8460
8305
|
const paddingValue = getBaseValue(
|
|
@@ -8569,7 +8414,7 @@ function shrinkToClass(value) {
|
|
|
8569
8414
|
if (value === true || value === 1) return "shrink";
|
|
8570
8415
|
return void 0;
|
|
8571
8416
|
}
|
|
8572
|
-
var Flex =
|
|
8417
|
+
var Flex = React49.forwardRef(
|
|
8573
8418
|
({ direction, wrap, grow, shrink, basis, align, justify, gap, className, style, ...props }, ref) => {
|
|
8574
8419
|
const directionValue = getFlexBaseValue(
|
|
8575
8420
|
direction
|
|
@@ -8672,7 +8517,7 @@ function justifyToClass3(value) {
|
|
|
8672
8517
|
if (value === "evenly") return "justify-evenly";
|
|
8673
8518
|
return void 0;
|
|
8674
8519
|
}
|
|
8675
|
-
var Grid =
|
|
8520
|
+
var Grid = React49.forwardRef(
|
|
8676
8521
|
({
|
|
8677
8522
|
cols,
|
|
8678
8523
|
sm,
|
|
@@ -8774,7 +8619,7 @@ var Grid = React48.forwardRef(
|
|
|
8774
8619
|
}
|
|
8775
8620
|
);
|
|
8776
8621
|
Grid.displayName = "Grid";
|
|
8777
|
-
var Row =
|
|
8622
|
+
var Row = React49.forwardRef((props, ref) => {
|
|
8778
8623
|
return /* @__PURE__ */ jsx(Stack, { ref, direction: "horizontal", ...props });
|
|
8779
8624
|
});
|
|
8780
8625
|
Row.displayName = "Row";
|
|
@@ -8792,7 +8637,7 @@ var surfaceVariants = cva("", {
|
|
|
8792
8637
|
variant: "flat"
|
|
8793
8638
|
}
|
|
8794
8639
|
});
|
|
8795
|
-
var Surface =
|
|
8640
|
+
var Surface = React49.forwardRef(
|
|
8796
8641
|
({ variant = "flat", p, radius, className, ...props }, ref) => {
|
|
8797
8642
|
const variantPadding = SURFACE_TOKENS.variant[variant].padding;
|
|
8798
8643
|
const defaultPadding = variantPadding.replace("p-", "");
|
|
@@ -8813,7 +8658,7 @@ var Surface = React48.forwardRef(
|
|
|
8813
8658
|
}
|
|
8814
8659
|
);
|
|
8815
8660
|
Surface.displayName = "Surface";
|
|
8816
|
-
var Card =
|
|
8661
|
+
var Card = React49.forwardRef(
|
|
8817
8662
|
({ size = "md", radius, shadow, p, className, ...props }, ref) => {
|
|
8818
8663
|
const sizeTokens = CARD_TOKENS.size[size];
|
|
8819
8664
|
const radiusValue = radius ?? sizeTokens.radius.replace("rounded-", "");
|
|
@@ -8835,7 +8680,7 @@ var Card = React48.forwardRef(
|
|
|
8835
8680
|
}
|
|
8836
8681
|
);
|
|
8837
8682
|
Card.displayName = "Card";
|
|
8838
|
-
var CardHeader =
|
|
8683
|
+
var CardHeader = React49.forwardRef(
|
|
8839
8684
|
({ size = "md", p, className, ...props }, ref) => {
|
|
8840
8685
|
const sizeTokens = CARD_TOKENS.size[size];
|
|
8841
8686
|
const paddingValue = p ?? sizeTokens.padding.replace("p-", "");
|
|
@@ -8844,7 +8689,7 @@ var CardHeader = React48.forwardRef(
|
|
|
8844
8689
|
}
|
|
8845
8690
|
);
|
|
8846
8691
|
CardHeader.displayName = "CardHeader";
|
|
8847
|
-
var CardBody =
|
|
8692
|
+
var CardBody = React49.forwardRef(
|
|
8848
8693
|
({ size = "md", p, className, ...props }, ref) => {
|
|
8849
8694
|
const sizeTokens = CARD_TOKENS.size[size];
|
|
8850
8695
|
const paddingValue = p ?? sizeTokens.padding.replace("p-", "");
|
|
@@ -8852,7 +8697,7 @@ var CardBody = React48.forwardRef(
|
|
|
8852
8697
|
}
|
|
8853
8698
|
);
|
|
8854
8699
|
CardBody.displayName = "CardBody";
|
|
8855
|
-
var CardFooter =
|
|
8700
|
+
var CardFooter = React49.forwardRef(
|
|
8856
8701
|
({ size = "md", p, className, ...props }, ref) => {
|
|
8857
8702
|
const sizeTokens = CARD_TOKENS.size[size];
|
|
8858
8703
|
const paddingValue = p ?? sizeTokens.padding.replace("p-", "");
|
|
@@ -8863,7 +8708,7 @@ CardFooter.displayName = "CardFooter";
|
|
|
8863
8708
|
Card.Header = CardHeader;
|
|
8864
8709
|
Card.Body = CardBody;
|
|
8865
8710
|
Card.Footer = CardFooter;
|
|
8866
|
-
var Section =
|
|
8711
|
+
var Section = React49.forwardRef(
|
|
8867
8712
|
({ padding = "md", gap, className, as, ...props }, ref) => {
|
|
8868
8713
|
return /* @__PURE__ */ jsx(
|
|
8869
8714
|
Stack,
|
|
@@ -8882,38 +8727,38 @@ Section.displayName = "Section";
|
|
|
8882
8727
|
var labelVariants = cva(
|
|
8883
8728
|
`${TEXT_TOKENS.fontSize.sm} ${TEXT_TOKENS.fontWeight.medium} ${TEXT_TOKENS.lineHeight.none} peer-disabled:cursor-not-allowed peer-disabled:opacity-70`
|
|
8884
8729
|
);
|
|
8885
|
-
var Label2 =
|
|
8730
|
+
var Label2 = React49.forwardRef(
|
|
8886
8731
|
({ className, required, children, ...props }, ref) => /* @__PURE__ */ jsxs(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props, children: [
|
|
8887
8732
|
children,
|
|
8888
8733
|
required && /* @__PURE__ */ jsx("span", { className: cn(FORM_TOKENS.label.requiredMark, "ml-xs"), children: "*" })
|
|
8889
8734
|
] })
|
|
8890
8735
|
);
|
|
8891
8736
|
Label2.displayName = LabelPrimitive.Root.displayName;
|
|
8892
|
-
var Field =
|
|
8737
|
+
var Field = React49.forwardRef(
|
|
8893
8738
|
({ className, children, ...props }, ref) => {
|
|
8894
8739
|
return /* @__PURE__ */ jsx(Stack, { ref, gap: "sm", className: cn(className), ...props, children });
|
|
8895
8740
|
}
|
|
8896
8741
|
);
|
|
8897
8742
|
Field.displayName = "Field";
|
|
8898
|
-
var FieldLabel =
|
|
8743
|
+
var FieldLabel = React49.forwardRef(
|
|
8899
8744
|
({ className, ...props }, ref) => {
|
|
8900
8745
|
return /* @__PURE__ */ jsx(Label2, { ref, className, ...props });
|
|
8901
8746
|
}
|
|
8902
8747
|
);
|
|
8903
8748
|
FieldLabel.displayName = "FieldLabel";
|
|
8904
|
-
var FieldControl =
|
|
8749
|
+
var FieldControl = React49.forwardRef(
|
|
8905
8750
|
({ className, children, ...props }, ref) => {
|
|
8906
8751
|
return /* @__PURE__ */ jsx("div", { ref, className: cn(className), ...props, children });
|
|
8907
8752
|
}
|
|
8908
8753
|
);
|
|
8909
8754
|
FieldControl.displayName = "FieldControl";
|
|
8910
|
-
var FieldDescription =
|
|
8755
|
+
var FieldDescription = React49.forwardRef(
|
|
8911
8756
|
({ className, ...props }, ref) => {
|
|
8912
8757
|
return /* @__PURE__ */ jsx(Text, { ref, size: "sm", muted: true, className: cn(className), ...props });
|
|
8913
8758
|
}
|
|
8914
8759
|
);
|
|
8915
8760
|
FieldDescription.displayName = "FieldDescription";
|
|
8916
|
-
var FieldError =
|
|
8761
|
+
var FieldError = React49.forwardRef(
|
|
8917
8762
|
({ className, ...props }, ref) => {
|
|
8918
8763
|
return /* @__PURE__ */ jsx(Text, { ref, size: "sm", className: cn("text-destructive", className), ...props });
|
|
8919
8764
|
}
|
|
@@ -8961,7 +8806,7 @@ var inputVariants = cva(
|
|
|
8961
8806
|
}
|
|
8962
8807
|
}
|
|
8963
8808
|
);
|
|
8964
|
-
var Input =
|
|
8809
|
+
var Input = React49.forwardRef(
|
|
8965
8810
|
({
|
|
8966
8811
|
className,
|
|
8967
8812
|
type = "text",
|
|
@@ -8979,8 +8824,8 @@ var Input = React48.forwardRef(
|
|
|
8979
8824
|
const isError = state === "error" || ariaInvalid === true;
|
|
8980
8825
|
const isDisabled = disabled || state === "disabled";
|
|
8981
8826
|
const ariaInvalidValue = isError ? true : ariaInvalid;
|
|
8982
|
-
const inputId =
|
|
8983
|
-
const [describedById] =
|
|
8827
|
+
const inputId = React49.useId();
|
|
8828
|
+
const [describedById] = React49.useState(() => {
|
|
8984
8829
|
if (ariaDescribedBy) return ariaDescribedBy;
|
|
8985
8830
|
if (state === "error" || state === "success") {
|
|
8986
8831
|
return `input-${inputId}-message`;
|
|
@@ -9083,8 +8928,8 @@ var radioVariants = cva(
|
|
|
9083
8928
|
}
|
|
9084
8929
|
}
|
|
9085
8930
|
);
|
|
9086
|
-
var RadioGroupContext =
|
|
9087
|
-
var RadioGroup =
|
|
8931
|
+
var RadioGroupContext = React49.createContext(void 0);
|
|
8932
|
+
var RadioGroup = React49.forwardRef(
|
|
9088
8933
|
({
|
|
9089
8934
|
value: controlledValue,
|
|
9090
8935
|
defaultValue,
|
|
@@ -9096,17 +8941,17 @@ var RadioGroup = React48.forwardRef(
|
|
|
9096
8941
|
children,
|
|
9097
8942
|
...props
|
|
9098
8943
|
}, ref) => {
|
|
9099
|
-
const [internalValue, setInternalValue] =
|
|
8944
|
+
const [internalValue, setInternalValue] = React49.useState(defaultValue || "");
|
|
9100
8945
|
const isControlled = controlledValue !== void 0;
|
|
9101
8946
|
const value = isControlled ? controlledValue : internalValue;
|
|
9102
|
-
const name =
|
|
8947
|
+
const name = React49.useMemo(() => {
|
|
9103
8948
|
if (propName) return propName;
|
|
9104
8949
|
if (typeof document !== "undefined") {
|
|
9105
8950
|
return `radio-group-${Math.random().toString(36).substr(2, 9)}`;
|
|
9106
8951
|
}
|
|
9107
8952
|
return "radio-group";
|
|
9108
8953
|
}, [propName]);
|
|
9109
|
-
const handleValueChange =
|
|
8954
|
+
const handleValueChange = React49.useCallback(
|
|
9110
8955
|
(newValue) => {
|
|
9111
8956
|
if (!isControlled) {
|
|
9112
8957
|
setInternalValue(newValue);
|
|
@@ -9115,7 +8960,7 @@ var RadioGroup = React48.forwardRef(
|
|
|
9115
8960
|
},
|
|
9116
8961
|
[isControlled, onValueChange]
|
|
9117
8962
|
);
|
|
9118
|
-
const contextValue =
|
|
8963
|
+
const contextValue = React49.useMemo(
|
|
9119
8964
|
() => ({
|
|
9120
8965
|
value,
|
|
9121
8966
|
onValueChange: handleValueChange,
|
|
@@ -9142,7 +8987,7 @@ var RadioGroup = React48.forwardRef(
|
|
|
9142
8987
|
}
|
|
9143
8988
|
);
|
|
9144
8989
|
RadioGroup.displayName = "RadioGroup";
|
|
9145
|
-
var Radio =
|
|
8990
|
+
var Radio = React49.forwardRef(
|
|
9146
8991
|
({
|
|
9147
8992
|
className,
|
|
9148
8993
|
variant,
|
|
@@ -9160,11 +9005,11 @@ var Radio = React48.forwardRef(
|
|
|
9160
9005
|
onKeyDown,
|
|
9161
9006
|
...props
|
|
9162
9007
|
}, ref) => {
|
|
9163
|
-
const radioGroupContext =
|
|
9008
|
+
const radioGroupContext = React49.useContext(RadioGroupContext);
|
|
9164
9009
|
const isControlled = controlledChecked !== void 0;
|
|
9165
9010
|
const isGroupControlled = radioGroupContext !== void 0;
|
|
9166
9011
|
const checkedInGroup = isGroupControlled && value !== void 0 && radioGroupContext ? radioGroupContext.value === value : false;
|
|
9167
|
-
const [uncontrolledChecked, setUncontrolledChecked] =
|
|
9012
|
+
const [uncontrolledChecked, setUncontrolledChecked] = React49.useState(false);
|
|
9168
9013
|
const finalChecked = (() => {
|
|
9169
9014
|
if (isControlled) return controlledChecked;
|
|
9170
9015
|
if (isGroupControlled) return checkedInGroup;
|
|
@@ -9173,19 +9018,19 @@ var Radio = React48.forwardRef(
|
|
|
9173
9018
|
const effectiveSize = size || radioGroupContext?.size || "md";
|
|
9174
9019
|
const isDisabled = disabled || state === "disabled";
|
|
9175
9020
|
const isError = state === "error";
|
|
9176
|
-
const effectiveState =
|
|
9021
|
+
const effectiveState = React49.useMemo(() => {
|
|
9177
9022
|
if (isDisabled) return "disabled";
|
|
9178
9023
|
if (isError) return "error";
|
|
9179
9024
|
if (finalChecked) return "checked";
|
|
9180
9025
|
return "default";
|
|
9181
9026
|
}, [isDisabled, isError, finalChecked]);
|
|
9182
|
-
const tabIndex =
|
|
9027
|
+
const tabIndex = React49.useMemo(() => {
|
|
9183
9028
|
if (isGroupControlled) {
|
|
9184
9029
|
return finalChecked ? 0 : -1;
|
|
9185
9030
|
}
|
|
9186
9031
|
return 0;
|
|
9187
9032
|
}, [isGroupControlled, finalChecked]);
|
|
9188
|
-
const handleClick =
|
|
9033
|
+
const handleClick = React49.useCallback(
|
|
9189
9034
|
(event) => {
|
|
9190
9035
|
if (isDisabled) {
|
|
9191
9036
|
event.preventDefault();
|
|
@@ -9209,7 +9054,7 @@ var Radio = React48.forwardRef(
|
|
|
9209
9054
|
onClick
|
|
9210
9055
|
]
|
|
9211
9056
|
);
|
|
9212
|
-
const handleKeyDown =
|
|
9057
|
+
const handleKeyDown = React49.useCallback(
|
|
9213
9058
|
(event) => {
|
|
9214
9059
|
if (isDisabled) return;
|
|
9215
9060
|
if (event.key === " " || event.key === "Spacebar") {
|
|
@@ -9364,7 +9209,7 @@ var textareaVariants = cva(
|
|
|
9364
9209
|
}
|
|
9365
9210
|
}
|
|
9366
9211
|
);
|
|
9367
|
-
var Textarea =
|
|
9212
|
+
var Textarea = React49.forwardRef(
|
|
9368
9213
|
({
|
|
9369
9214
|
className,
|
|
9370
9215
|
variant,
|
|
@@ -9383,8 +9228,8 @@ var Textarea = React48.forwardRef(
|
|
|
9383
9228
|
const isError = state === "error" || ariaInvalid === true;
|
|
9384
9229
|
const isDisabled = disabled || state === "disabled";
|
|
9385
9230
|
const ariaInvalidValue = isError ? true : ariaInvalid;
|
|
9386
|
-
const generatedId =
|
|
9387
|
-
const [describedById] =
|
|
9231
|
+
const generatedId = React49.useId();
|
|
9232
|
+
const [describedById] = React49.useState(() => {
|
|
9388
9233
|
if (ariaDescribedBy) return ariaDescribedBy;
|
|
9389
9234
|
if (state === "error" || state === "success") {
|
|
9390
9235
|
return `textarea-${generatedId}-message`;
|
|
@@ -9448,16 +9293,6 @@ var Textarea = React48.forwardRef(
|
|
|
9448
9293
|
}
|
|
9449
9294
|
);
|
|
9450
9295
|
Textarea.displayName = "Textarea";
|
|
9451
|
-
var Progress = ({ value, max = 100, className }) => {
|
|
9452
|
-
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
9453
|
-
return /* @__PURE__ */ jsx("div", { className: cn("h-2 w-full rounded-full bg-secondary", className), children: /* @__PURE__ */ jsx(
|
|
9454
|
-
"div",
|
|
9455
|
-
{
|
|
9456
|
-
className: "h-2 rounded-full bg-primary transition-[width] duration-normal",
|
|
9457
|
-
style: { width: `${percentage}%` }
|
|
9458
|
-
}
|
|
9459
|
-
) });
|
|
9460
|
-
};
|
|
9461
9296
|
var skeletonVariants = cva(
|
|
9462
9297
|
`${DATA_TOKENS.skeleton.background.default} ${DATA_TOKENS.skeleton.animation.pulse}`,
|
|
9463
9298
|
{
|
|
@@ -9475,7 +9310,7 @@ var skeletonVariants = cva(
|
|
|
9475
9310
|
}
|
|
9476
9311
|
}
|
|
9477
9312
|
);
|
|
9478
|
-
var Skeleton =
|
|
9313
|
+
var Skeleton = React49.forwardRef(
|
|
9479
9314
|
({ className, variant, "aria-hidden": ariaHidden = true, ...props }, ref) => {
|
|
9480
9315
|
return /* @__PURE__ */ jsx(
|
|
9481
9316
|
"div",
|
|
@@ -9489,10 +9324,10 @@ var Skeleton = React48.forwardRef(
|
|
|
9489
9324
|
}
|
|
9490
9325
|
);
|
|
9491
9326
|
Skeleton.displayName = "Skeleton";
|
|
9492
|
-
var Portal3 =
|
|
9327
|
+
var Portal3 = React49.forwardRef(
|
|
9493
9328
|
({ children, container, className, style }, ref) => {
|
|
9494
|
-
const [mounted, setMounted] =
|
|
9495
|
-
|
|
9329
|
+
const [mounted, setMounted] = React49.useState(false);
|
|
9330
|
+
React49.useEffect(() => {
|
|
9496
9331
|
setMounted(true);
|
|
9497
9332
|
}, []);
|
|
9498
9333
|
if (!mounted || typeof window === "undefined") {
|
|
@@ -9521,7 +9356,7 @@ var backdropVariants = cva("fixed inset-0 z-40 transition-opacity", {
|
|
|
9521
9356
|
variant: "default"
|
|
9522
9357
|
}
|
|
9523
9358
|
});
|
|
9524
|
-
var Backdrop =
|
|
9359
|
+
var Backdrop = React49.forwardRef(
|
|
9525
9360
|
({ variant = "default", isVisible = true, onClick, className, ...props }, ref) => {
|
|
9526
9361
|
return /* @__PURE__ */ jsx(
|
|
9527
9362
|
"div",
|
|
@@ -9541,14 +9376,14 @@ var Backdrop = React48.forwardRef(
|
|
|
9541
9376
|
);
|
|
9542
9377
|
Backdrop.displayName = "Backdrop";
|
|
9543
9378
|
var DialogRoot = ({ titleId, descriptionId, children, ...props }) => {
|
|
9544
|
-
const titleIdRef =
|
|
9545
|
-
const descriptionIdRef =
|
|
9379
|
+
const titleIdRef = React49.useId();
|
|
9380
|
+
const descriptionIdRef = React49.useId();
|
|
9546
9381
|
const finalTitleId = titleId || titleIdRef;
|
|
9547
9382
|
const finalDescriptionId = descriptionId || descriptionIdRef;
|
|
9548
9383
|
return /* @__PURE__ */ jsx(Modal.Root, { ...props, children: /* @__PURE__ */ jsxs(Modal.Content, { children: [
|
|
9549
|
-
|
|
9550
|
-
if (
|
|
9551
|
-
return
|
|
9384
|
+
React49.Children.map(children, (child) => {
|
|
9385
|
+
if (React49.isValidElement(child)) {
|
|
9386
|
+
return React49.cloneElement(child, {
|
|
9552
9387
|
titleId: finalTitleId,
|
|
9553
9388
|
descriptionId: finalDescriptionId
|
|
9554
9389
|
});
|
|
@@ -9559,7 +9394,7 @@ var DialogRoot = ({ titleId, descriptionId, children, ...props }) => {
|
|
|
9559
9394
|
] }) });
|
|
9560
9395
|
};
|
|
9561
9396
|
DialogRoot.displayName = "DialogRoot";
|
|
9562
|
-
var DialogHeader =
|
|
9397
|
+
var DialogHeader = React49.forwardRef(
|
|
9563
9398
|
({ className, ...props }, ref) => {
|
|
9564
9399
|
return /* @__PURE__ */ jsx(
|
|
9565
9400
|
"div",
|
|
@@ -9577,7 +9412,7 @@ var DialogHeader = React48.forwardRef(
|
|
|
9577
9412
|
}
|
|
9578
9413
|
);
|
|
9579
9414
|
DialogHeader.displayName = "DialogHeader";
|
|
9580
|
-
var DialogTitle =
|
|
9415
|
+
var DialogTitle = React49.forwardRef(
|
|
9581
9416
|
({ titleId, className, children, ...props }, ref) => {
|
|
9582
9417
|
return /* @__PURE__ */ jsx(
|
|
9583
9418
|
Heading,
|
|
@@ -9595,7 +9430,7 @@ var DialogTitle = React48.forwardRef(
|
|
|
9595
9430
|
}
|
|
9596
9431
|
);
|
|
9597
9432
|
DialogTitle.displayName = "DialogTitle";
|
|
9598
|
-
var DialogDescription =
|
|
9433
|
+
var DialogDescription = React49.forwardRef(
|
|
9599
9434
|
({ descriptionId, className, children, ...props }, ref) => {
|
|
9600
9435
|
return /* @__PURE__ */ jsx(
|
|
9601
9436
|
"p",
|
|
@@ -9610,7 +9445,7 @@ var DialogDescription = React48.forwardRef(
|
|
|
9610
9445
|
}
|
|
9611
9446
|
);
|
|
9612
9447
|
DialogDescription.displayName = "DialogDescription";
|
|
9613
|
-
var DialogBody =
|
|
9448
|
+
var DialogBody = React49.forwardRef(
|
|
9614
9449
|
({ className, ...props }, ref) => {
|
|
9615
9450
|
return /* @__PURE__ */ jsx(
|
|
9616
9451
|
"div",
|
|
@@ -9623,7 +9458,7 @@ var DialogBody = React48.forwardRef(
|
|
|
9623
9458
|
}
|
|
9624
9459
|
);
|
|
9625
9460
|
DialogBody.displayName = "DialogBody";
|
|
9626
|
-
var DialogFooter =
|
|
9461
|
+
var DialogFooter = React49.forwardRef(
|
|
9627
9462
|
({ className, ...props }, ref) => {
|
|
9628
9463
|
return /* @__PURE__ */ jsx(
|
|
9629
9464
|
Row,
|
|
@@ -9663,7 +9498,7 @@ var toastVariants = cva(
|
|
|
9663
9498
|
}
|
|
9664
9499
|
}
|
|
9665
9500
|
);
|
|
9666
|
-
var ToastRoot =
|
|
9501
|
+
var ToastRoot = React49.forwardRef(
|
|
9667
9502
|
({ toast, variant, className, ...props }, ref) => {
|
|
9668
9503
|
const toastVariant = variant || toast.variant || "default";
|
|
9669
9504
|
const durationMs = toast.duration ? getDelayMs(toast.duration, 5e3) : 5e3;
|
|
@@ -9731,7 +9566,7 @@ var ToastRoot = React48.forwardRef(
|
|
|
9731
9566
|
}
|
|
9732
9567
|
);
|
|
9733
9568
|
ToastRoot.displayName = ToastPrimitives.Root.displayName;
|
|
9734
|
-
var ToastTitle =
|
|
9569
|
+
var ToastTitle = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9735
9570
|
ToastPrimitives.Title,
|
|
9736
9571
|
{
|
|
9737
9572
|
ref,
|
|
@@ -9740,7 +9575,7 @@ var ToastTitle = React48.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
9740
9575
|
}
|
|
9741
9576
|
));
|
|
9742
9577
|
ToastTitle.displayName = ToastPrimitives.Title.displayName;
|
|
9743
|
-
var ToastDescription =
|
|
9578
|
+
var ToastDescription = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9744
9579
|
ToastPrimitives.Description,
|
|
9745
9580
|
{
|
|
9746
9581
|
ref,
|
|
@@ -9749,7 +9584,7 @@ var ToastDescription = React48.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
9749
9584
|
}
|
|
9750
9585
|
));
|
|
9751
9586
|
ToastDescription.displayName = ToastPrimitives.Description.displayName;
|
|
9752
|
-
var ToastAction =
|
|
9587
|
+
var ToastAction = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9753
9588
|
ToastPrimitives.Action,
|
|
9754
9589
|
{
|
|
9755
9590
|
ref,
|
|
@@ -9764,7 +9599,7 @@ var ToastAction = React48.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
9764
9599
|
}
|
|
9765
9600
|
));
|
|
9766
9601
|
ToastAction.displayName = ToastPrimitives.Action.displayName;
|
|
9767
|
-
var ToastClose =
|
|
9602
|
+
var ToastClose = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9768
9603
|
ToastPrimitives.Close,
|
|
9769
9604
|
{
|
|
9770
9605
|
ref,
|
|
@@ -9797,7 +9632,7 @@ var positionClasses = {
|
|
|
9797
9632
|
"bottom-center": `fixed ${TOAST_TOKENS.position.spacing.bottom} inset-x-0 z-[100] flex flex-col-reverse items-center ${TOAST_TOKENS.spacing.gap}`,
|
|
9798
9633
|
"bottom-right": `fixed ${TOAST_TOKENS.position.spacing.bottom} ${TOAST_TOKENS.position.spacing.right} z-[100] flex flex-col-reverse ${TOAST_TOKENS.spacing.gap}`
|
|
9799
9634
|
};
|
|
9800
|
-
var ToastViewport =
|
|
9635
|
+
var ToastViewport = React49.forwardRef(
|
|
9801
9636
|
({ position = "top-right", className, ...props }, ref) => {
|
|
9802
9637
|
return /* @__PURE__ */ jsx(
|
|
9803
9638
|
ToastPrimitives.Viewport,
|
|
@@ -9814,16 +9649,16 @@ var ToastViewport = React48.forwardRef(
|
|
|
9814
9649
|
}
|
|
9815
9650
|
);
|
|
9816
9651
|
ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
|
|
9817
|
-
var ToastContext =
|
|
9652
|
+
var ToastContext = React49.createContext(void 0);
|
|
9818
9653
|
function ToastProvider({
|
|
9819
9654
|
children,
|
|
9820
9655
|
position = "top-right",
|
|
9821
9656
|
swipeDirection = "right",
|
|
9822
9657
|
duration = 5e3
|
|
9823
9658
|
}) {
|
|
9824
|
-
const [toasts, setToasts] =
|
|
9825
|
-
const [openStates, setOpenStates] =
|
|
9826
|
-
const toast =
|
|
9659
|
+
const [toasts, setToasts] = React49.useState([]);
|
|
9660
|
+
const [openStates, setOpenStates] = React49.useState({});
|
|
9661
|
+
const toast = React49.useCallback((options) => {
|
|
9827
9662
|
const id = Math.random().toString(36).substr(2, 9);
|
|
9828
9663
|
const newToast = {
|
|
9829
9664
|
id,
|
|
@@ -9834,7 +9669,7 @@ function ToastProvider({
|
|
|
9834
9669
|
setOpenStates((prev) => ({ ...prev, [id]: true }));
|
|
9835
9670
|
return id;
|
|
9836
9671
|
}, []);
|
|
9837
|
-
const dismiss =
|
|
9672
|
+
const dismiss = React49.useCallback((id) => {
|
|
9838
9673
|
setOpenStates((prev) => ({ ...prev, [id]: false }));
|
|
9839
9674
|
setTimeout(() => {
|
|
9840
9675
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
@@ -9845,7 +9680,7 @@ function ToastProvider({
|
|
|
9845
9680
|
});
|
|
9846
9681
|
}, 300);
|
|
9847
9682
|
}, []);
|
|
9848
|
-
const dismissAll =
|
|
9683
|
+
const dismissAll = React49.useCallback(() => {
|
|
9849
9684
|
setOpenStates((prev) => {
|
|
9850
9685
|
const next = { ...prev };
|
|
9851
9686
|
Object.keys(next).forEach((id) => {
|
|
@@ -9858,7 +9693,7 @@ function ToastProvider({
|
|
|
9858
9693
|
setOpenStates({});
|
|
9859
9694
|
}, 300);
|
|
9860
9695
|
}, []);
|
|
9861
|
-
const contextValue =
|
|
9696
|
+
const contextValue = React49.useMemo(
|
|
9862
9697
|
() => ({
|
|
9863
9698
|
toast,
|
|
9864
9699
|
dismiss,
|
|
@@ -9889,7 +9724,7 @@ function ToastProvider({
|
|
|
9889
9724
|
] }) });
|
|
9890
9725
|
}
|
|
9891
9726
|
function useToast() {
|
|
9892
|
-
const context =
|
|
9727
|
+
const context = React49.useContext(ToastContext);
|
|
9893
9728
|
if (context === void 0) {
|
|
9894
9729
|
throw new Error("useToast must be used within a ToastProvider");
|
|
9895
9730
|
}
|
|
@@ -9902,7 +9737,7 @@ function notifyListeners() {
|
|
|
9902
9737
|
}
|
|
9903
9738
|
function useGlobalToast() {
|
|
9904
9739
|
const [toasts, setToasts] = useState(globalToasts);
|
|
9905
|
-
|
|
9740
|
+
React49.useEffect(() => {
|
|
9906
9741
|
const listener = () => {
|
|
9907
9742
|
setToasts([...globalToasts]);
|
|
9908
9743
|
};
|
|
@@ -9985,8 +9820,8 @@ function useFocusLock({
|
|
|
9985
9820
|
returnFocusRef,
|
|
9986
9821
|
additionalFocusableElements = []
|
|
9987
9822
|
}) {
|
|
9988
|
-
const previousActiveElementRef =
|
|
9989
|
-
|
|
9823
|
+
const previousActiveElementRef = React49.useRef(null);
|
|
9824
|
+
React49.useEffect(() => {
|
|
9990
9825
|
if (!enabled || !containerRef.current) {
|
|
9991
9826
|
return;
|
|
9992
9827
|
}
|
|
@@ -10233,9 +10068,9 @@ var CONTEXT_MENU_TOKENS = {
|
|
|
10233
10068
|
indicator: {
|
|
10234
10069
|
size: "size-4"}
|
|
10235
10070
|
};
|
|
10236
|
-
var ContextMenuSizeContext =
|
|
10071
|
+
var ContextMenuSizeContext = React49.createContext(void 0);
|
|
10237
10072
|
function useContextMenuSize(providedSize) {
|
|
10238
|
-
const contextSize =
|
|
10073
|
+
const contextSize = React49.useContext(ContextMenuSizeContext);
|
|
10239
10074
|
const baseSize = providedSize ? getBaseValue(providedSize) : void 0;
|
|
10240
10075
|
return baseSize ?? contextSize ?? "md";
|
|
10241
10076
|
}
|
|
@@ -10302,11 +10137,11 @@ var ContextMenuRoot = ({ children, ...props }) => {
|
|
|
10302
10137
|
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Root, { ...props, children });
|
|
10303
10138
|
};
|
|
10304
10139
|
ContextMenuRoot.displayName = ContextMenuPrimitive.Root.displayName;
|
|
10305
|
-
var ContextMenuTrigger =
|
|
10140
|
+
var ContextMenuTrigger = React49.forwardRef(({ className, ...props }, ref) => {
|
|
10306
10141
|
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Trigger, { ref, className: cn(className), ...props });
|
|
10307
10142
|
});
|
|
10308
10143
|
ContextMenuTrigger.displayName = ContextMenuPrimitive.Trigger.displayName;
|
|
10309
|
-
var ContextMenuContent =
|
|
10144
|
+
var ContextMenuContent = React49.forwardRef(({ className, size = "md", width, padding, radius, surface, ...props }, ref) => {
|
|
10310
10145
|
const baseSize = getBaseValue(size) ?? "md";
|
|
10311
10146
|
const baseWidth = width ? getBaseValue(width) : void 0;
|
|
10312
10147
|
const basePadding = padding ? getBaseValue(padding) : void 0;
|
|
@@ -10335,7 +10170,7 @@ var ContextMenuContent = React48.forwardRef(({ className, size = "md", width, pa
|
|
|
10335
10170
|
) }) });
|
|
10336
10171
|
});
|
|
10337
10172
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
10338
|
-
var ContextMenuItem =
|
|
10173
|
+
var ContextMenuItem = React49.forwardRef(({ className, size, tone = "neutral", gap, inset, ...props }, ref) => {
|
|
10339
10174
|
const baseSize = useContextMenuSize(size);
|
|
10340
10175
|
const baseGap = gap ? getBaseValue(gap) : void 0;
|
|
10341
10176
|
const gapClass = getSpacingClass2("gap", baseGap);
|
|
@@ -10357,7 +10192,7 @@ var ContextMenuItem = React48.forwardRef(({ className, size, tone = "neutral", g
|
|
|
10357
10192
|
);
|
|
10358
10193
|
});
|
|
10359
10194
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
10360
|
-
var ContextMenuCheckboxItem =
|
|
10195
|
+
var ContextMenuCheckboxItem = React49.forwardRef(({ className, size, tone = "neutral", gap, children, ...props }, ref) => {
|
|
10361
10196
|
const baseSize = useContextMenuSize(size);
|
|
10362
10197
|
const baseGap = gap ? getBaseValue(gap) : void 0;
|
|
10363
10198
|
const gapClass = getSpacingClass2("gap", baseGap);
|
|
@@ -10382,11 +10217,11 @@ var ContextMenuCheckboxItem = React48.forwardRef(({ className, size, tone = "neu
|
|
|
10382
10217
|
);
|
|
10383
10218
|
});
|
|
10384
10219
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
10385
|
-
var ContextMenuRadioGroup =
|
|
10220
|
+
var ContextMenuRadioGroup = React49.forwardRef(({ className, ...props }, ref) => {
|
|
10386
10221
|
return /* @__PURE__ */ jsx(ContextMenuPrimitive.RadioGroup, { ref, className: cn(className), ...props });
|
|
10387
10222
|
});
|
|
10388
10223
|
ContextMenuRadioGroup.displayName = ContextMenuPrimitive.RadioGroup.displayName;
|
|
10389
|
-
var ContextMenuRadioItem =
|
|
10224
|
+
var ContextMenuRadioItem = React49.forwardRef(({ className, size, tone = "neutral", gap, children, ...props }, ref) => {
|
|
10390
10225
|
const baseSize = useContextMenuSize(size);
|
|
10391
10226
|
const baseGap = gap ? getBaseValue(gap) : void 0;
|
|
10392
10227
|
const gapClass = getSpacingClass2("gap", baseGap);
|
|
@@ -10411,7 +10246,7 @@ var ContextMenuRadioItem = React48.forwardRef(({ className, size, tone = "neutra
|
|
|
10411
10246
|
);
|
|
10412
10247
|
});
|
|
10413
10248
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
10414
|
-
var ContextMenuSeparator =
|
|
10249
|
+
var ContextMenuSeparator = React49.forwardRef(({ className, ...props }, ref) => {
|
|
10415
10250
|
return /* @__PURE__ */ jsx(
|
|
10416
10251
|
ContextMenuPrimitive.Separator,
|
|
10417
10252
|
{
|
|
@@ -10425,7 +10260,7 @@ var ContextMenuSeparator = React48.forwardRef(({ className, ...props }, ref) =>
|
|
|
10425
10260
|
);
|
|
10426
10261
|
});
|
|
10427
10262
|
ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
|
|
10428
|
-
var ContextMenuLabel =
|
|
10263
|
+
var ContextMenuLabel = React49.forwardRef(({ className, padding, ...props }, ref) => {
|
|
10429
10264
|
const basePadding = padding ? getBaseValue(padding) : void 0;
|
|
10430
10265
|
const paddingClass = getSpacingClass2("p", basePadding);
|
|
10431
10266
|
return /* @__PURE__ */ jsx(
|
|
@@ -10447,7 +10282,7 @@ var ContextMenuSub = ({ children, ...props }) => {
|
|
|
10447
10282
|
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Sub, { ...props, children });
|
|
10448
10283
|
};
|
|
10449
10284
|
ContextMenuSub.displayName = ContextMenuPrimitive.Sub.displayName;
|
|
10450
|
-
var ContextMenuSubTrigger =
|
|
10285
|
+
var ContextMenuSubTrigger = React49.forwardRef(({ className, size, tone = "neutral", gap, children, ...props }, ref) => {
|
|
10451
10286
|
const baseSize = useContextMenuSize(size);
|
|
10452
10287
|
const baseGap = gap ? getBaseValue(gap) : void 0;
|
|
10453
10288
|
const gapClass = getSpacingClass2("gap", baseGap);
|
|
@@ -10472,8 +10307,8 @@ var ContextMenuSubTrigger = React48.forwardRef(({ className, size, tone = "neutr
|
|
|
10472
10307
|
);
|
|
10473
10308
|
});
|
|
10474
10309
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
10475
|
-
var ContextMenuSubContent =
|
|
10476
|
-
const contextSize =
|
|
10310
|
+
var ContextMenuSubContent = React49.forwardRef(({ className, size, width, padding, radius, surface, ...props }, ref) => {
|
|
10311
|
+
const contextSize = React49.useContext(ContextMenuSizeContext);
|
|
10477
10312
|
const baseSize = size ? getBaseValue(size) : contextSize ?? "md";
|
|
10478
10313
|
const baseWidth = width ? getBaseValue(width) : void 0;
|
|
10479
10314
|
const basePadding = padding ? getBaseValue(padding) : void 0;
|
|
@@ -10516,18 +10351,18 @@ var ContextMenu = {
|
|
|
10516
10351
|
SubTrigger: ContextMenuSubTrigger,
|
|
10517
10352
|
SubContent: ContextMenuSubContent
|
|
10518
10353
|
};
|
|
10519
|
-
var NotificationContext =
|
|
10354
|
+
var NotificationContext = React49.createContext(void 0);
|
|
10520
10355
|
function NotificationCenterProvider({
|
|
10521
10356
|
children,
|
|
10522
10357
|
maxHistory = 100,
|
|
10523
10358
|
persistent = true
|
|
10524
10359
|
}) {
|
|
10525
|
-
const [notifications, setNotifications] =
|
|
10526
|
-
const [history, setHistory] =
|
|
10527
|
-
const remove =
|
|
10360
|
+
const [notifications, setNotifications] = React49.useState([]);
|
|
10361
|
+
const [history, setHistory] = React49.useState([]);
|
|
10362
|
+
const remove = React49.useCallback((id) => {
|
|
10528
10363
|
setNotifications((prev) => prev.filter((n) => n.id !== id));
|
|
10529
10364
|
}, []);
|
|
10530
|
-
const push =
|
|
10365
|
+
const push = React49.useCallback(
|
|
10531
10366
|
(options) => {
|
|
10532
10367
|
const id = Math.random().toString(36).substr(2, 9);
|
|
10533
10368
|
const timestamp = Date.now();
|
|
@@ -10572,13 +10407,13 @@ function NotificationCenterProvider({
|
|
|
10572
10407
|
},
|
|
10573
10408
|
[maxHistory, persistent]
|
|
10574
10409
|
);
|
|
10575
|
-
const clearAll =
|
|
10410
|
+
const clearAll = React49.useCallback(() => {
|
|
10576
10411
|
setNotifications([]);
|
|
10577
10412
|
}, []);
|
|
10578
|
-
const clearChannel =
|
|
10413
|
+
const clearChannel = React49.useCallback((channel) => {
|
|
10579
10414
|
setNotifications((prev) => prev.filter((n) => n.channel !== channel));
|
|
10580
10415
|
}, []);
|
|
10581
|
-
const groupBy =
|
|
10416
|
+
const groupBy = React49.useCallback(
|
|
10582
10417
|
(fn) => {
|
|
10583
10418
|
return notifications.reduce(
|
|
10584
10419
|
(acc, notification) => {
|
|
@@ -10594,30 +10429,30 @@ function NotificationCenterProvider({
|
|
|
10594
10429
|
},
|
|
10595
10430
|
[notifications]
|
|
10596
10431
|
);
|
|
10597
|
-
const getHistory =
|
|
10432
|
+
const getHistory = React49.useCallback(() => {
|
|
10598
10433
|
return history;
|
|
10599
10434
|
}, [history]);
|
|
10600
|
-
const getByChannel =
|
|
10435
|
+
const getByChannel = React49.useCallback(
|
|
10601
10436
|
(channel) => {
|
|
10602
10437
|
return notifications.filter((n) => n.channel === channel);
|
|
10603
10438
|
},
|
|
10604
10439
|
[notifications]
|
|
10605
10440
|
);
|
|
10606
|
-
const getAll =
|
|
10441
|
+
const getAll = React49.useCallback(() => {
|
|
10607
10442
|
return notifications;
|
|
10608
10443
|
}, [notifications]);
|
|
10609
|
-
const markAsRead =
|
|
10444
|
+
const markAsRead = React49.useCallback((id) => {
|
|
10610
10445
|
setNotifications((prev) => prev.map((n) => n.id === id ? { ...n, read: true } : n));
|
|
10611
10446
|
setHistory((prev) => prev.map((n) => n.id === id ? { ...n, read: true } : n));
|
|
10612
10447
|
}, []);
|
|
10613
|
-
const markAllAsRead =
|
|
10448
|
+
const markAllAsRead = React49.useCallback(() => {
|
|
10614
10449
|
setNotifications((prev) => prev.map((n) => ({ ...n, read: true })));
|
|
10615
10450
|
setHistory((prev) => prev.map((n) => ({ ...n, read: true })));
|
|
10616
10451
|
}, []);
|
|
10617
|
-
const getUnreadCount =
|
|
10452
|
+
const getUnreadCount = React49.useCallback(() => {
|
|
10618
10453
|
return notifications.filter((n) => !n.read).length;
|
|
10619
10454
|
}, [notifications]);
|
|
10620
|
-
const contextValue =
|
|
10455
|
+
const contextValue = React49.useMemo(
|
|
10621
10456
|
() => ({
|
|
10622
10457
|
push,
|
|
10623
10458
|
remove,
|
|
@@ -10648,7 +10483,7 @@ function NotificationCenterProvider({
|
|
|
10648
10483
|
return /* @__PURE__ */ jsx(NotificationContext.Provider, { value: contextValue, children });
|
|
10649
10484
|
}
|
|
10650
10485
|
function useNotificationCenterContext() {
|
|
10651
|
-
const context =
|
|
10486
|
+
const context = React49.useContext(NotificationContext);
|
|
10652
10487
|
if (context === void 0) {
|
|
10653
10488
|
throw new Error(
|
|
10654
10489
|
"useNotificationCenterContext must be used within a NotificationCenterProvider"
|
|
@@ -10656,7 +10491,7 @@ function useNotificationCenterContext() {
|
|
|
10656
10491
|
}
|
|
10657
10492
|
return context;
|
|
10658
10493
|
}
|
|
10659
|
-
var NotificationCenterDismissAll =
|
|
10494
|
+
var NotificationCenterDismissAll = React49.forwardRef(({ confirm = false, confirmMessage = "Clear all notifications?", className, ...props }, ref) => {
|
|
10660
10495
|
const { clearAll, getAll } = useNotificationCenterContext();
|
|
10661
10496
|
const notifications = getAll();
|
|
10662
10497
|
const handleClick = () => {
|
|
@@ -10687,7 +10522,7 @@ var NotificationCenterDismissAll = React48.forwardRef(({ confirm = false, confir
|
|
|
10687
10522
|
);
|
|
10688
10523
|
});
|
|
10689
10524
|
NotificationCenterDismissAll.displayName = "NotificationCenter.DismissAll";
|
|
10690
|
-
var NotificationCenterGroupHeader =
|
|
10525
|
+
var NotificationCenterGroupHeader = React49.forwardRef(
|
|
10691
10526
|
({ label, collapsed = false, onToggleCollapse, collapsible = false, className, ...props }, ref) => {
|
|
10692
10527
|
return /* @__PURE__ */ jsxs(
|
|
10693
10528
|
"div",
|
|
@@ -10750,7 +10585,7 @@ function formatRelativeTime(timestamp) {
|
|
|
10750
10585
|
if (days < 7) return `${days}d ago`;
|
|
10751
10586
|
return new Date(timestamp).toLocaleDateString();
|
|
10752
10587
|
}
|
|
10753
|
-
var NotificationCenterItem =
|
|
10588
|
+
var NotificationCenterItem = React49.forwardRef(
|
|
10754
10589
|
({ notification, onDismiss, onClick, expandable: _expandable = false, className, ...props }, ref) => {
|
|
10755
10590
|
const variant = notification.variant || "default";
|
|
10756
10591
|
const Icon3 = getNotificationIcon(variant);
|
|
@@ -10825,7 +10660,7 @@ var NotificationCenterItem = React48.forwardRef(
|
|
|
10825
10660
|
}
|
|
10826
10661
|
);
|
|
10827
10662
|
NotificationCenterItem.displayName = "NotificationCenter.Item";
|
|
10828
|
-
var NotificationCenterList =
|
|
10663
|
+
var NotificationCenterList = React49.forwardRef(({ children, className, "aria-label": ariaLabel, ...props }, ref) => {
|
|
10829
10664
|
return /* @__PURE__ */ jsx(
|
|
10830
10665
|
Stack,
|
|
10831
10666
|
{
|
|
@@ -10982,11 +10817,11 @@ function groupByDate(notification) {
|
|
|
10982
10817
|
if (days < 30) return "This Month";
|
|
10983
10818
|
return "Older";
|
|
10984
10819
|
}
|
|
10985
|
-
var NotificationCenterPanel =
|
|
10820
|
+
var NotificationCenterPanel = React49.forwardRef(
|
|
10986
10821
|
({ isOpen, onClose, groupBy = groupByDate, width = "md", autoCollapse = true, returnFocusRef }, ref) => {
|
|
10987
|
-
const panelRef =
|
|
10822
|
+
const panelRef = React49.useRef(null);
|
|
10988
10823
|
const { getAll, markAsRead } = useNotificationCenterContext();
|
|
10989
|
-
const [collapsedGroups, setCollapsedGroups] =
|
|
10824
|
+
const [collapsedGroups, setCollapsedGroups] = React49.useState(/* @__PURE__ */ new Set());
|
|
10990
10825
|
const { handlers: swipeHandlers } = useSwipe({
|
|
10991
10826
|
directions: ["right"],
|
|
10992
10827
|
threshold: 100,
|
|
@@ -10996,7 +10831,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
10996
10831
|
enabled: isOpen
|
|
10997
10832
|
});
|
|
10998
10833
|
const notifications = getAll();
|
|
10999
|
-
const grouped =
|
|
10834
|
+
const grouped = React49.useMemo(() => {
|
|
11000
10835
|
return groupBy ? notifications.reduce(
|
|
11001
10836
|
(acc, notification) => {
|
|
11002
10837
|
const key = groupBy(notification);
|
|
@@ -11009,7 +10844,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
11009
10844
|
{}
|
|
11010
10845
|
) : { default: notifications };
|
|
11011
10846
|
}, [notifications, groupBy]);
|
|
11012
|
-
|
|
10847
|
+
React49.useEffect(() => {
|
|
11013
10848
|
if (autoCollapse && isOpen) {
|
|
11014
10849
|
const groups = Object.keys(grouped);
|
|
11015
10850
|
const olderGroups = groups.filter((g) => g !== "Today" && g !== "Yesterday");
|
|
@@ -11021,7 +10856,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
11021
10856
|
enabled: isOpen,
|
|
11022
10857
|
returnFocusRef
|
|
11023
10858
|
});
|
|
11024
|
-
|
|
10859
|
+
React49.useEffect(() => {
|
|
11025
10860
|
if (!isOpen) return;
|
|
11026
10861
|
function handleKeyDown(event) {
|
|
11027
10862
|
if (event.key === "Escape") {
|
|
@@ -11033,7 +10868,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
11033
10868
|
document.removeEventListener("keydown", handleKeyDown);
|
|
11034
10869
|
};
|
|
11035
10870
|
}, [isOpen, onClose]);
|
|
11036
|
-
|
|
10871
|
+
React49.useEffect(() => {
|
|
11037
10872
|
if (isOpen) {
|
|
11038
10873
|
notifications.forEach((n) => {
|
|
11039
10874
|
if (!n.read) {
|
|
@@ -11042,7 +10877,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
11042
10877
|
});
|
|
11043
10878
|
}
|
|
11044
10879
|
}, [isOpen, notifications, markAsRead]);
|
|
11045
|
-
|
|
10880
|
+
React49.useEffect(() => {
|
|
11046
10881
|
if (isOpen && typeof window !== "undefined") {
|
|
11047
10882
|
document.body.style.overflow = "hidden";
|
|
11048
10883
|
return () => {
|
|
@@ -11157,7 +10992,7 @@ var NotificationCenterPanel = React48.forwardRef(
|
|
|
11157
10992
|
}
|
|
11158
10993
|
);
|
|
11159
10994
|
NotificationCenterPanel.displayName = "NotificationCenter.Panel";
|
|
11160
|
-
var NotificationCenterTrigger =
|
|
10995
|
+
var NotificationCenterTrigger = React49.forwardRef(({ onClick, showBadge = true, className, ...props }, ref) => {
|
|
11161
10996
|
const { getUnreadCount } = useNotificationCenterContext();
|
|
11162
10997
|
const unreadCount = getUnreadCount();
|
|
11163
10998
|
return /* @__PURE__ */ jsxs(
|
|
@@ -11189,7 +11024,7 @@ var NotificationCenterTrigger = React48.forwardRef(({ onClick, showBadge = true,
|
|
|
11189
11024
|
NotificationCenterTrigger.displayName = "NotificationCenter.Trigger";
|
|
11190
11025
|
function useNotificationCenter() {
|
|
11191
11026
|
const context = useNotificationCenterContext();
|
|
11192
|
-
const success =
|
|
11027
|
+
const success = React49.useCallback(
|
|
11193
11028
|
(message, options) => {
|
|
11194
11029
|
return context.push({
|
|
11195
11030
|
...options,
|
|
@@ -11200,7 +11035,7 @@ function useNotificationCenter() {
|
|
|
11200
11035
|
},
|
|
11201
11036
|
[context]
|
|
11202
11037
|
);
|
|
11203
|
-
const error =
|
|
11038
|
+
const error = React49.useCallback(
|
|
11204
11039
|
(message, options) => {
|
|
11205
11040
|
return context.push({
|
|
11206
11041
|
...options,
|
|
@@ -11211,7 +11046,7 @@ function useNotificationCenter() {
|
|
|
11211
11046
|
},
|
|
11212
11047
|
[context]
|
|
11213
11048
|
);
|
|
11214
|
-
const info =
|
|
11049
|
+
const info = React49.useCallback(
|
|
11215
11050
|
(message, options) => {
|
|
11216
11051
|
return context.push({
|
|
11217
11052
|
...options,
|
|
@@ -11222,7 +11057,7 @@ function useNotificationCenter() {
|
|
|
11222
11057
|
},
|
|
11223
11058
|
[context]
|
|
11224
11059
|
);
|
|
11225
|
-
const warning =
|
|
11060
|
+
const warning = React49.useCallback(
|
|
11226
11061
|
(message, options) => {
|
|
11227
11062
|
return context.push({
|
|
11228
11063
|
...options,
|
|
@@ -11233,7 +11068,7 @@ function useNotificationCenter() {
|
|
|
11233
11068
|
},
|
|
11234
11069
|
[context]
|
|
11235
11070
|
);
|
|
11236
|
-
const system =
|
|
11071
|
+
const system = React49.useCallback(
|
|
11237
11072
|
(message, options) => {
|
|
11238
11073
|
return context.push({
|
|
11239
11074
|
...options,
|
|
@@ -11244,7 +11079,7 @@ function useNotificationCenter() {
|
|
|
11244
11079
|
},
|
|
11245
11080
|
[context]
|
|
11246
11081
|
);
|
|
11247
|
-
const log =
|
|
11082
|
+
const log = React49.useCallback(
|
|
11248
11083
|
(message, options) => {
|
|
11249
11084
|
return context.push({
|
|
11250
11085
|
...options,
|
|
@@ -11255,7 +11090,7 @@ function useNotificationCenter() {
|
|
|
11255
11090
|
},
|
|
11256
11091
|
[context]
|
|
11257
11092
|
);
|
|
11258
|
-
return
|
|
11093
|
+
return React49.useMemo(
|
|
11259
11094
|
() => ({
|
|
11260
11095
|
success,
|
|
11261
11096
|
error,
|
|
@@ -11310,12 +11145,12 @@ var popoverContentVariants = cva(
|
|
|
11310
11145
|
}
|
|
11311
11146
|
}
|
|
11312
11147
|
);
|
|
11313
|
-
var PopoverContent =
|
|
11314
|
-
const sideOffsetPx =
|
|
11148
|
+
var PopoverContent = React49.forwardRef(({ className, variant, size, align = "center", sideOffset, alignOffset, ...props }, ref) => {
|
|
11149
|
+
const sideOffsetPx = React49.useMemo(() => {
|
|
11315
11150
|
const baseOffset = getBaseValue(sideOffset);
|
|
11316
11151
|
return baseOffset ? getSpacingPx(baseOffset) : 4;
|
|
11317
11152
|
}, [sideOffset]);
|
|
11318
|
-
const alignOffsetPx =
|
|
11153
|
+
const alignOffsetPx = React49.useMemo(() => {
|
|
11319
11154
|
const baseOffset = getBaseValue(alignOffset);
|
|
11320
11155
|
return baseOffset ? getSpacingPx(baseOffset) : void 0;
|
|
11321
11156
|
}, [alignOffset]);
|
|
@@ -11333,9 +11168,9 @@ var PopoverContent = React48.forwardRef(({ className, variant, size, align = "ce
|
|
|
11333
11168
|
) });
|
|
11334
11169
|
});
|
|
11335
11170
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
11336
|
-
var HoverCardContext =
|
|
11171
|
+
var HoverCardContext = React49.createContext(null);
|
|
11337
11172
|
function useHoverCardContext() {
|
|
11338
|
-
const context =
|
|
11173
|
+
const context = React49.useContext(HoverCardContext);
|
|
11339
11174
|
if (!context) {
|
|
11340
11175
|
throw new Error("HoverCard components must be used within HoverCardRoot");
|
|
11341
11176
|
}
|
|
@@ -11350,20 +11185,20 @@ function HoverCardRoot({
|
|
|
11350
11185
|
modal = false,
|
|
11351
11186
|
...props
|
|
11352
11187
|
}) {
|
|
11353
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
11354
|
-
const openTimeoutRef =
|
|
11355
|
-
const closeTimeoutRef =
|
|
11356
|
-
const openDelayMs =
|
|
11188
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React49.useState(defaultOpen);
|
|
11189
|
+
const openTimeoutRef = React49.useRef(null);
|
|
11190
|
+
const closeTimeoutRef = React49.useRef(null);
|
|
11191
|
+
const openDelayMs = React49.useMemo(() => {
|
|
11357
11192
|
const baseDelay = getBaseValue(openDelay);
|
|
11358
11193
|
return baseDelay ? getDurationMs(baseDelay) : 0;
|
|
11359
11194
|
}, [openDelay]);
|
|
11360
|
-
const closeDelayMs =
|
|
11195
|
+
const closeDelayMs = React49.useMemo(() => {
|
|
11361
11196
|
const baseDelay = getBaseValue(closeDelay);
|
|
11362
11197
|
return baseDelay ? getDurationMs(baseDelay) : 300;
|
|
11363
11198
|
}, [closeDelay]);
|
|
11364
11199
|
const isControlled = controlledOpen !== void 0;
|
|
11365
11200
|
const open = isControlled ? controlledOpen : uncontrolledOpen;
|
|
11366
|
-
const handleOpenChange =
|
|
11201
|
+
const handleOpenChange = React49.useCallback(
|
|
11367
11202
|
(newOpen) => {
|
|
11368
11203
|
if (openTimeoutRef.current) {
|
|
11369
11204
|
clearTimeout(openTimeoutRef.current);
|
|
@@ -11403,7 +11238,7 @@ function HoverCardRoot({
|
|
|
11403
11238
|
},
|
|
11404
11239
|
[openDelayMs, closeDelayMs, isControlled, controlledOnOpenChange]
|
|
11405
11240
|
);
|
|
11406
|
-
|
|
11241
|
+
React49.useEffect(() => {
|
|
11407
11242
|
return () => {
|
|
11408
11243
|
if (openTimeoutRef.current) {
|
|
11409
11244
|
clearTimeout(openTimeoutRef.current);
|
|
@@ -11413,7 +11248,7 @@ function HoverCardRoot({
|
|
|
11413
11248
|
}
|
|
11414
11249
|
};
|
|
11415
11250
|
}, []);
|
|
11416
|
-
const contextValue =
|
|
11251
|
+
const contextValue = React49.useMemo(
|
|
11417
11252
|
() => ({
|
|
11418
11253
|
onOpenChange: handleOpenChange
|
|
11419
11254
|
}),
|
|
@@ -11422,17 +11257,17 @@ function HoverCardRoot({
|
|
|
11422
11257
|
return /* @__PURE__ */ jsx(HoverCardContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(Popover, { open, onOpenChange: handleOpenChange, defaultOpen, modal, children: props.children }) });
|
|
11423
11258
|
}
|
|
11424
11259
|
HoverCardRoot.displayName = "HoverCardRoot";
|
|
11425
|
-
var HoverCardContent =
|
|
11260
|
+
var HoverCardContent = React49.forwardRef(
|
|
11426
11261
|
({ onMouseEnter, onMouseLeave, ...props }, ref) => {
|
|
11427
11262
|
const { onOpenChange } = useHoverCardContext();
|
|
11428
|
-
const handleMouseEnter =
|
|
11263
|
+
const handleMouseEnter = React49.useCallback(
|
|
11429
11264
|
(event) => {
|
|
11430
11265
|
onOpenChange(true);
|
|
11431
11266
|
onMouseEnter?.(event);
|
|
11432
11267
|
},
|
|
11433
11268
|
[onOpenChange, onMouseEnter]
|
|
11434
11269
|
);
|
|
11435
|
-
const handleMouseLeave =
|
|
11270
|
+
const handleMouseLeave = React49.useCallback(
|
|
11436
11271
|
(event) => {
|
|
11437
11272
|
onOpenChange(false);
|
|
11438
11273
|
onMouseLeave?.(event);
|
|
@@ -11452,31 +11287,31 @@ var HoverCardContent = React48.forwardRef(
|
|
|
11452
11287
|
}
|
|
11453
11288
|
);
|
|
11454
11289
|
HoverCardContent.displayName = "HoverCardContent";
|
|
11455
|
-
var HoverCardTrigger =
|
|
11290
|
+
var HoverCardTrigger = React49.forwardRef(
|
|
11456
11291
|
({ onMouseEnter, onMouseLeave, onFocus, onBlur, asChild = false, ...props }, ref) => {
|
|
11457
11292
|
const { onOpenChange } = useHoverCardContext();
|
|
11458
|
-
const handleMouseEnter =
|
|
11293
|
+
const handleMouseEnter = React49.useCallback(
|
|
11459
11294
|
(event) => {
|
|
11460
11295
|
onOpenChange(true);
|
|
11461
11296
|
onMouseEnter?.(event);
|
|
11462
11297
|
},
|
|
11463
11298
|
[onOpenChange, onMouseEnter]
|
|
11464
11299
|
);
|
|
11465
|
-
const handleMouseLeave =
|
|
11300
|
+
const handleMouseLeave = React49.useCallback(
|
|
11466
11301
|
(event) => {
|
|
11467
11302
|
onOpenChange(false);
|
|
11468
11303
|
onMouseLeave?.(event);
|
|
11469
11304
|
},
|
|
11470
11305
|
[onOpenChange, onMouseLeave]
|
|
11471
11306
|
);
|
|
11472
|
-
const handleFocus =
|
|
11307
|
+
const handleFocus = React49.useCallback(
|
|
11473
11308
|
(event) => {
|
|
11474
11309
|
onOpenChange(true);
|
|
11475
11310
|
onFocus?.(event);
|
|
11476
11311
|
},
|
|
11477
11312
|
[onOpenChange, onFocus]
|
|
11478
11313
|
);
|
|
11479
|
-
const handleBlur =
|
|
11314
|
+
const handleBlur = React49.useCallback(
|
|
11480
11315
|
(event) => {
|
|
11481
11316
|
onOpenChange(false);
|
|
11482
11317
|
onBlur?.(event);
|
|
@@ -11500,7 +11335,7 @@ var HoverCardTrigger = React48.forwardRef(
|
|
|
11500
11335
|
}
|
|
11501
11336
|
);
|
|
11502
11337
|
HoverCardTrigger.displayName = "HoverCardTrigger";
|
|
11503
|
-
var DataListItem =
|
|
11338
|
+
var DataListItem = React49.forwardRef(
|
|
11504
11339
|
({ padding = "md", className, children, ...props }, ref) => {
|
|
11505
11340
|
const paddingValue = getBaseValue(padding);
|
|
11506
11341
|
const paddingKey = paddingValue && ["sm", "md", "lg"].includes(String(paddingValue)) ? String(paddingValue) : "md";
|
|
@@ -11523,7 +11358,7 @@ var DataListItem = React48.forwardRef(
|
|
|
11523
11358
|
}
|
|
11524
11359
|
);
|
|
11525
11360
|
DataListItem.displayName = "DataListItem";
|
|
11526
|
-
var DataListLabel =
|
|
11361
|
+
var DataListLabel = React49.forwardRef(
|
|
11527
11362
|
({ className, children, ...props }, ref) => {
|
|
11528
11363
|
return /* @__PURE__ */ jsx(
|
|
11529
11364
|
"dt",
|
|
@@ -11542,7 +11377,7 @@ var DataListLabel = React48.forwardRef(
|
|
|
11542
11377
|
}
|
|
11543
11378
|
);
|
|
11544
11379
|
DataListLabel.displayName = "DataListLabel";
|
|
11545
|
-
var DataListValue =
|
|
11380
|
+
var DataListValue = React49.forwardRef(
|
|
11546
11381
|
({ className, children, ...props }, ref) => {
|
|
11547
11382
|
return /* @__PURE__ */ jsx(
|
|
11548
11383
|
"dd",
|
|
@@ -11556,7 +11391,7 @@ var DataListValue = React48.forwardRef(
|
|
|
11556
11391
|
}
|
|
11557
11392
|
);
|
|
11558
11393
|
DataListValue.displayName = "DataListValue";
|
|
11559
|
-
var DataListRoot =
|
|
11394
|
+
var DataListRoot = React49.forwardRef(
|
|
11560
11395
|
({ labelWidth: _labelWidth = "md", className, children, ...props }, ref) => {
|
|
11561
11396
|
return /* @__PURE__ */ jsx("dl", { ref, className: cn(DATA_LIST_TOKENS.spacing.gap, className), ...props, children });
|
|
11562
11397
|
}
|
|
@@ -11691,7 +11526,7 @@ var TabsRoot = ({ children, ...props }) => {
|
|
|
11691
11526
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { ...props, children });
|
|
11692
11527
|
};
|
|
11693
11528
|
TabsRoot.displayName = TabsPrimitive.Root.displayName;
|
|
11694
|
-
var TabsList =
|
|
11529
|
+
var TabsList = React49.forwardRef(
|
|
11695
11530
|
({ className, size, variant, ...props }, ref) => {
|
|
11696
11531
|
const baseSize = getBaseValue(size) ?? "md";
|
|
11697
11532
|
const baseVariant = variant ?? "underline";
|
|
@@ -11712,7 +11547,7 @@ var TabsList = React48.forwardRef(
|
|
|
11712
11547
|
}
|
|
11713
11548
|
);
|
|
11714
11549
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
11715
|
-
var TabsTrigger =
|
|
11550
|
+
var TabsTrigger = React49.forwardRef(
|
|
11716
11551
|
({ className, size, variant, tone, leadingIcon, trailingIcon, icon, children, ...props }, ref) => {
|
|
11717
11552
|
const baseSize = getBaseValue(size) ?? "md";
|
|
11718
11553
|
const baseVariant = variant ?? "underline";
|
|
@@ -11761,7 +11596,7 @@ var TabsTrigger = React48.forwardRef(
|
|
|
11761
11596
|
}
|
|
11762
11597
|
);
|
|
11763
11598
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
11764
|
-
var TabsContent =
|
|
11599
|
+
var TabsContent = React49.forwardRef(
|
|
11765
11600
|
({ className, size, ...props }, ref) => {
|
|
11766
11601
|
const baseSize = getBaseValue(size) ?? "md";
|
|
11767
11602
|
return /* @__PURE__ */ jsx(
|
|
@@ -11826,17 +11661,17 @@ var segmentedControlItemVariants = cva(
|
|
|
11826
11661
|
}
|
|
11827
11662
|
}
|
|
11828
11663
|
);
|
|
11829
|
-
var SegmentedControlContext =
|
|
11664
|
+
var SegmentedControlContext = React49.createContext(
|
|
11830
11665
|
void 0
|
|
11831
11666
|
);
|
|
11832
11667
|
function useSegmentedControlContext() {
|
|
11833
|
-
const context =
|
|
11668
|
+
const context = React49.useContext(SegmentedControlContext);
|
|
11834
11669
|
if (!context) {
|
|
11835
11670
|
throw new Error("SegmentedControl components must be used within SegmentedControl.Root");
|
|
11836
11671
|
}
|
|
11837
11672
|
return context;
|
|
11838
11673
|
}
|
|
11839
|
-
var SegmentedControlRoot =
|
|
11674
|
+
var SegmentedControlRoot = React49.forwardRef(
|
|
11840
11675
|
({
|
|
11841
11676
|
value: controlledValue,
|
|
11842
11677
|
defaultValue,
|
|
@@ -11848,17 +11683,17 @@ var SegmentedControlRoot = React48.forwardRef(
|
|
|
11848
11683
|
children,
|
|
11849
11684
|
...props
|
|
11850
11685
|
}, ref) => {
|
|
11851
|
-
const [internalValue, setInternalValue] =
|
|
11686
|
+
const [internalValue, setInternalValue] = React49.useState(defaultValue || "");
|
|
11852
11687
|
const isControlled = controlledValue !== void 0;
|
|
11853
11688
|
const value = isControlled ? controlledValue : internalValue;
|
|
11854
|
-
const name =
|
|
11689
|
+
const name = React49.useMemo(() => {
|
|
11855
11690
|
if (propName) return propName;
|
|
11856
11691
|
if (typeof document !== "undefined") {
|
|
11857
11692
|
return `segmented-control-${Math.random().toString(36).substr(2, 9)}`;
|
|
11858
11693
|
}
|
|
11859
11694
|
return "segmented-control";
|
|
11860
11695
|
}, [propName]);
|
|
11861
|
-
const handleValueChange =
|
|
11696
|
+
const handleValueChange = React49.useCallback(
|
|
11862
11697
|
(newValue) => {
|
|
11863
11698
|
if (!isControlled) {
|
|
11864
11699
|
setInternalValue(newValue);
|
|
@@ -11867,7 +11702,7 @@ var SegmentedControlRoot = React48.forwardRef(
|
|
|
11867
11702
|
},
|
|
11868
11703
|
[isControlled, onValueChange]
|
|
11869
11704
|
);
|
|
11870
|
-
const contextValue =
|
|
11705
|
+
const contextValue = React49.useMemo(
|
|
11871
11706
|
() => ({
|
|
11872
11707
|
value,
|
|
11873
11708
|
onValueChange: handleValueChange,
|
|
@@ -11891,15 +11726,15 @@ var SegmentedControlRoot = React48.forwardRef(
|
|
|
11891
11726
|
}
|
|
11892
11727
|
);
|
|
11893
11728
|
SegmentedControlRoot.displayName = "SegmentedControl.Root";
|
|
11894
|
-
var SegmentedControlItem =
|
|
11729
|
+
var SegmentedControlItem = React49.forwardRef(
|
|
11895
11730
|
({ className, value, disabled, size, children, ...props }, ref) => {
|
|
11896
11731
|
const context = useSegmentedControlContext();
|
|
11897
11732
|
const isSelected = context.value === value;
|
|
11898
11733
|
const effectiveSize = size || context.size || "md";
|
|
11899
|
-
const itemRef =
|
|
11900
|
-
|
|
11734
|
+
const itemRef = React49.useRef(null);
|
|
11735
|
+
React49.useImperativeHandle(ref, () => itemRef.current);
|
|
11901
11736
|
const tabIndex = isSelected ? 0 : -1;
|
|
11902
|
-
const handleKeyDown =
|
|
11737
|
+
const handleKeyDown = React49.useCallback(
|
|
11903
11738
|
(event) => {
|
|
11904
11739
|
if (disabled) return;
|
|
11905
11740
|
const items = Array.from(
|
|
@@ -11983,7 +11818,7 @@ var SegmentedControl = Object.assign(SegmentedControlRoot, {
|
|
|
11983
11818
|
Root: SegmentedControlRoot,
|
|
11984
11819
|
Item: SegmentedControlItem
|
|
11985
11820
|
});
|
|
11986
|
-
var BreadcrumbsRoot =
|
|
11821
|
+
var BreadcrumbsRoot = React49.forwardRef(
|
|
11987
11822
|
({ items, separator, ariaLabel = "Breadcrumb", className, children, ...props }, ref) => {
|
|
11988
11823
|
const lastIndex = items.length - 1;
|
|
11989
11824
|
const defaultSeparator = /* @__PURE__ */ jsx(
|
|
@@ -12044,13 +11879,13 @@ var BreadcrumbsRoot = React48.forwardRef(
|
|
|
12044
11879
|
}
|
|
12045
11880
|
);
|
|
12046
11881
|
BreadcrumbsRoot.displayName = "Breadcrumbs.Root";
|
|
12047
|
-
var BreadcrumbsItem =
|
|
11882
|
+
var BreadcrumbsItem = React49.forwardRef(
|
|
12048
11883
|
({ className, children, ...props }, ref) => {
|
|
12049
11884
|
return /* @__PURE__ */ jsx("li", { ref, className: cn("flex items-center", className), ...props, children });
|
|
12050
11885
|
}
|
|
12051
11886
|
);
|
|
12052
11887
|
BreadcrumbsItem.displayName = "Breadcrumbs.Item";
|
|
12053
|
-
var BreadcrumbsSeparator =
|
|
11888
|
+
var BreadcrumbsSeparator = React49.forwardRef(
|
|
12054
11889
|
({ className, children, ...props }, ref) => {
|
|
12055
11890
|
return /* @__PURE__ */ jsx(
|
|
12056
11891
|
"span",
|
|
@@ -12099,7 +11934,7 @@ function getVisiblePages(currentPage, totalPages, delta = 2) {
|
|
|
12099
11934
|
}
|
|
12100
11935
|
return rangeWithDots;
|
|
12101
11936
|
}
|
|
12102
|
-
var PaginationRoot =
|
|
11937
|
+
var PaginationRoot = React49.forwardRef(
|
|
12103
11938
|
({
|
|
12104
11939
|
currentPage,
|
|
12105
11940
|
totalPages,
|
|
@@ -12112,7 +11947,7 @@ var PaginationRoot = React48.forwardRef(
|
|
|
12112
11947
|
}, ref) => {
|
|
12113
11948
|
const safeTotalPages = Math.max(1, totalPages);
|
|
12114
11949
|
const safeCurrentPage = Math.min(Math.max(1, currentPage), safeTotalPages);
|
|
12115
|
-
const handlePageChange =
|
|
11950
|
+
const handlePageChange = React49.useCallback(
|
|
12116
11951
|
(page) => {
|
|
12117
11952
|
const clamped = Math.min(Math.max(page, 1), safeTotalPages);
|
|
12118
11953
|
if (clamped !== safeCurrentPage) {
|
|
@@ -12121,7 +11956,7 @@ var PaginationRoot = React48.forwardRef(
|
|
|
12121
11956
|
},
|
|
12122
11957
|
[safeCurrentPage, safeTotalPages, onPageChange]
|
|
12123
11958
|
);
|
|
12124
|
-
const visiblePages =
|
|
11959
|
+
const visiblePages = React49.useMemo(
|
|
12125
11960
|
() => getVisiblePages(safeCurrentPage, safeTotalPages, delta),
|
|
12126
11961
|
[safeCurrentPage, safeTotalPages, delta]
|
|
12127
11962
|
);
|
|
@@ -12140,7 +11975,7 @@ var PaginationRoot = React48.forwardRef(
|
|
|
12140
11975
|
onClick: () => handlePageChange(safeCurrentPage - 1)
|
|
12141
11976
|
}
|
|
12142
11977
|
),
|
|
12143
|
-
visiblePages.map((page, index) => /* @__PURE__ */ jsx(
|
|
11978
|
+
visiblePages.map((page, index) => /* @__PURE__ */ jsx(React49.Fragment, { children: page === "..." ? /* @__PURE__ */ jsx(PaginationEllipsis, {}) : /* @__PURE__ */ jsx(
|
|
12144
11979
|
PaginationItem,
|
|
12145
11980
|
{
|
|
12146
11981
|
page,
|
|
@@ -12162,7 +11997,7 @@ var PaginationRoot = React48.forwardRef(
|
|
|
12162
11997
|
}
|
|
12163
11998
|
);
|
|
12164
11999
|
PaginationRoot.displayName = "Pagination.Root";
|
|
12165
|
-
var PaginationItem =
|
|
12000
|
+
var PaginationItem = React49.forwardRef(
|
|
12166
12001
|
({ className, page, isCurrent, disabled, onClick, ...props }, ref) => {
|
|
12167
12002
|
if (page === "...") {
|
|
12168
12003
|
return null;
|
|
@@ -12198,7 +12033,7 @@ var PaginationItem = React48.forwardRef(
|
|
|
12198
12033
|
}
|
|
12199
12034
|
);
|
|
12200
12035
|
PaginationItem.displayName = "Pagination.Item";
|
|
12201
|
-
var PaginationPrev =
|
|
12036
|
+
var PaginationPrev = React49.forwardRef(
|
|
12202
12037
|
({ className, disabled, onClick, ...props }, ref) => {
|
|
12203
12038
|
return /* @__PURE__ */ jsxs(
|
|
12204
12039
|
"button",
|
|
@@ -12232,7 +12067,7 @@ var PaginationPrev = React48.forwardRef(
|
|
|
12232
12067
|
}
|
|
12233
12068
|
);
|
|
12234
12069
|
PaginationPrev.displayName = "Pagination.Prev";
|
|
12235
|
-
var PaginationNext =
|
|
12070
|
+
var PaginationNext = React49.forwardRef(
|
|
12236
12071
|
({ className, disabled, onClick, ...props }, ref) => {
|
|
12237
12072
|
return /* @__PURE__ */ jsxs(
|
|
12238
12073
|
"button",
|
|
@@ -12266,7 +12101,7 @@ var PaginationNext = React48.forwardRef(
|
|
|
12266
12101
|
}
|
|
12267
12102
|
);
|
|
12268
12103
|
PaginationNext.displayName = "Pagination.Next";
|
|
12269
|
-
var PaginationEllipsis =
|
|
12104
|
+
var PaginationEllipsis = React49.forwardRef(
|
|
12270
12105
|
({ className, ...props }, ref) => {
|
|
12271
12106
|
return /* @__PURE__ */ jsx(
|
|
12272
12107
|
"span",
|
|
@@ -12294,7 +12129,7 @@ var Pagination = Object.assign(PaginationRoot, {
|
|
|
12294
12129
|
Next: PaginationNext,
|
|
12295
12130
|
Ellipsis: PaginationEllipsis
|
|
12296
12131
|
});
|
|
12297
|
-
var StepperRoot =
|
|
12132
|
+
var StepperRoot = React49.forwardRef(
|
|
12298
12133
|
({
|
|
12299
12134
|
steps,
|
|
12300
12135
|
activeStep,
|
|
@@ -12340,7 +12175,7 @@ var StepperRoot = React48.forwardRef(
|
|
|
12340
12175
|
}
|
|
12341
12176
|
);
|
|
12342
12177
|
StepperRoot.displayName = "Stepper.Root";
|
|
12343
|
-
var StepperItem =
|
|
12178
|
+
var StepperItem = React49.forwardRef(
|
|
12344
12179
|
({
|
|
12345
12180
|
className,
|
|
12346
12181
|
step,
|
|
@@ -12381,7 +12216,7 @@ var StepperItem = React48.forwardRef(
|
|
|
12381
12216
|
}
|
|
12382
12217
|
);
|
|
12383
12218
|
StepperItem.displayName = "Stepper.Item";
|
|
12384
|
-
var StepperIndicator =
|
|
12219
|
+
var StepperIndicator = React49.forwardRef(
|
|
12385
12220
|
({ className, index, isActive, isCompleted, disabled, icon, showNumber = true, ...props }, ref) => {
|
|
12386
12221
|
const baseClasses = cn(
|
|
12387
12222
|
NAVIGATION_TOKENS.sizes.sm.height,
|
|
@@ -12442,7 +12277,7 @@ var StepperIndicator = React48.forwardRef(
|
|
|
12442
12277
|
}
|
|
12443
12278
|
);
|
|
12444
12279
|
StepperIndicator.displayName = "Stepper.Indicator";
|
|
12445
|
-
var StepperLabel =
|
|
12280
|
+
var StepperLabel = React49.forwardRef(
|
|
12446
12281
|
({ className, label, description, isActive, ...props }, ref) => {
|
|
12447
12282
|
return /* @__PURE__ */ jsxs(
|
|
12448
12283
|
"div",
|
|
@@ -12479,7 +12314,7 @@ var StepperLabel = React48.forwardRef(
|
|
|
12479
12314
|
}
|
|
12480
12315
|
);
|
|
12481
12316
|
StepperLabel.displayName = "Stepper.Label";
|
|
12482
|
-
var StepperContent =
|
|
12317
|
+
var StepperContent = React49.forwardRef(
|
|
12483
12318
|
({ className, isActive, children, ...props }, ref) => {
|
|
12484
12319
|
if (!isActive) {
|
|
12485
12320
|
return null;
|
|
@@ -12503,13 +12338,13 @@ var Stepper = Object.assign(StepperRoot, {
|
|
|
12503
12338
|
Label: StepperLabel,
|
|
12504
12339
|
Content: StepperContent
|
|
12505
12340
|
});
|
|
12506
|
-
var EmptyStateAction =
|
|
12341
|
+
var EmptyStateAction = React49.forwardRef(
|
|
12507
12342
|
({ className, children, ...props }, ref) => {
|
|
12508
12343
|
return /* @__PURE__ */ jsx("div", { ref, className: cn(EMPTY_STATE_TOKENS.spacing.action, className), ...props, children });
|
|
12509
12344
|
}
|
|
12510
12345
|
);
|
|
12511
12346
|
EmptyStateAction.displayName = "EmptyStateAction";
|
|
12512
|
-
var EmptyStateDescription =
|
|
12347
|
+
var EmptyStateDescription = React49.forwardRef(
|
|
12513
12348
|
({ className, children, ...props }, ref) => {
|
|
12514
12349
|
return /* @__PURE__ */ jsx(
|
|
12515
12350
|
"p",
|
|
@@ -12529,7 +12364,7 @@ var EmptyStateDescription = React48.forwardRef(
|
|
|
12529
12364
|
}
|
|
12530
12365
|
);
|
|
12531
12366
|
EmptyStateDescription.displayName = "EmptyStateDescription";
|
|
12532
|
-
var EmptyStateIcon =
|
|
12367
|
+
var EmptyStateIcon = React49.forwardRef(
|
|
12533
12368
|
({ children, size = "md", className, ...props }, ref) => {
|
|
12534
12369
|
const iconSizeClass = EMPTY_STATE_TOKENS.icon.size[size];
|
|
12535
12370
|
return /* @__PURE__ */ jsx(
|
|
@@ -12544,7 +12379,7 @@ var EmptyStateIcon = React48.forwardRef(
|
|
|
12544
12379
|
}
|
|
12545
12380
|
);
|
|
12546
12381
|
EmptyStateIcon.displayName = "EmptyStateIcon";
|
|
12547
|
-
var EmptyStateTitle =
|
|
12382
|
+
var EmptyStateTitle = React49.forwardRef(
|
|
12548
12383
|
({ className, children, ...props }, ref) => {
|
|
12549
12384
|
return /* @__PURE__ */ jsx(
|
|
12550
12385
|
"h3",
|
|
@@ -12563,9 +12398,9 @@ var EmptyStateTitle = React48.forwardRef(
|
|
|
12563
12398
|
}
|
|
12564
12399
|
);
|
|
12565
12400
|
EmptyStateTitle.displayName = "EmptyStateTitle";
|
|
12566
|
-
var EmptyState =
|
|
12401
|
+
var EmptyState = React49.forwardRef(
|
|
12567
12402
|
({ id, className, children, ...props }, ref) => {
|
|
12568
|
-
const generatedId =
|
|
12403
|
+
const generatedId = React49.useId();
|
|
12569
12404
|
const emptyStateId = id || `empty-state-${generatedId}`;
|
|
12570
12405
|
return /* @__PURE__ */ jsx(
|
|
12571
12406
|
Surface,
|
|
@@ -12587,13 +12422,13 @@ EmptyState.Icon = EmptyStateIcon;
|
|
|
12587
12422
|
EmptyState.Title = EmptyStateTitle;
|
|
12588
12423
|
EmptyState.Description = EmptyStateDescription;
|
|
12589
12424
|
EmptyState.Action = EmptyStateAction;
|
|
12590
|
-
var TableBody =
|
|
12425
|
+
var TableBody = React49.forwardRef(
|
|
12591
12426
|
({ className, ...props }, ref) => {
|
|
12592
12427
|
return /* @__PURE__ */ jsx("tbody", { ref, className: cn(className), role: "rowgroup", ...props });
|
|
12593
12428
|
}
|
|
12594
12429
|
);
|
|
12595
12430
|
TableBody.displayName = "TableBody";
|
|
12596
|
-
var TableCell =
|
|
12431
|
+
var TableCell = React49.forwardRef(
|
|
12597
12432
|
({ align = "left", size = "md", className, ...props }, ref) => {
|
|
12598
12433
|
const paddingClass = TABLE_TOKENS.padding.cell[size];
|
|
12599
12434
|
const typographyClass = TABLE_TOKENS.typography.cell.fontSize;
|
|
@@ -12621,7 +12456,7 @@ var TableCell = React48.forwardRef(
|
|
|
12621
12456
|
}
|
|
12622
12457
|
);
|
|
12623
12458
|
TableCell.displayName = "TableCell";
|
|
12624
|
-
var TableEmpty =
|
|
12459
|
+
var TableEmpty = React49.forwardRef(
|
|
12625
12460
|
({ colSpan, message = "No data available", className, ...props }, ref) => {
|
|
12626
12461
|
return /* @__PURE__ */ jsx("tr", { ref, className: cn(className), ...props, children: /* @__PURE__ */ jsx("td", { colSpan, className: TABLE_TOKENS.empty.padding, children: /* @__PURE__ */ jsxs(EmptyState, { children: [
|
|
12627
12462
|
/* @__PURE__ */ jsx(EmptyStateIcon, { children: "\u{1F4ED}" }),
|
|
@@ -12630,7 +12465,7 @@ var TableEmpty = React48.forwardRef(
|
|
|
12630
12465
|
}
|
|
12631
12466
|
);
|
|
12632
12467
|
TableEmpty.displayName = "TableEmpty";
|
|
12633
|
-
var TableExpandableContent =
|
|
12468
|
+
var TableExpandableContent = React49.forwardRef(
|
|
12634
12469
|
({ colSpan, expanded, children, className, ...props }, ref) => {
|
|
12635
12470
|
return /* @__PURE__ */ jsx(
|
|
12636
12471
|
"td",
|
|
@@ -12659,7 +12494,7 @@ var TableExpandableContent = React48.forwardRef(
|
|
|
12659
12494
|
}
|
|
12660
12495
|
);
|
|
12661
12496
|
TableExpandableContent.displayName = "TableExpandableContent";
|
|
12662
|
-
var TableSortIcon =
|
|
12497
|
+
var TableSortIcon = React49.forwardRef(
|
|
12663
12498
|
({ direction, className, ...props }, ref) => {
|
|
12664
12499
|
return /* @__PURE__ */ jsx(
|
|
12665
12500
|
"span",
|
|
@@ -12696,10 +12531,10 @@ var TableSortIcon = React48.forwardRef(
|
|
|
12696
12531
|
}
|
|
12697
12532
|
);
|
|
12698
12533
|
TableSortIcon.displayName = "TableSortIcon";
|
|
12699
|
-
var TableHead =
|
|
12534
|
+
var TableHead = React49.forwardRef(
|
|
12700
12535
|
({ align = "left", sortable = false, columnKey, size = "md", className, children, ...props }, ref) => {
|
|
12701
12536
|
const { sortState, setSortState } = useTableContext();
|
|
12702
|
-
const handleSort =
|
|
12537
|
+
const handleSort = React49.useCallback(() => {
|
|
12703
12538
|
if (!sortable || !columnKey) return;
|
|
12704
12539
|
const currentDirection = sortState.column === columnKey ? sortState.direction : null;
|
|
12705
12540
|
let nextDirection = null;
|
|
@@ -12758,7 +12593,7 @@ var TableHead = React48.forwardRef(
|
|
|
12758
12593
|
}
|
|
12759
12594
|
);
|
|
12760
12595
|
TableHead.displayName = "TableHead";
|
|
12761
|
-
var TableHeader =
|
|
12596
|
+
var TableHeader = React49.forwardRef(
|
|
12762
12597
|
({ sticky = false, className, ...props }, ref) => {
|
|
12763
12598
|
return /* @__PURE__ */ jsx(
|
|
12764
12599
|
"thead",
|
|
@@ -12772,13 +12607,13 @@ var TableHeader = React48.forwardRef(
|
|
|
12772
12607
|
}
|
|
12773
12608
|
);
|
|
12774
12609
|
TableHeader.displayName = "TableHeader";
|
|
12775
|
-
var TableLoadingState =
|
|
12610
|
+
var TableLoadingState = React49.forwardRef(
|
|
12776
12611
|
({ colSpan, rows = 5, className, ...props }, ref) => {
|
|
12777
12612
|
return /* @__PURE__ */ jsx(Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsx("tr", { ref: index === 0 ? ref : void 0, className: cn(className), ...props, children: Array.from({ length: colSpan }).map((_2, cellIndex) => /* @__PURE__ */ jsx("td", { className: TABLE_TOKENS.loading.cellPadding, children: /* @__PURE__ */ jsx(Skeleton, { variant: "text", className: TABLE_TOKENS.loading.skeletonWidth }) }, cellIndex)) }, index)) });
|
|
12778
12613
|
}
|
|
12779
12614
|
);
|
|
12780
12615
|
TableLoadingState.displayName = "TableLoadingState";
|
|
12781
|
-
var TableRow =
|
|
12616
|
+
var TableRow = React49.forwardRef(
|
|
12782
12617
|
({
|
|
12783
12618
|
selected = false,
|
|
12784
12619
|
expandable = false,
|
|
@@ -12807,9 +12642,9 @@ var TableRow = React48.forwardRef(
|
|
|
12807
12642
|
}
|
|
12808
12643
|
);
|
|
12809
12644
|
TableRow.displayName = "TableRow";
|
|
12810
|
-
var TableContext =
|
|
12645
|
+
var TableContext = React49.createContext(null);
|
|
12811
12646
|
function useTableContext() {
|
|
12812
|
-
const context =
|
|
12647
|
+
const context = React49.useContext(TableContext);
|
|
12813
12648
|
if (!context) {
|
|
12814
12649
|
throw new Error("Table components must be used within Table.Root");
|
|
12815
12650
|
}
|
|
@@ -12830,12 +12665,12 @@ function TableRoot({
|
|
|
12830
12665
|
children,
|
|
12831
12666
|
...props
|
|
12832
12667
|
}) {
|
|
12833
|
-
const [sortState, setSortState] =
|
|
12668
|
+
const [sortState, setSortState] = React49.useState({
|
|
12834
12669
|
column: null,
|
|
12835
12670
|
direction: null
|
|
12836
12671
|
});
|
|
12837
|
-
const [expandedRows, setExpandedRows] =
|
|
12838
|
-
const toggleRow =
|
|
12672
|
+
const [expandedRows, setExpandedRows] = React49.useState(/* @__PURE__ */ new Set());
|
|
12673
|
+
const toggleRow = React49.useCallback((key) => {
|
|
12839
12674
|
setExpandedRows((prev) => {
|
|
12840
12675
|
const next = new Set(prev);
|
|
12841
12676
|
if (next.has(key)) {
|
|
@@ -12846,7 +12681,7 @@ function TableRoot({
|
|
|
12846
12681
|
return next;
|
|
12847
12682
|
});
|
|
12848
12683
|
}, []);
|
|
12849
|
-
const contextValue =
|
|
12684
|
+
const contextValue = React49.useMemo(
|
|
12850
12685
|
() => ({
|
|
12851
12686
|
sortState,
|
|
12852
12687
|
setSortState,
|
|
@@ -12910,7 +12745,7 @@ var iconVariants = cva("shrink-0", {
|
|
|
12910
12745
|
stroke: "normal"
|
|
12911
12746
|
}
|
|
12912
12747
|
});
|
|
12913
|
-
var Icon2 =
|
|
12748
|
+
var Icon2 = React49.forwardRef(
|
|
12914
12749
|
({ name, size, color, stroke, className, asChild = false, ...props }, ref) => {
|
|
12915
12750
|
const IconComponent = ICONS_MAP[name] || ICONS_MAP.error;
|
|
12916
12751
|
if (!IconComponent) {
|
|
@@ -12940,1766 +12775,4 @@ var Icon2 = React48.forwardRef(
|
|
|
12940
12775
|
);
|
|
12941
12776
|
Icon2.displayName = "Icon";
|
|
12942
12777
|
|
|
12943
|
-
|
|
12944
|
-
function shouldReduceMotion(override) {
|
|
12945
|
-
if (override === true) return true;
|
|
12946
|
-
if (override === false) return false;
|
|
12947
|
-
if (typeof window === "undefined") return false;
|
|
12948
|
-
try {
|
|
12949
|
-
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
12950
|
-
return mediaQuery.matches;
|
|
12951
|
-
} catch {
|
|
12952
|
-
return false;
|
|
12953
|
-
}
|
|
12954
|
-
}
|
|
12955
|
-
|
|
12956
|
-
// src/COMPOSITION/motion/animation/presets.ts
|
|
12957
|
-
var fadePresets = {
|
|
12958
|
-
/**
|
|
12959
|
-
* Fade in animation
|
|
12960
|
-
*/
|
|
12961
|
-
fadeIn: (config) => {
|
|
12962
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
12963
|
-
return {
|
|
12964
|
-
className: reduceMotion ? "" : "tm-motion-fade-in"
|
|
12965
|
-
};
|
|
12966
|
-
},
|
|
12967
|
-
/**
|
|
12968
|
-
* Fade out animation
|
|
12969
|
-
*/
|
|
12970
|
-
fadeOut: (config) => {
|
|
12971
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
12972
|
-
return {
|
|
12973
|
-
className: reduceMotion ? "" : "tm-motion-fade-out"
|
|
12974
|
-
};
|
|
12975
|
-
},
|
|
12976
|
-
/**
|
|
12977
|
-
* Fade in from top
|
|
12978
|
-
*/
|
|
12979
|
-
fadeInUp: (config) => {
|
|
12980
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
12981
|
-
return {
|
|
12982
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-up"
|
|
12983
|
-
};
|
|
12984
|
-
},
|
|
12985
|
-
/**
|
|
12986
|
-
* Fade in from bottom
|
|
12987
|
-
*/
|
|
12988
|
-
fadeInDown: (config) => {
|
|
12989
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
12990
|
-
return {
|
|
12991
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-down"
|
|
12992
|
-
};
|
|
12993
|
-
},
|
|
12994
|
-
/**
|
|
12995
|
-
* Fade in from left
|
|
12996
|
-
*/
|
|
12997
|
-
fadeInLeft: (config) => {
|
|
12998
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
12999
|
-
return {
|
|
13000
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-left"
|
|
13001
|
-
};
|
|
13002
|
-
},
|
|
13003
|
-
/**
|
|
13004
|
-
* Fade in from right
|
|
13005
|
-
*/
|
|
13006
|
-
fadeInRight: (config) => {
|
|
13007
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13008
|
-
return {
|
|
13009
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-right"
|
|
13010
|
-
};
|
|
13011
|
-
}
|
|
13012
|
-
};
|
|
13013
|
-
var slidePresets = {
|
|
13014
|
-
/**
|
|
13015
|
-
* Slide in from bottom
|
|
13016
|
-
*/
|
|
13017
|
-
slideInUp: (config) => {
|
|
13018
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13019
|
-
return {
|
|
13020
|
-
className: reduceMotion ? "" : "tm-motion-slide-up"
|
|
13021
|
-
};
|
|
13022
|
-
},
|
|
13023
|
-
/**
|
|
13024
|
-
* Slide in from top
|
|
13025
|
-
*/
|
|
13026
|
-
slideInDown: (config) => {
|
|
13027
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13028
|
-
return {
|
|
13029
|
-
className: reduceMotion ? "" : "tm-motion-slide-down"
|
|
13030
|
-
};
|
|
13031
|
-
},
|
|
13032
|
-
/**
|
|
13033
|
-
* Slide in from left
|
|
13034
|
-
*/
|
|
13035
|
-
slideInLeft: (config) => {
|
|
13036
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13037
|
-
return {
|
|
13038
|
-
className: reduceMotion ? "" : "tm-motion-slide-left"
|
|
13039
|
-
};
|
|
13040
|
-
},
|
|
13041
|
-
/**
|
|
13042
|
-
* Slide in from right
|
|
13043
|
-
*/
|
|
13044
|
-
slideInRight: (config) => {
|
|
13045
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13046
|
-
return {
|
|
13047
|
-
className: reduceMotion ? "" : "tm-motion-slide-right"
|
|
13048
|
-
};
|
|
13049
|
-
},
|
|
13050
|
-
/**
|
|
13051
|
-
* Slide out to top
|
|
13052
|
-
*/
|
|
13053
|
-
slideOutUp: (config) => {
|
|
13054
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13055
|
-
return {
|
|
13056
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-up-out"
|
|
13057
|
-
};
|
|
13058
|
-
},
|
|
13059
|
-
/**
|
|
13060
|
-
* Slide out to bottom
|
|
13061
|
-
*/
|
|
13062
|
-
slideOutDown: (config) => {
|
|
13063
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13064
|
-
return {
|
|
13065
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-down-out"
|
|
13066
|
-
};
|
|
13067
|
-
},
|
|
13068
|
-
/**
|
|
13069
|
-
* Slide out to left
|
|
13070
|
-
*/
|
|
13071
|
-
slideOutLeft: (config) => {
|
|
13072
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13073
|
-
return {
|
|
13074
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-left-out"
|
|
13075
|
-
};
|
|
13076
|
-
},
|
|
13077
|
-
/**
|
|
13078
|
-
* Slide out to right
|
|
13079
|
-
*/
|
|
13080
|
-
slideOutRight: (config) => {
|
|
13081
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13082
|
-
return {
|
|
13083
|
-
className: reduceMotion ? "" : "tm-motion-fade-slide-right-out"
|
|
13084
|
-
};
|
|
13085
|
-
}
|
|
13086
|
-
};
|
|
13087
|
-
var scalePresets = {
|
|
13088
|
-
/**
|
|
13089
|
-
* Scale in animation
|
|
13090
|
-
*/
|
|
13091
|
-
scaleIn: (config) => {
|
|
13092
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13093
|
-
return {
|
|
13094
|
-
className: reduceMotion ? "" : "tm-motion-scale-in"
|
|
13095
|
-
};
|
|
13096
|
-
},
|
|
13097
|
-
/**
|
|
13098
|
-
* Scale out animation
|
|
13099
|
-
*/
|
|
13100
|
-
scaleOut: (config) => {
|
|
13101
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13102
|
-
return {
|
|
13103
|
-
className: reduceMotion ? "" : "tm-motion-scale-out"
|
|
13104
|
-
};
|
|
13105
|
-
},
|
|
13106
|
-
/**
|
|
13107
|
-
* Scale up on hover
|
|
13108
|
-
*/
|
|
13109
|
-
scaleUp: (config) => {
|
|
13110
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13111
|
-
return {
|
|
13112
|
-
className: reduceMotion ? "" : "tm-motion-hover-scale"
|
|
13113
|
-
};
|
|
13114
|
-
},
|
|
13115
|
-
/**
|
|
13116
|
-
* Scale down on tap
|
|
13117
|
-
*/
|
|
13118
|
-
scaleDown: (config) => {
|
|
13119
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13120
|
-
return {
|
|
13121
|
-
className: reduceMotion ? "" : "tm-motion-tap-scale"
|
|
13122
|
-
};
|
|
13123
|
-
}
|
|
13124
|
-
};
|
|
13125
|
-
var hoverPresets = {
|
|
13126
|
-
/**
|
|
13127
|
-
* Lift up on hover (combines scale and y translation)
|
|
13128
|
-
*/
|
|
13129
|
-
hoverLift: (config) => {
|
|
13130
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13131
|
-
return {
|
|
13132
|
-
className: reduceMotion ? "" : "tm-motion-hover-lift"
|
|
13133
|
-
};
|
|
13134
|
-
},
|
|
13135
|
-
/**
|
|
13136
|
-
* Scale up on hover
|
|
13137
|
-
*/
|
|
13138
|
-
hoverScale: (config) => {
|
|
13139
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13140
|
-
return {
|
|
13141
|
-
className: reduceMotion ? "" : "tm-motion-hover-scale"
|
|
13142
|
-
};
|
|
13143
|
-
},
|
|
13144
|
-
/**
|
|
13145
|
-
* Scale down on tap
|
|
13146
|
-
*/
|
|
13147
|
-
tapScale: (config) => {
|
|
13148
|
-
const reduceMotion = shouldReduceMotion(config?.reducedMotion);
|
|
13149
|
-
return {
|
|
13150
|
-
className: reduceMotion ? "" : "tm-motion-tap-scale"
|
|
13151
|
-
};
|
|
13152
|
-
}
|
|
13153
|
-
};
|
|
13154
|
-
|
|
13155
|
-
// src/COMPOSITION/motion/animation/utils.ts
|
|
13156
|
-
function resolveAnimationPreset(preset) {
|
|
13157
|
-
if (!preset) return void 0;
|
|
13158
|
-
if (typeof preset === "string") ; else {
|
|
13159
|
-
const baseValue = getBaseValue(preset);
|
|
13160
|
-
if (baseValue && typeof baseValue === "string") {
|
|
13161
|
-
return resolveAnimationPreset(baseValue);
|
|
13162
|
-
}
|
|
13163
|
-
return void 0;
|
|
13164
|
-
}
|
|
13165
|
-
switch (preset) {
|
|
13166
|
-
case "fadeIn":
|
|
13167
|
-
return fadePresets.fadeIn();
|
|
13168
|
-
case "fadeInUp":
|
|
13169
|
-
return fadePresets.fadeInUp();
|
|
13170
|
-
case "fadeInDown":
|
|
13171
|
-
return fadePresets.fadeInDown();
|
|
13172
|
-
case "fadeInLeft":
|
|
13173
|
-
return fadePresets.fadeInLeft();
|
|
13174
|
-
case "fadeInRight":
|
|
13175
|
-
return fadePresets.fadeInRight();
|
|
13176
|
-
case "slideInUp":
|
|
13177
|
-
return slidePresets.slideInUp();
|
|
13178
|
-
case "slideInDown":
|
|
13179
|
-
return slidePresets.slideInDown();
|
|
13180
|
-
case "slideInLeft":
|
|
13181
|
-
return slidePresets.slideInLeft();
|
|
13182
|
-
case "slideInRight":
|
|
13183
|
-
return slidePresets.slideInRight();
|
|
13184
|
-
case "scaleIn":
|
|
13185
|
-
return scalePresets.scaleIn();
|
|
13186
|
-
default:
|
|
13187
|
-
return void 0;
|
|
13188
|
-
}
|
|
13189
|
-
}
|
|
13190
|
-
function resolveHoverAnimationPreset(preset) {
|
|
13191
|
-
if (!preset) return void 0;
|
|
13192
|
-
if (typeof preset === "object") {
|
|
13193
|
-
return preset;
|
|
13194
|
-
}
|
|
13195
|
-
switch (preset) {
|
|
13196
|
-
case "hoverLift":
|
|
13197
|
-
return hoverPresets.hoverLift();
|
|
13198
|
-
case "hoverScale":
|
|
13199
|
-
return hoverPresets.hoverScale();
|
|
13200
|
-
case "tapScale":
|
|
13201
|
-
return hoverPresets.tapScale();
|
|
13202
|
-
default:
|
|
13203
|
-
return void 0;
|
|
13204
|
-
}
|
|
13205
|
-
}
|
|
13206
|
-
function resolveComponentAnimations(config) {
|
|
13207
|
-
if (!config) return {};
|
|
13208
|
-
const animation = resolveAnimationPreset(config.animation);
|
|
13209
|
-
const hoverAnimation = resolveHoverAnimationPreset(config.hoverAnimation);
|
|
13210
|
-
const customProps = config.animationProps || {};
|
|
13211
|
-
return {
|
|
13212
|
-
...animation,
|
|
13213
|
-
...hoverAnimation,
|
|
13214
|
-
...customProps
|
|
13215
|
-
};
|
|
13216
|
-
}
|
|
13217
|
-
var cardBaseVariants = cva(
|
|
13218
|
-
// Base classes - surface, border, radius, shadow, motion
|
|
13219
|
-
`${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`,
|
|
13220
|
-
{
|
|
13221
|
-
variants: {
|
|
13222
|
-
size: {
|
|
13223
|
-
default: `${DOMAIN_TOKENS.layout.padding.default} ${DOMAIN_TOKENS.layout.gap.default}`,
|
|
13224
|
-
compact: `${DOMAIN_TOKENS.layout.padding.compact} ${DOMAIN_TOKENS.layout.gap.compact}`
|
|
13225
|
-
},
|
|
13226
|
-
variant: {
|
|
13227
|
-
default: "",
|
|
13228
|
-
featured: `${DOMAIN_TOKENS.badges.surface.featured}`
|
|
13229
|
-
}
|
|
13230
|
-
},
|
|
13231
|
-
defaultVariants: {
|
|
13232
|
-
size: "default",
|
|
13233
|
-
variant: "default"
|
|
13234
|
-
}
|
|
13235
|
-
}
|
|
13236
|
-
);
|
|
13237
|
-
var cardBaseImageVariants = cva(
|
|
13238
|
-
// Base classes - aspect ratio, radius, overflow
|
|
13239
|
-
`${DOMAIN_TOKENS.image.aspectRatio} ${DOMAIN_TOKENS.image.radius} overflow-hidden`,
|
|
13240
|
-
{
|
|
13241
|
-
variants: {
|
|
13242
|
-
size: {
|
|
13243
|
-
default: "",
|
|
13244
|
-
compact: ""
|
|
13245
|
-
}
|
|
13246
|
-
},
|
|
13247
|
-
defaultVariants: {
|
|
13248
|
-
size: "default"
|
|
13249
|
-
}
|
|
13250
|
-
}
|
|
13251
|
-
);
|
|
13252
|
-
var cardBaseContentVariants = cva(
|
|
13253
|
-
// Base classes - flex column layout
|
|
13254
|
-
"flex flex-col",
|
|
13255
|
-
{
|
|
13256
|
-
variants: {
|
|
13257
|
-
size: {
|
|
13258
|
-
default: "",
|
|
13259
|
-
compact: ""
|
|
13260
|
-
}
|
|
13261
|
-
},
|
|
13262
|
-
defaultVariants: {
|
|
13263
|
-
size: "default"
|
|
13264
|
-
}
|
|
13265
|
-
}
|
|
13266
|
-
);
|
|
13267
|
-
var cardBaseFooterVariants = cva(
|
|
13268
|
-
// Base classes - flex layout
|
|
13269
|
-
"flex",
|
|
13270
|
-
{
|
|
13271
|
-
variants: {
|
|
13272
|
-
size: {
|
|
13273
|
-
default: "",
|
|
13274
|
-
compact: ""
|
|
13275
|
-
}
|
|
13276
|
-
},
|
|
13277
|
-
defaultVariants: {
|
|
13278
|
-
size: "default"
|
|
13279
|
-
}
|
|
13280
|
-
}
|
|
13281
|
-
);
|
|
13282
|
-
var CardBase = React48.forwardRef(
|
|
13283
|
-
({ size = "default", variant = "default", className, children, ...props }, ref) => {
|
|
13284
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn(cardBaseVariants({ size, variant }), className), ...props, children });
|
|
13285
|
-
}
|
|
13286
|
-
);
|
|
13287
|
-
CardBase.displayName = "CardBase";
|
|
13288
|
-
var CardBaseImageWrapper = React48.forwardRef(
|
|
13289
|
-
({ size = "default", className, children, ...props }, ref) => {
|
|
13290
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn(cardBaseImageVariants({ size }), className), ...props, children });
|
|
13291
|
-
}
|
|
13292
|
-
);
|
|
13293
|
-
CardBaseImageWrapper.displayName = "CardBaseImageWrapper";
|
|
13294
|
-
var CardBaseContentWrapper = React48.forwardRef(
|
|
13295
|
-
({ size = "default", className, children, ...props }, ref) => {
|
|
13296
|
-
return /* @__PURE__ */ jsx(
|
|
13297
|
-
Stack,
|
|
13298
|
-
{
|
|
13299
|
-
ref,
|
|
13300
|
-
direction: "vertical",
|
|
13301
|
-
className: cn(cardBaseContentVariants({ size }), className),
|
|
13302
|
-
...props,
|
|
13303
|
-
children
|
|
13304
|
-
}
|
|
13305
|
-
);
|
|
13306
|
-
}
|
|
13307
|
-
);
|
|
13308
|
-
CardBaseContentWrapper.displayName = "CardBaseContentWrapper";
|
|
13309
|
-
var CardBaseFooterWrapper = React48.forwardRef(
|
|
13310
|
-
({ size = "default", className, children, ...props }, ref) => {
|
|
13311
|
-
return /* @__PURE__ */ jsx("div", { ref, className: cn(cardBaseFooterVariants({ size }), className), ...props, children });
|
|
13312
|
-
}
|
|
13313
|
-
);
|
|
13314
|
-
CardBaseFooterWrapper.displayName = "CardBaseFooterWrapper";
|
|
13315
|
-
var linkVariants = cva(
|
|
13316
|
-
"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
13317
|
-
{
|
|
13318
|
-
variants: {
|
|
13319
|
-
variant: {
|
|
13320
|
-
primary: "text-primary hover:text-primary/80 underline-offset-4 hover:underline",
|
|
13321
|
-
secondary: "text-secondary-foreground underline-offset-4 hover:underline",
|
|
13322
|
-
accent: "text-accent-foreground hover:text-accent-foreground/80 underline-offset-4 hover:underline",
|
|
13323
|
-
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground rounded-md px-md py-sm",
|
|
13324
|
-
ghost: "text-foreground hover:text-accent-foreground hover:bg-accent rounded-md px-sm py-sm",
|
|
13325
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
13326
|
-
destructive: "text-destructive hover:text-destructive/80 underline-offset-4 hover:underline"
|
|
13327
|
-
},
|
|
13328
|
-
size: {
|
|
13329
|
-
xs: "h-7 text-xs px-xs py-xs",
|
|
13330
|
-
sm: "h-8 text-xs px-sm py-xs",
|
|
13331
|
-
md: "h-9 text-sm px-md py-sm",
|
|
13332
|
-
lg: "h-10 text-sm px-lg py-sm",
|
|
13333
|
-
xl: "h-11 text-base px-xl py-md"
|
|
13334
|
-
}
|
|
13335
|
-
},
|
|
13336
|
-
defaultVariants: {
|
|
13337
|
-
variant: "link",
|
|
13338
|
-
size: "md"
|
|
13339
|
-
}
|
|
13340
|
-
}
|
|
13341
|
-
);
|
|
13342
|
-
var Link = React48.forwardRef(
|
|
13343
|
-
({ className, variant, size, asChild = false, leftIcon, rightIcon, children, ...props }, ref) => {
|
|
13344
|
-
const Comp = asChild ? Slot : "a";
|
|
13345
|
-
return /* @__PURE__ */ jsxs(Comp, { className: cn(linkVariants({ variant, size, className })), ref, ...props, children: [
|
|
13346
|
-
leftIcon && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center", children: leftIcon }),
|
|
13347
|
-
children,
|
|
13348
|
-
rightIcon && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center", children: rightIcon })
|
|
13349
|
-
] });
|
|
13350
|
-
}
|
|
13351
|
-
);
|
|
13352
|
-
Link.displayName = "Link";
|
|
13353
|
-
var eventCardVariants = cva(
|
|
13354
|
-
// Base classes - surface, border, radius, shadow, motion from tokens
|
|
13355
|
-
`${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`,
|
|
13356
|
-
{
|
|
13357
|
-
variants: {
|
|
13358
|
-
size: {
|
|
13359
|
-
default: `${CARD_TOKENS.size.md.padding} ${DOMAIN_TOKENS.layout.gap.default}`,
|
|
13360
|
-
compact: `${CARD_TOKENS.size.sm.padding} ${DOMAIN_TOKENS.layout.gap.compact}`
|
|
13361
|
-
},
|
|
13362
|
-
layout: {
|
|
13363
|
-
vertical: "flex flex-col"
|
|
13364
|
-
},
|
|
13365
|
-
variant: {
|
|
13366
|
-
default: "",
|
|
13367
|
-
featured: `${DOMAIN_TOKENS.badges.surface.featured}`
|
|
13368
|
-
}
|
|
13369
|
-
},
|
|
13370
|
-
defaultVariants: {
|
|
13371
|
-
size: "default",
|
|
13372
|
-
layout: "vertical",
|
|
13373
|
-
variant: "default"
|
|
13374
|
-
}
|
|
13375
|
-
}
|
|
13376
|
-
);
|
|
13377
|
-
var eventCardBadgeVariants = cva(
|
|
13378
|
-
// Base classes - absolute positioning, z-index
|
|
13379
|
-
"absolute z-10",
|
|
13380
|
-
{
|
|
13381
|
-
variants: {
|
|
13382
|
-
size: {
|
|
13383
|
-
default: DOMAIN_TOKENS.badges.position.default,
|
|
13384
|
-
compact: DOMAIN_TOKENS.badges.position.compact
|
|
13385
|
-
}
|
|
13386
|
-
},
|
|
13387
|
-
defaultVariants: {
|
|
13388
|
-
size: "default"
|
|
13389
|
-
}
|
|
13390
|
-
}
|
|
13391
|
-
);
|
|
13392
|
-
var eventCardBadgeSurfaceVariants = cva(
|
|
13393
|
-
// Base classes - flex layout, items center, badge styling from tokens
|
|
13394
|
-
`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}`,
|
|
13395
|
-
{
|
|
13396
|
-
variants: {
|
|
13397
|
-
variant: {
|
|
13398
|
-
default: DOMAIN_TOKENS.badges.surface.default,
|
|
13399
|
-
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
13400
|
-
}
|
|
13401
|
-
},
|
|
13402
|
-
defaultVariants: {
|
|
13403
|
-
variant: "featured"
|
|
13404
|
-
}
|
|
13405
|
-
}
|
|
13406
|
-
);
|
|
13407
|
-
var eventCardMetadataVariants = cva(
|
|
13408
|
-
// Base classes - flex column, metadata spacing from tokens
|
|
13409
|
-
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
13410
|
-
{
|
|
13411
|
-
variants: {
|
|
13412
|
-
size: {
|
|
13413
|
-
default: "",
|
|
13414
|
-
compact: ""
|
|
13415
|
-
}
|
|
13416
|
-
},
|
|
13417
|
-
defaultVariants: {
|
|
13418
|
-
size: "default"
|
|
13419
|
-
}
|
|
13420
|
-
}
|
|
13421
|
-
);
|
|
13422
|
-
var eventCardMetadataItemVariants = cva(
|
|
13423
|
-
// Base classes - flex items center, metadata spacing and text from tokens
|
|
13424
|
-
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
13425
|
-
{
|
|
13426
|
-
variants: {
|
|
13427
|
-
size: {
|
|
13428
|
-
default: "",
|
|
13429
|
-
compact: ""
|
|
13430
|
-
}
|
|
13431
|
-
},
|
|
13432
|
-
defaultVariants: {
|
|
13433
|
-
size: "default"
|
|
13434
|
-
}
|
|
13435
|
-
}
|
|
13436
|
-
);
|
|
13437
|
-
var eventCardMetadataIconVariants = cva(
|
|
13438
|
-
// Base classes - icon size and color from tokens
|
|
13439
|
-
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.metadata.icon.default}`,
|
|
13440
|
-
{
|
|
13441
|
-
variants: {
|
|
13442
|
-
size: {
|
|
13443
|
-
default: "",
|
|
13444
|
-
compact: ""
|
|
13445
|
-
}
|
|
13446
|
-
},
|
|
13447
|
-
defaultVariants: {
|
|
13448
|
-
size: "default"
|
|
13449
|
-
}
|
|
13450
|
-
}
|
|
13451
|
-
);
|
|
13452
|
-
var eventCardFooterVariants = cva(
|
|
13453
|
-
// Base classes - border top, spacing from tokens
|
|
13454
|
-
"border-t border-border",
|
|
13455
|
-
{
|
|
13456
|
-
variants: {
|
|
13457
|
-
size: {
|
|
13458
|
-
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
13459
|
-
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
13460
|
-
}
|
|
13461
|
-
},
|
|
13462
|
-
defaultVariants: {
|
|
13463
|
-
size: "default"
|
|
13464
|
-
}
|
|
13465
|
-
}
|
|
13466
|
-
);
|
|
13467
|
-
var eventCardTicketButtonVariants = cva(
|
|
13468
|
-
// Base classes - flex layout, badge gradient, motion from tokens
|
|
13469
|
-
`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`,
|
|
13470
|
-
{
|
|
13471
|
-
variants: {
|
|
13472
|
-
size: {
|
|
13473
|
-
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
13474
|
-
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
13475
|
-
}
|
|
13476
|
-
},
|
|
13477
|
-
defaultVariants: {
|
|
13478
|
-
size: "default"
|
|
13479
|
-
}
|
|
13480
|
-
}
|
|
13481
|
-
);
|
|
13482
|
-
var eventCardTicketButtonIconVariants = cva(
|
|
13483
|
-
// Base classes - icon size and spacing from tokens
|
|
13484
|
-
`${DOMAIN_TOKENS.metadata.icon.sizeSm} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
13485
|
-
{
|
|
13486
|
-
variants: {
|
|
13487
|
-
size: {
|
|
13488
|
-
default: "",
|
|
13489
|
-
compact: ""
|
|
13490
|
-
}
|
|
13491
|
-
},
|
|
13492
|
-
defaultVariants: {
|
|
13493
|
-
size: "default"
|
|
13494
|
-
}
|
|
13495
|
-
}
|
|
13496
|
-
);
|
|
13497
|
-
var eventCardPriceVariants = cva(
|
|
13498
|
-
// Base classes - price gradient text from tokens
|
|
13499
|
-
`bg-gradient-to-r from-accent-500 to-primary-600 bg-clip-text text-transparent`,
|
|
13500
|
-
{
|
|
13501
|
-
variants: {
|
|
13502
|
-
size: {
|
|
13503
|
-
default: TEXT_TOKENS.fontSize.lg,
|
|
13504
|
-
compact: TEXT_TOKENS.fontSize.md
|
|
13505
|
-
}
|
|
13506
|
-
},
|
|
13507
|
-
defaultVariants: {
|
|
13508
|
-
size: "default"
|
|
13509
|
-
}
|
|
13510
|
-
}
|
|
13511
|
-
);
|
|
13512
|
-
var EventCard = React48.forwardRef(
|
|
13513
|
-
({
|
|
13514
|
-
title,
|
|
13515
|
-
description,
|
|
13516
|
-
date,
|
|
13517
|
-
venueName,
|
|
13518
|
-
price,
|
|
13519
|
-
imageUrl,
|
|
13520
|
-
href,
|
|
13521
|
-
ticketUrl,
|
|
13522
|
-
featured = false,
|
|
13523
|
-
showImage = true,
|
|
13524
|
-
getTicketsLabel,
|
|
13525
|
-
featuredBadgeText,
|
|
13526
|
-
size = "default",
|
|
13527
|
-
layout = "vertical",
|
|
13528
|
-
variant,
|
|
13529
|
-
className,
|
|
13530
|
-
animation,
|
|
13531
|
-
...props
|
|
13532
|
-
}, ref) => {
|
|
13533
|
-
const animationProps = resolveComponentAnimations({
|
|
13534
|
-
animation: animation?.animation || "fadeInUp",
|
|
13535
|
-
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
13536
|
-
animationProps: animation?.animationProps
|
|
13537
|
-
});
|
|
13538
|
-
const cardVariant = variant || (featured ? "featured" : "default");
|
|
13539
|
-
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
13540
|
-
CardBase,
|
|
13541
|
-
{
|
|
13542
|
-
ref,
|
|
13543
|
-
size,
|
|
13544
|
-
variant: cardVariant,
|
|
13545
|
-
className: cn(
|
|
13546
|
-
eventCardVariants({ size, layout, variant: cardVariant }),
|
|
13547
|
-
"group relative",
|
|
13548
|
-
className
|
|
13549
|
-
),
|
|
13550
|
-
...props,
|
|
13551
|
-
children: [
|
|
13552
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: eventCardBadgeVariants({ size }), children: /* @__PURE__ */ jsx("span", { className: eventCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
13553
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size, children: /* @__PURE__ */ jsxs(
|
|
13554
|
-
"div",
|
|
13555
|
-
{
|
|
13556
|
-
className: cn("relative w-full overflow-hidden", DOMAIN_TOKENS.surface.bg.default),
|
|
13557
|
-
children: [
|
|
13558
|
-
imageUrl ? /* @__PURE__ */ jsx(
|
|
13559
|
-
"img",
|
|
13560
|
-
{
|
|
13561
|
-
src: imageUrl,
|
|
13562
|
-
alt: title,
|
|
13563
|
-
className: cn(
|
|
13564
|
-
"h-full w-full object-cover",
|
|
13565
|
-
DOMAIN_TOKENS.motion.hover.transition,
|
|
13566
|
-
DOMAIN_TOKENS.motion.hover.scale
|
|
13567
|
-
)
|
|
13568
|
-
}
|
|
13569
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
13570
|
-
Icon2,
|
|
13571
|
-
{
|
|
13572
|
-
name: "info",
|
|
13573
|
-
size: "xl",
|
|
13574
|
-
color: "muted",
|
|
13575
|
-
className: ICON_TOKENS.sizes["4xl"],
|
|
13576
|
-
"aria-hidden": "true"
|
|
13577
|
-
}
|
|
13578
|
-
) }),
|
|
13579
|
-
/* @__PURE__ */ jsx(
|
|
13580
|
-
"div",
|
|
13581
|
-
{
|
|
13582
|
-
className: cn(
|
|
13583
|
-
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
13584
|
-
DOMAIN_TOKENS.motion.hover.transition,
|
|
13585
|
-
DOMAIN_TOKENS.image.overlay.gradient
|
|
13586
|
-
)
|
|
13587
|
-
}
|
|
13588
|
-
)
|
|
13589
|
-
]
|
|
13590
|
-
}
|
|
13591
|
-
) }),
|
|
13592
|
-
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size, children: [
|
|
13593
|
-
/* @__PURE__ */ jsx(
|
|
13594
|
-
Heading,
|
|
13595
|
-
{
|
|
13596
|
-
level: 3,
|
|
13597
|
-
className: cn(
|
|
13598
|
-
"line-clamp-2 group-hover:text-primary",
|
|
13599
|
-
DOMAIN_TOKENS.motion.hover.transition,
|
|
13600
|
-
TEXT_TOKENS.fontSize.lg,
|
|
13601
|
-
TEXT_TOKENS.fontWeight.bold,
|
|
13602
|
-
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
13603
|
-
),
|
|
13604
|
-
children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: title }) : title
|
|
13605
|
-
}
|
|
13606
|
-
),
|
|
13607
|
-
description && /* @__PURE__ */ jsx(
|
|
13608
|
-
Text,
|
|
13609
|
-
{
|
|
13610
|
-
size: "sm",
|
|
13611
|
-
muted: true,
|
|
13612
|
-
className: cn(
|
|
13613
|
-
"line-clamp-2",
|
|
13614
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
13615
|
-
),
|
|
13616
|
-
children: description
|
|
13617
|
-
}
|
|
13618
|
-
),
|
|
13619
|
-
/* @__PURE__ */ jsxs("div", { className: eventCardMetadataVariants({ size }), children: [
|
|
13620
|
-
date && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size }), role: "text", children: [
|
|
13621
|
-
/* @__PURE__ */ jsx(
|
|
13622
|
-
IconCalendar,
|
|
13623
|
-
{
|
|
13624
|
-
className: eventCardMetadataIconVariants({ size }),
|
|
13625
|
-
"aria-hidden": true
|
|
13626
|
-
}
|
|
13627
|
-
),
|
|
13628
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, children: /* @__PURE__ */ jsx("time", { dateTime: date, children: date }) })
|
|
13629
|
-
] }),
|
|
13630
|
-
venueName && /* @__PURE__ */ jsxs("div", { className: eventCardMetadataItemVariants({ size }), role: "text", children: [
|
|
13631
|
-
/* @__PURE__ */ jsx(
|
|
13632
|
-
IconLocation,
|
|
13633
|
-
{
|
|
13634
|
-
className: eventCardMetadataIconVariants({ size }),
|
|
13635
|
-
"aria-hidden": true
|
|
13636
|
-
}
|
|
13637
|
-
),
|
|
13638
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", muted: true, className: "line-clamp-1", children: /* @__PURE__ */ jsx("address", { children: venueName }) })
|
|
13639
|
-
] })
|
|
13640
|
-
] })
|
|
13641
|
-
] }),
|
|
13642
|
-
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full", eventCardFooterVariants({ size })), children: [
|
|
13643
|
-
ticketUrl && /* @__PURE__ */ jsxs(
|
|
13644
|
-
Link,
|
|
13645
|
-
{
|
|
13646
|
-
href: ticketUrl,
|
|
13647
|
-
className: cn("w-full", eventCardTicketButtonVariants({ size })),
|
|
13648
|
-
target: "_blank",
|
|
13649
|
-
rel: "noopener noreferrer",
|
|
13650
|
-
children: [
|
|
13651
|
-
getTicketsLabel,
|
|
13652
|
-
/* @__PURE__ */ jsx(
|
|
13653
|
-
IconArrowRight,
|
|
13654
|
-
{
|
|
13655
|
-
className: eventCardTicketButtonIconVariants({ size }),
|
|
13656
|
-
"aria-hidden": true
|
|
13657
|
-
}
|
|
13658
|
-
)
|
|
13659
|
-
]
|
|
13660
|
-
}
|
|
13661
|
-
),
|
|
13662
|
-
!ticketUrl && price && /* @__PURE__ */ jsx("div", { className: "text-right", children: /* @__PURE__ */ jsx(Text, { size: size === "compact" ? "md" : "lg", weight: "bold", children: /* @__PURE__ */ jsx("span", { className: eventCardPriceVariants({ size }), children: price }) }) })
|
|
13663
|
-
] }) })
|
|
13664
|
-
]
|
|
13665
|
-
}
|
|
13666
|
-
) });
|
|
13667
|
-
}
|
|
13668
|
-
);
|
|
13669
|
-
EventCard.displayName = "EventCard";
|
|
13670
|
-
var artistCardVariants = cva("group relative", {
|
|
13671
|
-
variants: {
|
|
13672
|
-
size: {
|
|
13673
|
-
default: "",
|
|
13674
|
-
compact: ""
|
|
13675
|
-
},
|
|
13676
|
-
variant: {
|
|
13677
|
-
default: "",
|
|
13678
|
-
featured: ""
|
|
13679
|
-
}
|
|
13680
|
-
},
|
|
13681
|
-
defaultVariants: {
|
|
13682
|
-
size: "default",
|
|
13683
|
-
variant: "default"
|
|
13684
|
-
}
|
|
13685
|
-
});
|
|
13686
|
-
var artistCardBadgeVariants = cva(
|
|
13687
|
-
// Base classes - absolute positioning, z-index
|
|
13688
|
-
"absolute z-10",
|
|
13689
|
-
{
|
|
13690
|
-
variants: {
|
|
13691
|
-
size: {
|
|
13692
|
-
default: DOMAIN_TOKENS.badges.position.default,
|
|
13693
|
-
// Default positioning - maps to semanticSpacing.md (12px)
|
|
13694
|
-
compact: DOMAIN_TOKENS.badges.position.compact
|
|
13695
|
-
// Compact positioning - maps to semanticSpacing.sm (8px)
|
|
13696
|
-
}
|
|
13697
|
-
},
|
|
13698
|
-
defaultVariants: {
|
|
13699
|
-
size: "default"
|
|
13700
|
-
}
|
|
13701
|
-
}
|
|
13702
|
-
);
|
|
13703
|
-
var artistCardBadgeSurfaceVariants = cva(
|
|
13704
|
-
// Base classes - flex layout, items center, badge styling
|
|
13705
|
-
`inline-flex items-center ${DOMAIN_TOKENS.badges.radius} ${DOMAIN_TOKENS.badges.shadow} ${DOMAIN_TOKENS.badges.text.color} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.semibold}`,
|
|
13706
|
-
{
|
|
13707
|
-
variants: {
|
|
13708
|
-
size: {
|
|
13709
|
-
default: DOMAIN_TOKENS.badges.size.md,
|
|
13710
|
-
compact: DOMAIN_TOKENS.badges.size.sm
|
|
13711
|
-
},
|
|
13712
|
-
variant: {
|
|
13713
|
-
default: DOMAIN_TOKENS.badges.surface.default,
|
|
13714
|
-
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
13715
|
-
}
|
|
13716
|
-
},
|
|
13717
|
-
defaultVariants: {
|
|
13718
|
-
size: "default",
|
|
13719
|
-
variant: "featured"
|
|
13720
|
-
}
|
|
13721
|
-
}
|
|
13722
|
-
);
|
|
13723
|
-
var artistCardImageOverlayVariants = cva(
|
|
13724
|
-
`absolute inset-0 ${DOMAIN_TOKENS.image.overlay.gradient} opacity-0 ${MOTION_TOKENS.transition.opacity} ${MOTION_TOKENS.duration.normal} group-hover:opacity-100`,
|
|
13725
|
-
{
|
|
13726
|
-
variants: {
|
|
13727
|
-
size: {
|
|
13728
|
-
default: "",
|
|
13729
|
-
compact: ""
|
|
13730
|
-
}
|
|
13731
|
-
},
|
|
13732
|
-
defaultVariants: {
|
|
13733
|
-
size: "default"
|
|
13734
|
-
}
|
|
13735
|
-
}
|
|
13736
|
-
);
|
|
13737
|
-
var artistCardImageTransformVariants = cva(
|
|
13738
|
-
`object-cover ${MOTION_TOKENS.transition.transform} ${MOTION_TOKENS.duration.slow} ${DOMAIN_TOKENS.motion.hover.scale}`,
|
|
13739
|
-
{
|
|
13740
|
-
variants: {
|
|
13741
|
-
size: {
|
|
13742
|
-
default: "",
|
|
13743
|
-
compact: ""
|
|
13744
|
-
}
|
|
13745
|
-
},
|
|
13746
|
-
defaultVariants: {
|
|
13747
|
-
size: "default"
|
|
13748
|
-
}
|
|
13749
|
-
}
|
|
13750
|
-
);
|
|
13751
|
-
var artistCardMetadataVariants = cva(
|
|
13752
|
-
// Base classes - flex column, metadata spacing
|
|
13753
|
-
`flex flex-col ${DOMAIN_TOKENS.metadata.spacing.vertical}`,
|
|
13754
|
-
{
|
|
13755
|
-
variants: {
|
|
13756
|
-
size: {
|
|
13757
|
-
default: "",
|
|
13758
|
-
compact: ""
|
|
13759
|
-
}
|
|
13760
|
-
},
|
|
13761
|
-
defaultVariants: {
|
|
13762
|
-
size: "default"
|
|
13763
|
-
}
|
|
13764
|
-
}
|
|
13765
|
-
);
|
|
13766
|
-
var artistCardMetadataItemVariants = cva(
|
|
13767
|
-
// Base classes - flex items center, metadata spacing and text
|
|
13768
|
-
`flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
13769
|
-
{
|
|
13770
|
-
variants: {
|
|
13771
|
-
size: {
|
|
13772
|
-
default: "",
|
|
13773
|
-
compact: ""
|
|
13774
|
-
}
|
|
13775
|
-
},
|
|
13776
|
-
defaultVariants: {
|
|
13777
|
-
size: "default"
|
|
13778
|
-
}
|
|
13779
|
-
}
|
|
13780
|
-
);
|
|
13781
|
-
var artistCardMetadataIconVariants = cva(
|
|
13782
|
-
// Base classes - icon size and color
|
|
13783
|
-
`${ICON_TOKENS.sizes.md} ${ICON_TOKENS.colors.muted}`,
|
|
13784
|
-
{
|
|
13785
|
-
variants: {
|
|
13786
|
-
size: {
|
|
13787
|
-
default: "",
|
|
13788
|
-
compact: ""
|
|
13789
|
-
}
|
|
13790
|
-
},
|
|
13791
|
-
defaultVariants: {
|
|
13792
|
-
size: "default"
|
|
13793
|
-
}
|
|
13794
|
-
}
|
|
13795
|
-
);
|
|
13796
|
-
var artistCardGenresVariants = cva(
|
|
13797
|
-
// Base classes - genres text styling
|
|
13798
|
-
`${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.xs}`,
|
|
13799
|
-
{
|
|
13800
|
-
variants: {
|
|
13801
|
-
size: {
|
|
13802
|
-
default: "",
|
|
13803
|
-
compact: ""
|
|
13804
|
-
}
|
|
13805
|
-
},
|
|
13806
|
-
defaultVariants: {
|
|
13807
|
-
size: "default"
|
|
13808
|
-
}
|
|
13809
|
-
}
|
|
13810
|
-
);
|
|
13811
|
-
var artistCardFooterBorderVariants = cva(
|
|
13812
|
-
// Base classes - border top from ARTIST_TOKENS, spacing from DOMAIN_TOKENS
|
|
13813
|
-
ARTIST_TOKENS.footer.border.top,
|
|
13814
|
-
{
|
|
13815
|
-
variants: {
|
|
13816
|
-
size: {
|
|
13817
|
-
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
13818
|
-
// Default padding top - references semanticSpacing.sm (8px) via Tailwind
|
|
13819
|
-
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
13820
|
-
// Compact padding top - references semanticSpacing.xs (4px) via Tailwind
|
|
13821
|
-
}
|
|
13822
|
-
},
|
|
13823
|
-
defaultVariants: {
|
|
13824
|
-
size: "default"
|
|
13825
|
-
}
|
|
13826
|
-
}
|
|
13827
|
-
);
|
|
13828
|
-
var ArtistCard = React48.forwardRef(
|
|
13829
|
-
({
|
|
13830
|
-
name,
|
|
13831
|
-
description,
|
|
13832
|
-
genres,
|
|
13833
|
-
followers,
|
|
13834
|
-
plays,
|
|
13835
|
-
imageUrl,
|
|
13836
|
-
href,
|
|
13837
|
-
featured = false,
|
|
13838
|
-
showImage = true,
|
|
13839
|
-
popularBadgeText,
|
|
13840
|
-
followersLabel,
|
|
13841
|
-
playsLabel,
|
|
13842
|
-
size = "default",
|
|
13843
|
-
variant,
|
|
13844
|
-
className,
|
|
13845
|
-
animation,
|
|
13846
|
-
...props
|
|
13847
|
-
}, ref) => {
|
|
13848
|
-
if (!name || name.trim() === "") {
|
|
13849
|
-
throw new Error('ArtistCard: "name" prop is required and cannot be empty');
|
|
13850
|
-
}
|
|
13851
|
-
if (!followersLabel || followersLabel.trim() === "") {
|
|
13852
|
-
throw new Error('ArtistCard: "followersLabel" prop is required and cannot be empty');
|
|
13853
|
-
}
|
|
13854
|
-
if (!playsLabel || playsLabel.trim() === "") {
|
|
13855
|
-
throw new Error('ArtistCard: "playsLabel" prop is required and cannot be empty');
|
|
13856
|
-
}
|
|
13857
|
-
const animationProps = resolveComponentAnimations({
|
|
13858
|
-
animation: animation?.animation || "fadeInUp",
|
|
13859
|
-
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
13860
|
-
animationProps: animation?.animationProps
|
|
13861
|
-
});
|
|
13862
|
-
const cardVariant = variant || (featured ? "featured" : "default");
|
|
13863
|
-
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
13864
|
-
CardBase,
|
|
13865
|
-
{
|
|
13866
|
-
ref,
|
|
13867
|
-
size,
|
|
13868
|
-
variant: cardVariant,
|
|
13869
|
-
className: cn(artistCardVariants({ size, variant }), className),
|
|
13870
|
-
...props,
|
|
13871
|
-
children: [
|
|
13872
|
-
featured && popularBadgeText && /* @__PURE__ */ jsx("div", { className: artistCardBadgeVariants({ size }), children: /* @__PURE__ */ jsx("span", { className: artistCardBadgeSurfaceVariants({ size, variant: "featured" }), children: popularBadgeText }) }),
|
|
13873
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size, children: /* @__PURE__ */ jsxs(
|
|
13874
|
-
"div",
|
|
13875
|
-
{
|
|
13876
|
-
className: cn(
|
|
13877
|
-
ARTIST_TOKENS.image.container.layout,
|
|
13878
|
-
DOMAIN_TOKENS.image.placeholder.gradient
|
|
13879
|
-
),
|
|
13880
|
-
children: [
|
|
13881
|
-
imageUrl ? /* @__PURE__ */ jsx(
|
|
13882
|
-
"img",
|
|
13883
|
-
{
|
|
13884
|
-
src: imageUrl,
|
|
13885
|
-
alt: name,
|
|
13886
|
-
className: cn(
|
|
13887
|
-
ARTIST_TOKENS.image.sizing.full,
|
|
13888
|
-
artistCardImageTransformVariants({ size })
|
|
13889
|
-
)
|
|
13890
|
-
}
|
|
13891
|
-
) : /* @__PURE__ */ jsx("div", { className: ARTIST_TOKENS.image.placeholder.container, children: /* @__PURE__ */ jsx(
|
|
13892
|
-
Icon2,
|
|
13893
|
-
{
|
|
13894
|
-
name: "info",
|
|
13895
|
-
size: "xl",
|
|
13896
|
-
color: "muted",
|
|
13897
|
-
className: ICON_TOKENS.sizes["4xl"],
|
|
13898
|
-
"aria-hidden": "true"
|
|
13899
|
-
}
|
|
13900
|
-
) }),
|
|
13901
|
-
/* @__PURE__ */ jsx("div", { className: artistCardImageOverlayVariants({ size }) })
|
|
13902
|
-
]
|
|
13903
|
-
}
|
|
13904
|
-
) }),
|
|
13905
|
-
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size, children: [
|
|
13906
|
-
/* @__PURE__ */ jsx(
|
|
13907
|
-
Heading,
|
|
13908
|
-
{
|
|
13909
|
-
level: 3,
|
|
13910
|
-
className: cn(
|
|
13911
|
-
DOMAIN_TOKENS.text.lineClamp.two,
|
|
13912
|
-
TEXT_TOKENS.fontSize.lg,
|
|
13913
|
-
TEXT_TOKENS.fontWeight.bold,
|
|
13914
|
-
MOTION_TOKENS.transition.colors,
|
|
13915
|
-
DOMAIN_TOKENS.text.hover.primary,
|
|
13916
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
13917
|
-
),
|
|
13918
|
-
children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: name }) : name
|
|
13919
|
-
}
|
|
13920
|
-
),
|
|
13921
|
-
description && /* @__PURE__ */ jsx(
|
|
13922
|
-
Text,
|
|
13923
|
-
{
|
|
13924
|
-
size: "sm",
|
|
13925
|
-
variant: "muted",
|
|
13926
|
-
className: cn(
|
|
13927
|
-
DOMAIN_TOKENS.text.lineClamp.two,
|
|
13928
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
13929
|
-
),
|
|
13930
|
-
children: description
|
|
13931
|
-
}
|
|
13932
|
-
),
|
|
13933
|
-
genres && /* @__PURE__ */ jsx(
|
|
13934
|
-
Text,
|
|
13935
|
-
{
|
|
13936
|
-
size: "xs",
|
|
13937
|
-
variant: "muted",
|
|
13938
|
-
className: cn(
|
|
13939
|
-
artistCardGenresVariants({ size }),
|
|
13940
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
13941
|
-
),
|
|
13942
|
-
children: genres
|
|
13943
|
-
}
|
|
13944
|
-
),
|
|
13945
|
-
(followers !== void 0 || plays !== void 0) && /* @__PURE__ */ jsxs("div", { className: artistCardMetadataVariants({ size }), children: [
|
|
13946
|
-
followers !== void 0 && /* @__PURE__ */ jsxs("div", { className: artistCardMetadataItemVariants({ size }), children: [
|
|
13947
|
-
/* @__PURE__ */ jsx(
|
|
13948
|
-
Icon2,
|
|
13949
|
-
{
|
|
13950
|
-
name: "info",
|
|
13951
|
-
size: "sm",
|
|
13952
|
-
color: "muted",
|
|
13953
|
-
className: artistCardMetadataIconVariants({ size }),
|
|
13954
|
-
"aria-hidden": "true"
|
|
13955
|
-
}
|
|
13956
|
-
),
|
|
13957
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs", variant: "muted", children: [
|
|
13958
|
-
followers.toLocaleString(),
|
|
13959
|
-
" ",
|
|
13960
|
-
followersLabel
|
|
13961
|
-
] })
|
|
13962
|
-
] }),
|
|
13963
|
-
plays !== void 0 && /* @__PURE__ */ jsxs("div", { className: artistCardMetadataItemVariants({ size }), children: [
|
|
13964
|
-
/* @__PURE__ */ jsx(
|
|
13965
|
-
Icon2,
|
|
13966
|
-
{
|
|
13967
|
-
name: "info",
|
|
13968
|
-
size: "sm",
|
|
13969
|
-
color: "muted",
|
|
13970
|
-
className: artistCardMetadataIconVariants({ size }),
|
|
13971
|
-
"aria-hidden": "true"
|
|
13972
|
-
}
|
|
13973
|
-
),
|
|
13974
|
-
/* @__PURE__ */ jsxs(Text, { size: "xs", variant: "muted", children: [
|
|
13975
|
-
plays.toLocaleString(),
|
|
13976
|
-
" ",
|
|
13977
|
-
playsLabel
|
|
13978
|
-
] })
|
|
13979
|
-
] })
|
|
13980
|
-
] })
|
|
13981
|
-
] }),
|
|
13982
|
-
(followers !== void 0 || plays !== void 0) && /* @__PURE__ */ jsx(CardBaseFooterWrapper, { size, children: /* @__PURE__ */ jsx("div", { className: artistCardFooterBorderVariants({ size }) }) })
|
|
13983
|
-
]
|
|
13984
|
-
}
|
|
13985
|
-
) });
|
|
13986
|
-
}
|
|
13987
|
-
);
|
|
13988
|
-
ArtistCard.displayName = "ArtistCard";
|
|
13989
|
-
var categoryCardBadgeVariants = cva(
|
|
13990
|
-
// Base classes - absolute positioning, z-index
|
|
13991
|
-
"absolute z-10",
|
|
13992
|
-
{
|
|
13993
|
-
variants: {
|
|
13994
|
-
size: {
|
|
13995
|
-
default: DOMAIN_TOKENS.badges.position.default,
|
|
13996
|
-
// Default positioning - references semanticSpacing.md (16px)
|
|
13997
|
-
compact: DOMAIN_TOKENS.badges.position.compact
|
|
13998
|
-
// Compact positioning - references semanticSpacing.sm (8px)
|
|
13999
|
-
}
|
|
14000
|
-
},
|
|
14001
|
-
defaultVariants: {
|
|
14002
|
-
size: "default"
|
|
14003
|
-
}
|
|
14004
|
-
}
|
|
14005
|
-
);
|
|
14006
|
-
var categoryCardBadgeSurfaceVariants = cva(
|
|
14007
|
-
// Base classes - flex layout, items center, badge styling
|
|
14008
|
-
// Uses DOMAIN_TOKENS for badge-specific styles, TEXT_TOKENS for typography
|
|
14009
|
-
`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}`,
|
|
14010
|
-
{
|
|
14011
|
-
variants: {
|
|
14012
|
-
variant: {
|
|
14013
|
-
default: DOMAIN_TOKENS.badges.surface.default,
|
|
14014
|
-
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
14015
|
-
}
|
|
14016
|
-
},
|
|
14017
|
-
defaultVariants: {
|
|
14018
|
-
variant: "featured"
|
|
14019
|
-
}
|
|
14020
|
-
}
|
|
14021
|
-
);
|
|
14022
|
-
var CategoryCard = React48.forwardRef(
|
|
14023
|
-
({
|
|
14024
|
-
title,
|
|
14025
|
-
description,
|
|
14026
|
-
imageUrl,
|
|
14027
|
-
href,
|
|
14028
|
-
featured = false,
|
|
14029
|
-
showImage = true,
|
|
14030
|
-
featuredBadgeText,
|
|
14031
|
-
size = "default",
|
|
14032
|
-
variant,
|
|
14033
|
-
className,
|
|
14034
|
-
animation,
|
|
14035
|
-
...props
|
|
14036
|
-
}, ref) => {
|
|
14037
|
-
const animationProps = resolveComponentAnimations({
|
|
14038
|
-
animation: animation?.animation || "fadeInUp",
|
|
14039
|
-
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
14040
|
-
animationProps: animation?.animationProps
|
|
14041
|
-
});
|
|
14042
|
-
const cardVariant = variant || (featured ? "featured" : "default");
|
|
14043
|
-
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
14044
|
-
CardBase,
|
|
14045
|
-
{
|
|
14046
|
-
ref,
|
|
14047
|
-
size,
|
|
14048
|
-
variant: cardVariant,
|
|
14049
|
-
className: cn("group relative", className),
|
|
14050
|
-
...props,
|
|
14051
|
-
children: [
|
|
14052
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: categoryCardBadgeVariants({ size }), children: /* @__PURE__ */ jsx("span", { className: categoryCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
14053
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size, children: /* @__PURE__ */ jsxs(
|
|
14054
|
-
"div",
|
|
14055
|
-
{
|
|
14056
|
-
className: cn(
|
|
14057
|
-
"relative w-full overflow-hidden",
|
|
14058
|
-
DOMAIN_TOKENS.image.placeholder.gradient
|
|
14059
|
-
),
|
|
14060
|
-
children: [
|
|
14061
|
-
imageUrl ? /* @__PURE__ */ jsx(
|
|
14062
|
-
"img",
|
|
14063
|
-
{
|
|
14064
|
-
src: imageUrl,
|
|
14065
|
-
alt: title,
|
|
14066
|
-
className: cn(
|
|
14067
|
-
"h-full w-full object-cover",
|
|
14068
|
-
DOMAIN_TOKENS.motion.hover.transition,
|
|
14069
|
-
DOMAIN_TOKENS.motion.hover.scale
|
|
14070
|
-
)
|
|
14071
|
-
}
|
|
14072
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
14073
|
-
Icon2,
|
|
14074
|
-
{
|
|
14075
|
-
name: "info",
|
|
14076
|
-
className: cn(ICON_TOKENS.sizes["4xl"], ICON_TOKENS.colors.muted),
|
|
14077
|
-
"aria-hidden": "true"
|
|
14078
|
-
}
|
|
14079
|
-
) }),
|
|
14080
|
-
/* @__PURE__ */ jsx(
|
|
14081
|
-
"div",
|
|
14082
|
-
{
|
|
14083
|
-
className: cn(
|
|
14084
|
-
"absolute inset-0 opacity-0 group-hover:opacity-100",
|
|
14085
|
-
MOTION_TOKENS.transition.opacity,
|
|
14086
|
-
MOTION_TOKENS.duration.normal,
|
|
14087
|
-
DOMAIN_TOKENS.image.overlay.gradient
|
|
14088
|
-
)
|
|
14089
|
-
}
|
|
14090
|
-
)
|
|
14091
|
-
]
|
|
14092
|
-
}
|
|
14093
|
-
) }),
|
|
14094
|
-
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size, children: [
|
|
14095
|
-
/* @__PURE__ */ jsx(
|
|
14096
|
-
Heading,
|
|
14097
|
-
{
|
|
14098
|
-
level: 3,
|
|
14099
|
-
className: cn(
|
|
14100
|
-
DOMAIN_TOKENS.text.lineClamp.two,
|
|
14101
|
-
MOTION_TOKENS.transition.colors,
|
|
14102
|
-
DOMAIN_TOKENS.text.hover.primary,
|
|
14103
|
-
TEXT_TOKENS.fontSize.lg,
|
|
14104
|
-
TEXT_TOKENS.fontWeight.bold,
|
|
14105
|
-
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
14106
|
-
),
|
|
14107
|
-
children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: title }) : title
|
|
14108
|
-
}
|
|
14109
|
-
),
|
|
14110
|
-
description && /* @__PURE__ */ jsx(
|
|
14111
|
-
Text,
|
|
14112
|
-
{
|
|
14113
|
-
size: "sm",
|
|
14114
|
-
variant: "muted",
|
|
14115
|
-
className: cn(
|
|
14116
|
-
DOMAIN_TOKENS.text.lineClamp.two,
|
|
14117
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
14118
|
-
),
|
|
14119
|
-
children: description
|
|
14120
|
-
}
|
|
14121
|
-
)
|
|
14122
|
-
] })
|
|
14123
|
-
]
|
|
14124
|
-
}
|
|
14125
|
-
) });
|
|
14126
|
-
}
|
|
14127
|
-
);
|
|
14128
|
-
CategoryCard.displayName = "CategoryCard";
|
|
14129
|
-
var promoCardBadgeVariants = cva(
|
|
14130
|
-
// Base classes - absolute positioning, z-index
|
|
14131
|
-
"absolute z-10",
|
|
14132
|
-
{
|
|
14133
|
-
variants: {
|
|
14134
|
-
size: {
|
|
14135
|
-
default: DOMAIN_TOKENS.badges.position.default,
|
|
14136
|
-
// Default positioning - maps to semanticSpacing.md (12px)
|
|
14137
|
-
compact: DOMAIN_TOKENS.badges.position.compact
|
|
14138
|
-
// Compact positioning - maps to semanticSpacing.sm (8px)
|
|
14139
|
-
}
|
|
14140
|
-
},
|
|
14141
|
-
defaultVariants: {
|
|
14142
|
-
size: "default"
|
|
14143
|
-
}
|
|
14144
|
-
}
|
|
14145
|
-
);
|
|
14146
|
-
var promoCardBadgeSurfaceVariants = cva(
|
|
14147
|
-
// Base classes - flex layout, items center, badge styling
|
|
14148
|
-
`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} font-semibold`,
|
|
14149
|
-
{
|
|
14150
|
-
variants: {
|
|
14151
|
-
variant: {
|
|
14152
|
-
default: DOMAIN_TOKENS.badges.surface.default,
|
|
14153
|
-
featured: DOMAIN_TOKENS.badges.surface.featured
|
|
14154
|
-
}
|
|
14155
|
-
},
|
|
14156
|
-
defaultVariants: {
|
|
14157
|
-
variant: "featured"
|
|
14158
|
-
}
|
|
14159
|
-
}
|
|
14160
|
-
);
|
|
14161
|
-
var promoCardCtaButtonVariants = cva(
|
|
14162
|
-
// Base classes - flex layout, CTA button tokens, motion
|
|
14163
|
-
`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`,
|
|
14164
|
-
{
|
|
14165
|
-
variants: {
|
|
14166
|
-
size: {
|
|
14167
|
-
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}`,
|
|
14168
|
-
// Default size - uses md height and padding
|
|
14169
|
-
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}`
|
|
14170
|
-
// Compact size - uses sm height and padding
|
|
14171
|
-
}
|
|
14172
|
-
},
|
|
14173
|
-
defaultVariants: {
|
|
14174
|
-
size: "default"
|
|
14175
|
-
}
|
|
14176
|
-
}
|
|
14177
|
-
);
|
|
14178
|
-
var promoCardCtaButtonIconVariants = cva(
|
|
14179
|
-
// Base classes - icon size and spacing
|
|
14180
|
-
`${ICON_TOKENS.sizes.md} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
14181
|
-
{
|
|
14182
|
-
variants: {
|
|
14183
|
-
size: {
|
|
14184
|
-
default: "",
|
|
14185
|
-
compact: ""
|
|
14186
|
-
}
|
|
14187
|
-
},
|
|
14188
|
-
defaultVariants: {
|
|
14189
|
-
size: "default"
|
|
14190
|
-
}
|
|
14191
|
-
}
|
|
14192
|
-
);
|
|
14193
|
-
var PromoCard = React48.forwardRef(
|
|
14194
|
-
({
|
|
14195
|
-
title,
|
|
14196
|
-
description,
|
|
14197
|
-
imageUrl,
|
|
14198
|
-
href,
|
|
14199
|
-
ctaUrl,
|
|
14200
|
-
ctaLabel,
|
|
14201
|
-
featured = false,
|
|
14202
|
-
showImage = true,
|
|
14203
|
-
featuredBadgeText,
|
|
14204
|
-
size = "default",
|
|
14205
|
-
variant,
|
|
14206
|
-
className,
|
|
14207
|
-
animation,
|
|
14208
|
-
...props
|
|
14209
|
-
}, ref) => {
|
|
14210
|
-
const animationProps = resolveComponentAnimations({
|
|
14211
|
-
animation: animation?.animation || "fadeInUp",
|
|
14212
|
-
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
14213
|
-
animationProps: animation?.animationProps
|
|
14214
|
-
});
|
|
14215
|
-
const cardVariant = variant || (featured ? "featured" : "default");
|
|
14216
|
-
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
14217
|
-
CardBase,
|
|
14218
|
-
{
|
|
14219
|
-
ref,
|
|
14220
|
-
size,
|
|
14221
|
-
variant: cardVariant,
|
|
14222
|
-
className: cn("group relative", className),
|
|
14223
|
-
...props,
|
|
14224
|
-
children: [
|
|
14225
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: promoCardBadgeVariants({ size }), children: /* @__PURE__ */ jsx("span", { className: promoCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
14226
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size, children: /* @__PURE__ */ jsxs("div", { className: "relative w-full overflow-hidden bg-gradient-to-br from-surface-elevated1 to-surface-elevated2", children: [
|
|
14227
|
-
imageUrl ? /* @__PURE__ */ jsx(
|
|
14228
|
-
"img",
|
|
14229
|
-
{
|
|
14230
|
-
src: imageUrl,
|
|
14231
|
-
alt: title,
|
|
14232
|
-
className: cn(
|
|
14233
|
-
"h-full w-full object-cover",
|
|
14234
|
-
DOMAIN_TOKENS.motion.hover.transition,
|
|
14235
|
-
DOMAIN_TOKENS.motion.hover.scale
|
|
14236
|
-
)
|
|
14237
|
-
}
|
|
14238
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
14239
|
-
Icon2,
|
|
14240
|
-
{
|
|
14241
|
-
name: "info",
|
|
14242
|
-
size: "xl",
|
|
14243
|
-
color: "muted",
|
|
14244
|
-
className: ICON_TOKENS.sizes["4xl"],
|
|
14245
|
-
"aria-hidden": "true"
|
|
14246
|
-
}
|
|
14247
|
-
) }),
|
|
14248
|
-
/* @__PURE__ */ jsx(
|
|
14249
|
-
"div",
|
|
14250
|
-
{
|
|
14251
|
-
className: cn(
|
|
14252
|
-
"absolute inset-0 opacity-0 transition-opacity duration-normal group-hover:opacity-100",
|
|
14253
|
-
DOMAIN_TOKENS.image.overlay.gradient
|
|
14254
|
-
)
|
|
14255
|
-
}
|
|
14256
|
-
)
|
|
14257
|
-
] }) }),
|
|
14258
|
-
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size, children: [
|
|
14259
|
-
/* @__PURE__ */ jsx(
|
|
14260
|
-
Heading,
|
|
14261
|
-
{
|
|
14262
|
-
level: 3,
|
|
14263
|
-
className: cn(
|
|
14264
|
-
"line-clamp-2 transition-colors group-hover:text-primary",
|
|
14265
|
-
TEXT_TOKENS.fontSize.lg,
|
|
14266
|
-
TEXT_TOKENS.fontWeight.bold,
|
|
14267
|
-
DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
14268
|
-
),
|
|
14269
|
-
children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: title }) : title
|
|
14270
|
-
}
|
|
14271
|
-
),
|
|
14272
|
-
description && /* @__PURE__ */ jsx(
|
|
14273
|
-
Text,
|
|
14274
|
-
{
|
|
14275
|
-
size: "sm",
|
|
14276
|
-
variant: "muted",
|
|
14277
|
-
className: cn(
|
|
14278
|
-
"line-clamp-2",
|
|
14279
|
-
size === "compact" ? DOMAIN_TOKENS.spacing.section.titleToSubtitle : DOMAIN_TOKENS.spacing.section.subtitleToMetadata
|
|
14280
|
-
),
|
|
14281
|
-
children: description
|
|
14282
|
-
}
|
|
14283
|
-
)
|
|
14284
|
-
] }),
|
|
14285
|
-
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size, children: /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
14286
|
-
ctaUrl && /* @__PURE__ */ jsxs(Link, { href: ctaUrl, className: cn("w-full", promoCardCtaButtonVariants({ size })), children: [
|
|
14287
|
-
ctaLabel,
|
|
14288
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: promoCardCtaButtonIconVariants({ size }) })
|
|
14289
|
-
] }),
|
|
14290
|
-
!ctaUrl && /* @__PURE__ */ jsxs("div", { className: cn("w-full", promoCardCtaButtonVariants({ size })), children: [
|
|
14291
|
-
ctaLabel,
|
|
14292
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: promoCardCtaButtonIconVariants({ size }) })
|
|
14293
|
-
] })
|
|
14294
|
-
] }) })
|
|
14295
|
-
]
|
|
14296
|
-
}
|
|
14297
|
-
) });
|
|
14298
|
-
}
|
|
14299
|
-
);
|
|
14300
|
-
PromoCard.displayName = "PromoCard";
|
|
14301
|
-
var ticketCardVariants = cva("group relative", {
|
|
14302
|
-
variants: {
|
|
14303
|
-
size: {
|
|
14304
|
-
default: "",
|
|
14305
|
-
compact: ""
|
|
14306
|
-
},
|
|
14307
|
-
variant: {
|
|
14308
|
-
default: "",
|
|
14309
|
-
featured: ""
|
|
14310
|
-
}
|
|
14311
|
-
},
|
|
14312
|
-
defaultVariants: {
|
|
14313
|
-
size: "default",
|
|
14314
|
-
variant: "default"
|
|
14315
|
-
}
|
|
14316
|
-
});
|
|
14317
|
-
var ticketCardBadgeVariants = cva(
|
|
14318
|
-
// Base classes - absolute positioning, z-index
|
|
14319
|
-
"absolute z-10",
|
|
14320
|
-
{
|
|
14321
|
-
variants: {
|
|
14322
|
-
size: {
|
|
14323
|
-
default: DOMAIN_TOKENS.badges.position.default,
|
|
14324
|
-
// Default positioning - maps to semanticSpacing.md (16px)
|
|
14325
|
-
compact: DOMAIN_TOKENS.badges.position.compact
|
|
14326
|
-
// Compact positioning - maps to semanticSpacing.sm (8px)
|
|
14327
|
-
}
|
|
14328
|
-
},
|
|
14329
|
-
defaultVariants: {
|
|
14330
|
-
size: "default"
|
|
14331
|
-
}
|
|
14332
|
-
}
|
|
14333
|
-
);
|
|
14334
|
-
var ticketCardBadgeSurfaceVariants = cva(
|
|
14335
|
-
// Base classes - flex layout, items center, badge styling
|
|
14336
|
-
`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}`,
|
|
14337
|
-
{
|
|
14338
|
-
variants: {
|
|
14339
|
-
variant: {
|
|
14340
|
-
default: DOMAIN_TOKENS.badges.surface.default,
|
|
14341
|
-
featured: DOMAIN_TOKENS.badges.surface.featured,
|
|
14342
|
-
vip: DOMAIN_TOKENS.badges.surface.featured,
|
|
14343
|
-
// VIP uses featured gradient
|
|
14344
|
-
discount: DOMAIN_TOKENS.badges.surface.default
|
|
14345
|
-
// Discount badge - using default badge surface
|
|
14346
|
-
}
|
|
14347
|
-
},
|
|
14348
|
-
defaultVariants: {
|
|
14349
|
-
variant: "default"
|
|
14350
|
-
}
|
|
14351
|
-
}
|
|
14352
|
-
);
|
|
14353
|
-
var ticketCardTitleVariants = cva(
|
|
14354
|
-
`${TEXT_TOKENS.fontSize.lg} ${TEXT_TOKENS.fontWeight.bold} ${MOTION_TOKENS.transition.colors} ${DOMAIN_TOKENS.text.hover.primary} ${DOMAIN_TOKENS.text.lineClamp.two}`,
|
|
14355
|
-
{
|
|
14356
|
-
variants: {
|
|
14357
|
-
size: {
|
|
14358
|
-
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
14359
|
-
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
14360
|
-
}
|
|
14361
|
-
},
|
|
14362
|
-
defaultVariants: {
|
|
14363
|
-
size: "default"
|
|
14364
|
-
}
|
|
14365
|
-
}
|
|
14366
|
-
);
|
|
14367
|
-
var ticketCardDateVariants = cva(
|
|
14368
|
-
`${DOMAIN_TOKENS.metadata.text.secondary} ${TEXT_TOKENS.fontSize.sm} ${MOTION_TOKENS.transition.colors}`,
|
|
14369
|
-
{
|
|
14370
|
-
variants: {
|
|
14371
|
-
size: {
|
|
14372
|
-
default: DOMAIN_TOKENS.spacing.section.titleToSubtitle,
|
|
14373
|
-
compact: `${DOMAIN_TOKENS.spacing.section.titleToSubtitle} ${TEXT_TOKENS.fontSize.xs}`
|
|
14374
|
-
}
|
|
14375
|
-
},
|
|
14376
|
-
defaultVariants: {
|
|
14377
|
-
size: "default"
|
|
14378
|
-
}
|
|
14379
|
-
}
|
|
14380
|
-
);
|
|
14381
|
-
var ticketCardDescriptionVariants = cva(`${DOMAIN_TOKENS.text.lineClamp.two}`, {
|
|
14382
|
-
variants: {
|
|
14383
|
-
size: {
|
|
14384
|
-
default: DOMAIN_TOKENS.spacing.section.subtitleToMetadata,
|
|
14385
|
-
compact: DOMAIN_TOKENS.spacing.section.titleToSubtitle
|
|
14386
|
-
}
|
|
14387
|
-
},
|
|
14388
|
-
defaultVariants: {
|
|
14389
|
-
size: "default"
|
|
14390
|
-
}
|
|
14391
|
-
});
|
|
14392
|
-
var ticketCardPriceCapacityContainerVariants = cva(
|
|
14393
|
-
// Base classes - flex layout, price/capacity spacing
|
|
14394
|
-
`flex items-center ${DOMAIN_TOKENS.priceCapacity.spacing}`,
|
|
14395
|
-
{
|
|
14396
|
-
variants: {
|
|
14397
|
-
size: {
|
|
14398
|
-
default: "",
|
|
14399
|
-
compact: ""
|
|
14400
|
-
}
|
|
14401
|
-
},
|
|
14402
|
-
defaultVariants: {
|
|
14403
|
-
size: "default"
|
|
14404
|
-
}
|
|
14405
|
-
}
|
|
14406
|
-
);
|
|
14407
|
-
var ticketCardPriceVariants = cva(
|
|
14408
|
-
// Base classes - price text color
|
|
14409
|
-
`${DOMAIN_TOKENS.priceCapacity.text.primary} ${TEXT_TOKENS.fontWeight.bold}`,
|
|
14410
|
-
{
|
|
14411
|
-
variants: {
|
|
14412
|
-
size: {
|
|
14413
|
-
default: TEXT_TOKENS.fontSize.lg,
|
|
14414
|
-
// Default size
|
|
14415
|
-
compact: TEXT_TOKENS.fontSize.md
|
|
14416
|
-
// Compact size
|
|
14417
|
-
}
|
|
14418
|
-
},
|
|
14419
|
-
defaultVariants: {
|
|
14420
|
-
size: "default"
|
|
14421
|
-
}
|
|
14422
|
-
}
|
|
14423
|
-
);
|
|
14424
|
-
var ticketCardCapacityVariants = cva(
|
|
14425
|
-
// Base classes - capacity text color
|
|
14426
|
-
`${DOMAIN_TOKENS.priceCapacity.text.secondary}`,
|
|
14427
|
-
{
|
|
14428
|
-
variants: {
|
|
14429
|
-
size: {
|
|
14430
|
-
default: TEXT_TOKENS.fontSize.sm,
|
|
14431
|
-
// Default size
|
|
14432
|
-
compact: TEXT_TOKENS.fontSize.xs
|
|
14433
|
-
// Compact size
|
|
14434
|
-
}
|
|
14435
|
-
},
|
|
14436
|
-
defaultVariants: {
|
|
14437
|
-
size: "default"
|
|
14438
|
-
}
|
|
14439
|
-
}
|
|
14440
|
-
);
|
|
14441
|
-
var ticketCardAvailabilityVariants = cva(
|
|
14442
|
-
// Base classes - availability indicator styling
|
|
14443
|
-
`inline-flex items-center ${DOMAIN_TOKENS.metadata.spacing.horizontal} ${TEXT_TOKENS.fontSize.xs} ${TEXT_TOKENS.fontWeight.medium}`,
|
|
14444
|
-
{
|
|
14445
|
-
variants: {
|
|
14446
|
-
availability: {
|
|
14447
|
-
available: `${DOMAIN_TOKENS.metadata.text.primary}`,
|
|
14448
|
-
sold_out: `${DOMAIN_TOKENS.metadata.text.secondary} opacity-60`,
|
|
14449
|
-
available_soon: `${DOMAIN_TOKENS.metadata.text.secondary}`
|
|
14450
|
-
}
|
|
14451
|
-
},
|
|
14452
|
-
defaultVariants: {
|
|
14453
|
-
availability: "available"
|
|
14454
|
-
}
|
|
14455
|
-
}
|
|
14456
|
-
);
|
|
14457
|
-
var ticketCardFooterVariants = cva(
|
|
14458
|
-
// Base classes - border top, spacing
|
|
14459
|
-
"border-t border-border",
|
|
14460
|
-
{
|
|
14461
|
-
variants: {
|
|
14462
|
-
size: {
|
|
14463
|
-
default: DOMAIN_TOKENS.spacing.footer.paddingTopDefault,
|
|
14464
|
-
// Default padding top - references semanticSpacing.sm (8px) via Tailwind
|
|
14465
|
-
compact: DOMAIN_TOKENS.spacing.footer.paddingTopCompact
|
|
14466
|
-
// Compact padding top - references semanticSpacing.xs (4px) via Tailwind
|
|
14467
|
-
}
|
|
14468
|
-
},
|
|
14469
|
-
defaultVariants: {
|
|
14470
|
-
size: "default"
|
|
14471
|
-
}
|
|
14472
|
-
}
|
|
14473
|
-
);
|
|
14474
|
-
var ticketCardPurchaseButtonVariants = cva(
|
|
14475
|
-
// Base classes - flex layout, badge gradient, motion
|
|
14476
|
-
`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`,
|
|
14477
|
-
{
|
|
14478
|
-
variants: {
|
|
14479
|
-
size: {
|
|
14480
|
-
default: DOMAIN_TOKENS.spacing.button.paddingDefault,
|
|
14481
|
-
// Default padding - references semanticSpacing.md (16px) horizontal, xs (4px) vertical via Tailwind
|
|
14482
|
-
compact: DOMAIN_TOKENS.spacing.button.paddingCompact
|
|
14483
|
-
// Compact padding - references semanticSpacing.sm (8px) horizontal, xs (4px) vertical via Tailwind
|
|
14484
|
-
},
|
|
14485
|
-
disabled: {
|
|
14486
|
-
true: "opacity-50 cursor-not-allowed",
|
|
14487
|
-
false: "hover:scale-105 hover:from-accent-600 hover:to-primary-700"
|
|
14488
|
-
}
|
|
14489
|
-
},
|
|
14490
|
-
defaultVariants: {
|
|
14491
|
-
size: "default",
|
|
14492
|
-
disabled: false
|
|
14493
|
-
}
|
|
14494
|
-
}
|
|
14495
|
-
);
|
|
14496
|
-
var ticketCardPurchaseButtonIconVariants = cva(
|
|
14497
|
-
// Base classes - icon size and spacing
|
|
14498
|
-
`${ICON_TOKENS.sizes.md} ${DOMAIN_TOKENS.spacing.button.iconMarginLeft}`,
|
|
14499
|
-
{
|
|
14500
|
-
variants: {
|
|
14501
|
-
size: {
|
|
14502
|
-
default: "",
|
|
14503
|
-
compact: ""
|
|
14504
|
-
}
|
|
14505
|
-
},
|
|
14506
|
-
defaultVariants: {
|
|
14507
|
-
size: "default"
|
|
14508
|
-
}
|
|
14509
|
-
}
|
|
14510
|
-
);
|
|
14511
|
-
var ticketCardImageOverlayVariants = cva(
|
|
14512
|
-
`absolute inset-0 ${DOMAIN_TOKENS.image.overlay.gradient} opacity-0 ${MOTION_TOKENS.transition.opacity} ${MOTION_TOKENS.duration.normal} group-hover:opacity-100`,
|
|
14513
|
-
{
|
|
14514
|
-
variants: {
|
|
14515
|
-
size: {
|
|
14516
|
-
default: "",
|
|
14517
|
-
compact: ""
|
|
14518
|
-
}
|
|
14519
|
-
},
|
|
14520
|
-
defaultVariants: {
|
|
14521
|
-
size: "default"
|
|
14522
|
-
}
|
|
14523
|
-
}
|
|
14524
|
-
);
|
|
14525
|
-
var ticketCardImageTransformVariants = cva(
|
|
14526
|
-
`object-cover ${MOTION_TOKENS.transition.transform} ${MOTION_TOKENS.duration.slow} ${DOMAIN_TOKENS.motion.hover.scale}`,
|
|
14527
|
-
{
|
|
14528
|
-
variants: {
|
|
14529
|
-
size: {
|
|
14530
|
-
default: "",
|
|
14531
|
-
compact: ""
|
|
14532
|
-
}
|
|
14533
|
-
},
|
|
14534
|
-
defaultVariants: {
|
|
14535
|
-
size: "default"
|
|
14536
|
-
}
|
|
14537
|
-
}
|
|
14538
|
-
);
|
|
14539
|
-
var TicketCard = React48.forwardRef(
|
|
14540
|
-
({
|
|
14541
|
-
title,
|
|
14542
|
-
date,
|
|
14543
|
-
description,
|
|
14544
|
-
price,
|
|
14545
|
-
capacity,
|
|
14546
|
-
availability = "available",
|
|
14547
|
-
imageUrl,
|
|
14548
|
-
href,
|
|
14549
|
-
purchaseUrl,
|
|
14550
|
-
purchaseLabel,
|
|
14551
|
-
vipBadgeText,
|
|
14552
|
-
discountBadgeText,
|
|
14553
|
-
featured = false,
|
|
14554
|
-
featuredBadgeText,
|
|
14555
|
-
showImage = true,
|
|
14556
|
-
size = "default",
|
|
14557
|
-
variant,
|
|
14558
|
-
className,
|
|
14559
|
-
animation,
|
|
14560
|
-
...props
|
|
14561
|
-
}, ref) => {
|
|
14562
|
-
const animationProps = resolveComponentAnimations({
|
|
14563
|
-
animation: animation?.animation || "fadeInUp",
|
|
14564
|
-
hoverAnimation: animation?.hoverAnimation || "hoverLift",
|
|
14565
|
-
animationProps: animation?.animationProps
|
|
14566
|
-
});
|
|
14567
|
-
const cardVariant = variant || (featured ? "featured" : "default");
|
|
14568
|
-
const isPurchaseDisabled = availability === "sold_out" || availability === "available_soon";
|
|
14569
|
-
const getVipBadgePosition = () => {
|
|
14570
|
-
if (!featured || !featuredBadgeText) return "";
|
|
14571
|
-
return size === "compact" ? `${DOMAIN_TOKENS.badges.position.compact} ${DOMAIN_TOKENS.badges.positionY.xl}` : `${DOMAIN_TOKENS.badges.position.default} ${DOMAIN_TOKENS.badges.positionY["2xl"]}`;
|
|
14572
|
-
};
|
|
14573
|
-
const getDiscountBadgePosition = () => {
|
|
14574
|
-
if (!(featured && featuredBadgeText) && !vipBadgeText) return "";
|
|
14575
|
-
return size === "compact" ? `${DOMAIN_TOKENS.badges.position.compact} ${DOMAIN_TOKENS.badges.positionY["2xl"]}` : `${DOMAIN_TOKENS.badges.position.default} ${DOMAIN_TOKENS.badges.positionY["3xl"]}`;
|
|
14576
|
-
};
|
|
14577
|
-
const getAvailabilityLabel = () => {
|
|
14578
|
-
switch (availability) {
|
|
14579
|
-
case "sold_out":
|
|
14580
|
-
return "Sold Out";
|
|
14581
|
-
case "available_soon":
|
|
14582
|
-
return "Available Soon";
|
|
14583
|
-
case "available":
|
|
14584
|
-
default:
|
|
14585
|
-
return null;
|
|
14586
|
-
}
|
|
14587
|
-
};
|
|
14588
|
-
const availabilityLabel = getAvailabilityLabel();
|
|
14589
|
-
const formattedDate = date ? formatDate(date) : null;
|
|
14590
|
-
const dateTimeValue = (() => {
|
|
14591
|
-
if (!date) return null;
|
|
14592
|
-
if (typeof date === "string") {
|
|
14593
|
-
return new Date(date).toISOString();
|
|
14594
|
-
}
|
|
14595
|
-
if (date instanceof Date) {
|
|
14596
|
-
return date.toISOString();
|
|
14597
|
-
}
|
|
14598
|
-
return new Date(date).toISOString();
|
|
14599
|
-
})();
|
|
14600
|
-
return /* @__PURE__ */ jsx(Box, { ...animationProps, children: /* @__PURE__ */ jsxs(
|
|
14601
|
-
CardBase,
|
|
14602
|
-
{
|
|
14603
|
-
ref,
|
|
14604
|
-
size,
|
|
14605
|
-
variant: cardVariant,
|
|
14606
|
-
className: cn(ticketCardVariants({ size, variant: cardVariant }), className),
|
|
14607
|
-
...props,
|
|
14608
|
-
children: [
|
|
14609
|
-
featured && featuredBadgeText && /* @__PURE__ */ jsx("div", { className: ticketCardBadgeVariants({ size }), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "featured" }), children: featuredBadgeText }) }),
|
|
14610
|
-
vipBadgeText && /* @__PURE__ */ jsx("div", { className: cn(ticketCardBadgeVariants({ size }), getVipBadgePosition()), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "vip" }), children: vipBadgeText }) }),
|
|
14611
|
-
discountBadgeText && /* @__PURE__ */ jsx("div", { className: cn(ticketCardBadgeVariants({ size }), getDiscountBadgePosition()), children: /* @__PURE__ */ jsx("span", { className: ticketCardBadgeSurfaceVariants({ variant: "discount" }), children: discountBadgeText }) }),
|
|
14612
|
-
showImage && /* @__PURE__ */ jsx(CardBaseImageWrapper, { size, children: /* @__PURE__ */ jsxs(
|
|
14613
|
-
"div",
|
|
14614
|
-
{
|
|
14615
|
-
className: cn(
|
|
14616
|
-
"relative w-full overflow-hidden",
|
|
14617
|
-
DOMAIN_TOKENS.image.placeholder.gradient
|
|
14618
|
-
),
|
|
14619
|
-
children: [
|
|
14620
|
-
imageUrl ? /* @__PURE__ */ jsx(
|
|
14621
|
-
"img",
|
|
14622
|
-
{
|
|
14623
|
-
src: imageUrl,
|
|
14624
|
-
alt: title,
|
|
14625
|
-
className: cn("h-full w-full", ticketCardImageTransformVariants({ size }))
|
|
14626
|
-
}
|
|
14627
|
-
) : /* @__PURE__ */ jsx("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
14628
|
-
Icon2,
|
|
14629
|
-
{
|
|
14630
|
-
name: "info",
|
|
14631
|
-
size: "xl",
|
|
14632
|
-
color: "muted",
|
|
14633
|
-
className: ICON_TOKENS.sizes["4xl"],
|
|
14634
|
-
"aria-hidden": "true"
|
|
14635
|
-
}
|
|
14636
|
-
) }),
|
|
14637
|
-
/* @__PURE__ */ jsx("div", { className: ticketCardImageOverlayVariants({ size }) })
|
|
14638
|
-
]
|
|
14639
|
-
}
|
|
14640
|
-
) }),
|
|
14641
|
-
/* @__PURE__ */ jsxs(CardBaseContentWrapper, { size, children: [
|
|
14642
|
-
/* @__PURE__ */ jsx(Heading, { level: 3, className: ticketCardTitleVariants({ size }), children: href ? /* @__PURE__ */ jsx(Link, { href, variant: "ghost", children: title }) : title }),
|
|
14643
|
-
formattedDate && dateTimeValue && /* @__PURE__ */ jsx("time", { dateTime: dateTimeValue, className: ticketCardDateVariants({ size }), children: formattedDate }),
|
|
14644
|
-
description && /* @__PURE__ */ jsx(Text, { size: "sm", variant: "muted", className: ticketCardDescriptionVariants({ size }), children: description }),
|
|
14645
|
-
(price || capacity) && /* @__PURE__ */ jsxs("div", { className: ticketCardPriceCapacityContainerVariants({ size }), children: [
|
|
14646
|
-
price && /* @__PURE__ */ jsx(
|
|
14647
|
-
Text,
|
|
14648
|
-
{
|
|
14649
|
-
size: size === "compact" ? "md" : "lg",
|
|
14650
|
-
weight: "bold",
|
|
14651
|
-
className: ticketCardPriceVariants({ size }),
|
|
14652
|
-
children: price
|
|
14653
|
-
}
|
|
14654
|
-
),
|
|
14655
|
-
capacity && /* @__PURE__ */ jsx(
|
|
14656
|
-
Text,
|
|
14657
|
-
{
|
|
14658
|
-
size: size === "compact" ? "xs" : "sm",
|
|
14659
|
-
variant: "muted",
|
|
14660
|
-
className: ticketCardCapacityVariants({ size }),
|
|
14661
|
-
children: capacity
|
|
14662
|
-
}
|
|
14663
|
-
)
|
|
14664
|
-
] }),
|
|
14665
|
-
availabilityLabel && /* @__PURE__ */ jsx("div", { className: ticketCardAvailabilityVariants({ availability }), children: /* @__PURE__ */ jsx(Text, { size: "xs", variant: availability === "sold_out" ? "muted" : "primary", children: availabilityLabel }) })
|
|
14666
|
-
] }),
|
|
14667
|
-
/* @__PURE__ */ jsx(CardBaseFooterWrapper, { size, children: /* @__PURE__ */ jsxs("div", { className: cn("w-full", ticketCardFooterVariants({ size })), children: [
|
|
14668
|
-
purchaseUrl && !isPurchaseDisabled && /* @__PURE__ */ jsxs(
|
|
14669
|
-
Link,
|
|
14670
|
-
{
|
|
14671
|
-
href: purchaseUrl,
|
|
14672
|
-
className: cn(
|
|
14673
|
-
"w-full",
|
|
14674
|
-
ticketCardPurchaseButtonVariants({ size, disabled: false })
|
|
14675
|
-
),
|
|
14676
|
-
target: "_blank",
|
|
14677
|
-
rel: "noopener noreferrer",
|
|
14678
|
-
children: [
|
|
14679
|
-
purchaseLabel,
|
|
14680
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size }) })
|
|
14681
|
-
]
|
|
14682
|
-
}
|
|
14683
|
-
),
|
|
14684
|
-
(!purchaseUrl || isPurchaseDisabled) && /* @__PURE__ */ jsxs(
|
|
14685
|
-
"div",
|
|
14686
|
-
{
|
|
14687
|
-
className: cn(
|
|
14688
|
-
"w-full",
|
|
14689
|
-
ticketCardPurchaseButtonVariants({ size, disabled: isPurchaseDisabled })
|
|
14690
|
-
),
|
|
14691
|
-
children: [
|
|
14692
|
-
purchaseLabel,
|
|
14693
|
-
/* @__PURE__ */ jsx(IconArrowRight, { className: ticketCardPurchaseButtonIconVariants({ size }) })
|
|
14694
|
-
]
|
|
14695
|
-
}
|
|
14696
|
-
)
|
|
14697
|
-
] }) })
|
|
14698
|
-
]
|
|
14699
|
-
}
|
|
14700
|
-
) });
|
|
14701
|
-
}
|
|
14702
|
-
);
|
|
14703
|
-
TicketCard.displayName = "TicketCard";
|
|
14704
|
-
|
|
14705
|
-
export { ALERT_TOKENS, Alert, ArtistCard, BUTTON_TOKENS, Backdrop, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Card, CardBody, CardFooter, CardHeader, CategoryCard, Checkbox, Column, Container, Surface as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DOMAIN_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, EventCard, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, Label2 as Label, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, Portal3 as Portal, Progress, PromoCard, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, TicketCard, Toast, ToastProvider, ToastViewport, Toaster, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, baseColors, borderRadius, buttonVariants, chartColors, checkboxVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants as containerSurfaceVariants, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, letterSpacing, lineHeight, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
|
|
12778
|
+
export { ALERT_TOKENS, Alert, BADGE_VARIANTS, BUTTON_TOKENS, Backdrop, Badge, Box, Breadcrumbs, Button, CARD_TOKENS, CHECKBOX_TOKENS, Card, CardBody, CardFooter, CardHeader, Checkbox, Column, Container, Surface as ContainerSurface, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DATA_TOKENS, DataListRoot as DataList, DataListItem, DataListLabel, DataListRoot, DataListValue, Dialog, DialogBody, DialogDescription, DialogFooter, DialogHeader, DialogRoot, DialogTitle, EmptyState, EmptyStateAction, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, FieldRoot as Field, Flex, Grid, Heading, HoverCardContent, HoverCardRoot, HoverCardTrigger, ICONS_MAP, ICON_TOKENS, INPUT_TOKENS, Icon2 as Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconError, IconInfo, IconLocation, IconMenu, IconSearch, IconSuccess, IconWarning, Input, LINK_SIZES, LINK_VARIANTS, Label2 as Label, Link, MENU_TOKENS, MOTION_TOKENS, Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalRoot, ModalTitle, ModalTrigger, NAVIGATION_TOKENS, NOTIFICATION_TOKENS, NotificationCenter, NotificationCenterDismissAll, NotificationCenterGroupHeader, NotificationCenterItem, NotificationCenterList, NotificationCenterPanel, NotificationCenterProvider, NotificationCenterTrigger, OVERLAY_TOKENS, POPOVER_TOKENS, Pagination, Portal3 as Portal, RADIO_TOKENS, Radio, RadioGroup, Row, SECTION_TOKENS, SURFACE_TOKENS, SWITCH_TOKENS, Section, SegmentedControl, Select, SelectContent, SelectGroup, SelectIcon, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectRoot, SelectSeparator, SelectTrigger, SelectValue, SelectViewport, Skeleton, Stack, Stepper, Surface, TEXT_TOKENS, TOAST_TOKENS, TOOLTIP_TOKENS, TableRoot as Table, TableBody, TableCell, TableEmpty, TableExpandableContent, TableHead, TableHeader, TableLoadingState, TableRoot, TableRow, TableSortIcon, Tabs, Text, Textarea, Toast, ToastProvider, ToastViewport, Toaster, UI_COLORS, accentColoredShadows, accentColors, alertVariants, allCSSVariables, allCSSVariablesCSS, animations, badgeVariants, baseColors, borderRadius, buttonVariants, chartColors, checkboxVariants, colorCSSVariables, componentRadius, componentShadowMapping, surfaceVariants as containerSurfaceVariants, cssVariableColorTokens, durations, easings, elevationShadows, focusRings, fontFamily, fontSize, fontSizeWithMd, fontWeight, generateCSSVariablesCSS, glowEffects, headingVariants, iconVariants, inputVariants, keyframes, labelVariants, layoutSpacing, letterSpacing, lineHeight, linkVariants, motionCSSVariables, motionV2CSSVariables, motionV2Combined, motionV2Durations, motionV2Easings, motionV2Fade, motionV2Scale, motionV2Slide, motionV2TailwindConfig, motionV2Transitions, primaryColoredShadows, primaryColors, radioVariants, radiusCSSVariables, reducedMotion, secondaryColors, segmentedControlItemVariants, segmentedControlRootVariants, semanticColors, semanticSpacing, shadowBase, shadowCSSVariables, shadowOpacity, skeletonVariants, spacing, spacingCSSVariables, springs, surfaceColors, surfaceVariants, tailwindMotionConfig, tailwindRadiusConfig, tailwindShadowConfig, tailwindSpacingConfig, tailwindThemeColors, tailwindTypographyConfig, textColors, textStyles, textVariants, textareaVariants, tokenSystemSummary, transitions, typographyCSSVariables, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
|