@bloomkit/react 0.2.11 → 0.2.12

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/dist/index.cjs CHANGED
@@ -792,7 +792,7 @@ var Slider = _react.forwardRef.call(void 0,
792
792
  Slider.displayName = "Slider";
793
793
 
794
794
  // src/components/modal/modal.tsx
795
- var _reactdialog = require('@radix-ui/react-dialog'); var DialogPrimitive = _interopRequireWildcard(_reactdialog);
795
+ var _reactdialog = require('@radix-ui/react-dialog'); var DialogPrimitive = _interopRequireWildcard(_reactdialog); var DialogPrimitive2 = _interopRequireWildcard(_reactdialog);
796
796
 
797
797
  function Modal({ open, onOpenChange, title, description, children, className }) {
798
798
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive.Root, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPrimitive.Portal, { children: [
@@ -992,7 +992,7 @@ TabsContent.displayName = "TabsContent";
992
992
 
993
993
  // src/components/date-picker/date-picker.tsx
994
994
 
995
- var _reactpopover = require('@radix-ui/react-popover'); var Popover = _interopRequireWildcard(_reactpopover);
995
+ var _reactpopover = require('@radix-ui/react-popover'); var Popover = _interopRequireWildcard(_reactpopover); var PopoverPrimitive = _interopRequireWildcard(_reactpopover);
996
996
 
997
997
  function getDaysInMonth(year, month) {
998
998
  return new Date(year, month + 1, 0).getDate();
@@ -1499,6 +1499,335 @@ var SelectSeparator = _react.forwardRef.call(void 0,
1499
1499
  );
1500
1500
  SelectSeparator.displayName = "SelectSeparator";
1501
1501
 
1502
+ // src/components/otp-input/otp-input.tsx
1503
+
1504
+
1505
+ var OTPInput = _react.forwardRef.call(void 0,
1506
+ ({ length = 6, value = "", onChange, onComplete, disabled = false, className, autoFocus = false }, ref) => {
1507
+ const [digits, setDigits] = _react.useState.call(void 0, () => {
1508
+ const arr = new Array(length).fill("");
1509
+ value.split("").forEach((char, i) => {
1510
+ if (i < length) arr[i] = char;
1511
+ });
1512
+ return arr;
1513
+ });
1514
+ const inputRefs = _react.useRef.call(void 0, []);
1515
+ _react.useEffect.call(void 0, () => {
1516
+ const arr = new Array(length).fill("");
1517
+ value.split("").forEach((char, i) => {
1518
+ if (i < length) arr[i] = char;
1519
+ });
1520
+ setDigits(arr);
1521
+ }, [value, length]);
1522
+ const updateDigits = _react.useCallback.call(void 0,
1523
+ (newDigits) => {
1524
+ setDigits(newDigits);
1525
+ const joined = newDigits.join("");
1526
+ _optionalChain([onChange, 'optionalCall', _2 => _2(joined)]);
1527
+ if (joined.length === length && newDigits.every((d) => d !== "")) {
1528
+ _optionalChain([onComplete, 'optionalCall', _3 => _3(joined)]);
1529
+ }
1530
+ },
1531
+ [length, onChange, onComplete]
1532
+ );
1533
+ const handleInput = _react.useCallback.call(void 0,
1534
+ (index, char) => {
1535
+ if (!/^\d$/.test(char)) return;
1536
+ const newDigits = [...digits];
1537
+ newDigits[index] = char;
1538
+ updateDigits(newDigits);
1539
+ if (index < length - 1) {
1540
+ _optionalChain([inputRefs, 'access', _4 => _4.current, 'access', _5 => _5[index + 1], 'optionalAccess', _6 => _6.focus, 'call', _7 => _7()]);
1541
+ }
1542
+ },
1543
+ [digits, length, updateDigits]
1544
+ );
1545
+ const handleKeyDown = _react.useCallback.call(void 0,
1546
+ (index, e) => {
1547
+ if (e.key === "Backspace") {
1548
+ e.preventDefault();
1549
+ const newDigits = [...digits];
1550
+ if (digits[index]) {
1551
+ newDigits[index] = "";
1552
+ updateDigits(newDigits);
1553
+ } else if (index > 0) {
1554
+ newDigits[index - 1] = "";
1555
+ updateDigits(newDigits);
1556
+ _optionalChain([inputRefs, 'access', _8 => _8.current, 'access', _9 => _9[index - 1], 'optionalAccess', _10 => _10.focus, 'call', _11 => _11()]);
1557
+ }
1558
+ } else if (e.key === "ArrowLeft" && index > 0) {
1559
+ _optionalChain([inputRefs, 'access', _12 => _12.current, 'access', _13 => _13[index - 1], 'optionalAccess', _14 => _14.focus, 'call', _15 => _15()]);
1560
+ } else if (e.key === "ArrowRight" && index < length - 1) {
1561
+ _optionalChain([inputRefs, 'access', _16 => _16.current, 'access', _17 => _17[index + 1], 'optionalAccess', _18 => _18.focus, 'call', _19 => _19()]);
1562
+ }
1563
+ },
1564
+ [digits, length, updateDigits]
1565
+ );
1566
+ const handlePaste = _react.useCallback.call(void 0,
1567
+ (e) => {
1568
+ e.preventDefault();
1569
+ const pasted = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, length);
1570
+ if (!pasted) return;
1571
+ const newDigits = new Array(length).fill("");
1572
+ pasted.split("").forEach((char, i) => {
1573
+ newDigits[i] = char;
1574
+ });
1575
+ updateDigits(newDigits);
1576
+ const focusIndex = Math.min(pasted.length, length - 1);
1577
+ _optionalChain([inputRefs, 'access', _20 => _20.current, 'access', _21 => _21[focusIndex], 'optionalAccess', _22 => _22.focus, 'call', _23 => _23()]);
1578
+ },
1579
+ [length, updateDigits]
1580
+ );
1581
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: cn("flex items-center gap-[var(--space-sm)]", className), children: digits.map((digit, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1582
+ "input",
1583
+ {
1584
+ ref: (el) => {
1585
+ inputRefs.current[index] = el;
1586
+ },
1587
+ type: "text",
1588
+ inputMode: "numeric",
1589
+ autoComplete: "one-time-code",
1590
+ maxLength: 1,
1591
+ value: digit,
1592
+ disabled,
1593
+ autoFocus: autoFocus && index === 0,
1594
+ onChange: (e) => {
1595
+ const char = e.target.value.slice(-1);
1596
+ handleInput(index, char);
1597
+ },
1598
+ onKeyDown: (e) => handleKeyDown(index, e),
1599
+ onPaste: handlePaste,
1600
+ onFocus: (e) => e.target.select(),
1601
+ className: cn(
1602
+ inputVariants(),
1603
+ "h-[52px] w-[44px] text-center",
1604
+ "text-[length:var(--bloom-text-heading)]",
1605
+ "px-0"
1606
+ )
1607
+ },
1608
+ index
1609
+ )) });
1610
+ }
1611
+ );
1612
+ OTPInput.displayName = "OTPInput";
1613
+
1614
+ // src/components/drawer/drawer.tsx
1615
+
1616
+
1617
+ var slideIn = {
1618
+ right: "data-[state=open]:slide-in-from-right",
1619
+ left: "data-[state=open]:slide-in-from-left",
1620
+ top: "data-[state=open]:slide-in-from-top",
1621
+ bottom: "data-[state=open]:slide-in-from-bottom"
1622
+ };
1623
+ var slideOut = {
1624
+ right: "data-[state=closed]:slide-out-to-right",
1625
+ left: "data-[state=closed]:slide-out-to-left",
1626
+ top: "data-[state=closed]:slide-out-to-top",
1627
+ bottom: "data-[state=closed]:slide-out-to-bottom"
1628
+ };
1629
+ var sidePosition = {
1630
+ right: "inset-y-0 right-0",
1631
+ left: "inset-y-0 left-0",
1632
+ top: "inset-x-0 top-0",
1633
+ bottom: "inset-x-0 bottom-0"
1634
+ };
1635
+ var sideSize = {
1636
+ right: "h-full w-full max-w-[400px]",
1637
+ left: "h-full w-full max-w-[400px]",
1638
+ top: "w-full",
1639
+ bottom: "w-full"
1640
+ };
1641
+ function Drawer({
1642
+ open,
1643
+ onOpenChange,
1644
+ title,
1645
+ description,
1646
+ children,
1647
+ side = "right",
1648
+ className
1649
+ }) {
1650
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive2.Root, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPrimitive2.Portal, { children: [
1651
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1652
+ DialogPrimitive2.Overlay,
1653
+ {
1654
+ className: cn(
1655
+ "fixed inset-0 z-50 bg-black/40 backdrop-blur-sm",
1656
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0",
1657
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0"
1658
+ )
1659
+ }
1660
+ ),
1661
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1662
+ DialogPrimitive2.Content,
1663
+ {
1664
+ className: cn(
1665
+ "bloom fixed z-50",
1666
+ sidePosition[side],
1667
+ sideSize[side],
1668
+ "bg-[var(--bloom-surface)] p-[var(--space-xl)]",
1669
+ "shadow-[var(--bloom-shadow-hover)]",
1670
+ "border-[var(--bloom-surface2)]",
1671
+ side === "right" && "border-l",
1672
+ side === "left" && "border-r",
1673
+ side === "top" && "border-b",
1674
+ side === "bottom" && "border-t",
1675
+ "data-[state=open]:animate-in data-[state=open]:duration-300",
1676
+ "data-[state=closed]:animate-out data-[state=closed]:duration-200",
1677
+ slideIn[side],
1678
+ slideOut[side],
1679
+ "focus:outline-none",
1680
+ className
1681
+ ),
1682
+ children: [
1683
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive2.Title, { className: "font-[family-name:var(--bloom-font-display)] text-[length:var(--bloom-text-heading)] font-medium color-[var(--bloom-text)] mb-[var(--space-sm)]", children: title }),
1684
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive2.Description, { className: "text-[length:var(--bloom-text-body)] color-[var(--bloom-text-secondary)] mb-[var(--space-lg)]", children: description }),
1685
+ children,
1686
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1687
+ DialogPrimitive2.Close,
1688
+ {
1689
+ className: cn(
1690
+ "absolute top-[var(--space-lg)] right-[var(--space-lg)]",
1691
+ "inline-flex items-center justify-center",
1692
+ "h-[32px] w-[32px] rounded-full",
1693
+ "color-[var(--bloom-text-secondary)] hover:color-[var(--bloom-text)]",
1694
+ "hover:bg-[var(--bloom-surface2)]",
1695
+ "transition-colors duration-[var(--bloom-duration-fast)]",
1696
+ "focus-visible:outline-none focus-visible:ring-[4px] focus-visible:ring-[var(--bloom-accent1)]/30"
1697
+ ),
1698
+ "aria-label": "Close",
1699
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M12 4L4 12M4 4l8 8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
1700
+ }
1701
+ )
1702
+ ]
1703
+ }
1704
+ )
1705
+ ] }) });
1706
+ }
1707
+
1708
+ // src/components/popover/popover.tsx
1709
+
1710
+
1711
+ function Popover2({
1712
+ trigger,
1713
+ children,
1714
+ side = "bottom",
1715
+ align = "center",
1716
+ className,
1717
+ open,
1718
+ onOpenChange
1719
+ }) {
1720
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PopoverPrimitive.Root, { open, onOpenChange, children: [
1721
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PopoverPrimitive.Trigger, { asChild: true, children: trigger }),
1722
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PopoverPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1723
+ PopoverPrimitive.Content,
1724
+ {
1725
+ side,
1726
+ align,
1727
+ sideOffset: 8,
1728
+ className: cn(
1729
+ "bloom z-50 w-[320px] overflow-hidden",
1730
+ "rounded-[var(--bloom-radius)]",
1731
+ "bg-[var(--bloom-surface)] p-[var(--space-lg)]",
1732
+ "shadow-[var(--bloom-shadow-hover)]",
1733
+ "border border-[var(--bloom-surface2)]",
1734
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
1735
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
1736
+ "focus:outline-none",
1737
+ className
1738
+ ),
1739
+ children
1740
+ }
1741
+ ) })
1742
+ ] });
1743
+ }
1744
+
1745
+ // src/components/accordion/accordion.tsx
1746
+
1747
+ var _reactaccordion = require('@radix-ui/react-accordion'); var AccordionPrimitive = _interopRequireWildcard(_reactaccordion);
1748
+
1749
+ var Accordion = _react.forwardRef.call(void 0,
1750
+ ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1751
+ AccordionPrimitive.Root,
1752
+ {
1753
+ ref,
1754
+ className: cn("w-full", className),
1755
+ ...props
1756
+ }
1757
+ )
1758
+ );
1759
+ Accordion.displayName = "Accordion";
1760
+ var AccordionItem = _react.forwardRef.call(void 0,
1761
+ ({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1762
+ AccordionPrimitive.Item,
1763
+ {
1764
+ ref,
1765
+ className: cn(
1766
+ "border-b border-[var(--bloom-surface2)]",
1767
+ className
1768
+ ),
1769
+ ...props
1770
+ }
1771
+ )
1772
+ );
1773
+ AccordionItem.displayName = "AccordionItem";
1774
+ var AccordionTrigger = _react.forwardRef.call(void 0,
1775
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1776
+ AccordionPrimitive.Trigger,
1777
+ {
1778
+ ref,
1779
+ className: cn(
1780
+ "flex flex-1 items-center justify-between",
1781
+ "py-[var(--space-lg)]",
1782
+ "text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] font-medium color-[var(--bloom-text)]",
1783
+ "cursor-pointer",
1784
+ "transition-all duration-[var(--bloom-duration-fast)]",
1785
+ "hover:color-[var(--bloom-accent1-deep)]",
1786
+ "[&[data-state=open]>svg]:rotate-180",
1787
+ className
1788
+ ),
1789
+ ...props,
1790
+ children: [
1791
+ children,
1792
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1793
+ "svg",
1794
+ {
1795
+ width: "16",
1796
+ height: "16",
1797
+ viewBox: "0 0 16 16",
1798
+ fill: "none",
1799
+ stroke: "currentColor",
1800
+ strokeWidth: "1.5",
1801
+ strokeLinecap: "round",
1802
+ strokeLinejoin: "round",
1803
+ className: "shrink-0 transition-transform duration-[var(--bloom-duration-fast)]",
1804
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M4 6l4 4 4-4" })
1805
+ }
1806
+ )
1807
+ ]
1808
+ }
1809
+ ) })
1810
+ );
1811
+ AccordionTrigger.displayName = "AccordionTrigger";
1812
+ var AccordionContent = _react.forwardRef.call(void 0,
1813
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1814
+ AccordionPrimitive.Content,
1815
+ {
1816
+ ref,
1817
+ className: cn(
1818
+ "overflow-hidden",
1819
+ "text-[length:var(--bloom-text-body)] font-[family-name:var(--bloom-font)] color-[var(--bloom-text-secondary)]",
1820
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0",
1821
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0",
1822
+ className
1823
+ ),
1824
+ ...props,
1825
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pb-[var(--space-lg)]", children })
1826
+ }
1827
+ )
1828
+ );
1829
+ AccordionContent.displayName = "AccordionContent";
1830
+
1502
1831
  // src/components/theme/theme.tsx
1503
1832
 
1504
1833
 
@@ -1857,5 +2186,12 @@ var builtInPalettes = [midnightGarden, desertRose, oceanMist];
1857
2186
 
1858
2187
 
1859
2188
 
1860
- exports.Alert = Alert; exports.AlertDescription = AlertDescription; exports.AlertTitle = AlertTitle; exports.Avatar = Avatar; exports.AvatarGroup = AvatarGroup; exports.Badge = Badge; exports.Button = Button; exports.Card = Card; exports.CardContent = CardContent; exports.CardDescription = CardDescription; exports.CardFooter = CardFooter; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.Checkbox = Checkbox; exports.DatePicker = DatePicker; exports.Dropdown = Dropdown; exports.DropdownItem = DropdownItem; exports.DropdownSeparator = DropdownSeparator; exports.Input = Input; exports.Modal = Modal; exports.Progress = Progress; exports.ProgressCircular = ProgressCircular; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.Select = Select; exports.SelectContent = SelectContent; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.SelectTrigger = SelectTrigger; exports.SelectValue = SelectValue; exports.Skeleton = Skeleton; exports.Slider = Slider; exports.Tabs = Tabs; exports.TabsContent = TabsContent; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.Textarea = Textarea; exports.ThemeProvider = ThemeProvider; exports.ToastProvider = ToastProvider; exports.Toggle = Toggle; exports.Tooltip = Tooltip; exports.TooltipProvider = TooltipProvider; exports.alertVariants = alertVariants; exports.avatarVariants = avatarVariants; exports.badgeVariants = badgeVariants; exports.bloomSpring = bloomSpring; exports.bloomTransition = bloomTransition; exports.bloomTransitionFast = bloomTransitionFast; exports.bloomTransitionSlow = bloomTransitionSlow; exports.builtInPalettes = builtInPalettes; exports.buttonVariants = buttonVariants; exports.cardHoverLift = cardHoverLift; exports.cardVariants = cardVariants; exports.cn = cn; exports.desertRose = desertRose; exports.fadeIn = fadeIn; exports.hoverLift = hoverLift; exports.inputVariants = inputVariants; exports.midnightGarden = midnightGarden; exports.oceanMist = oceanMist; exports.progressFillVariants = progressFillVariants; exports.progressTrackVariants = progressTrackVariants; exports.skeletonVariants = skeletonVariants; exports.slideUp = slideUp; exports.tabsListVariants = tabsListVariants; exports.toastVariants = toastVariants; exports.useBreathing = useBreathing; exports.useReducedMotion = useReducedMotion; exports.useTheme = useTheme; exports.useToast = useToast;
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+ exports.Accordion = Accordion; exports.AccordionContent = AccordionContent; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.Alert = Alert; exports.AlertDescription = AlertDescription; exports.AlertTitle = AlertTitle; exports.Avatar = Avatar; exports.AvatarGroup = AvatarGroup; exports.Badge = Badge; exports.Button = Button; exports.Card = Card; exports.CardContent = CardContent; exports.CardDescription = CardDescription; exports.CardFooter = CardFooter; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.Checkbox = Checkbox; exports.DatePicker = DatePicker; exports.Drawer = Drawer; exports.Dropdown = Dropdown; exports.DropdownItem = DropdownItem; exports.DropdownSeparator = DropdownSeparator; exports.Input = Input; exports.Modal = Modal; exports.OTPInput = OTPInput; exports.Popover = Popover2; exports.Progress = Progress; exports.ProgressCircular = ProgressCircular; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.Select = Select; exports.SelectContent = SelectContent; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.SelectTrigger = SelectTrigger; exports.SelectValue = SelectValue; exports.Skeleton = Skeleton; exports.Slider = Slider; exports.Tabs = Tabs; exports.TabsContent = TabsContent; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.Textarea = Textarea; exports.ThemeProvider = ThemeProvider; exports.ToastProvider = ToastProvider; exports.Toggle = Toggle; exports.Tooltip = Tooltip; exports.TooltipProvider = TooltipProvider; exports.alertVariants = alertVariants; exports.avatarVariants = avatarVariants; exports.badgeVariants = badgeVariants; exports.bloomSpring = bloomSpring; exports.bloomTransition = bloomTransition; exports.bloomTransitionFast = bloomTransitionFast; exports.bloomTransitionSlow = bloomTransitionSlow; exports.builtInPalettes = builtInPalettes; exports.buttonVariants = buttonVariants; exports.cardHoverLift = cardHoverLift; exports.cardVariants = cardVariants; exports.cn = cn; exports.desertRose = desertRose; exports.fadeIn = fadeIn; exports.hoverLift = hoverLift; exports.inputVariants = inputVariants; exports.midnightGarden = midnightGarden; exports.oceanMist = oceanMist; exports.progressFillVariants = progressFillVariants; exports.progressTrackVariants = progressTrackVariants; exports.skeletonVariants = skeletonVariants; exports.slideUp = slideUp; exports.tabsListVariants = tabsListVariants; exports.toastVariants = toastVariants; exports.useBreathing = useBreathing; exports.useReducedMotion = useReducedMotion; exports.useTheme = useTheme; exports.useToast = useToast;
1861
2197
  //# sourceMappingURL=index.cjs.map