analytica-frontend-lib 1.0.43 → 1.0.45

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.mjs CHANGED
@@ -1254,7 +1254,7 @@ var STATE_CLASSES4 = {
1254
1254
  default: "border-border-300 placeholder:text-text-600 hover:border-border-400",
1255
1255
  error: "border-2 border-indicator-error placeholder:text-text-600",
1256
1256
  disabled: "border-border-300 placeholder:text-text-600 cursor-not-allowed opacity-40",
1257
- "read-only": "border-border-300 !text-text-600 cursor-default focus:outline-none bg-background-50"
1257
+ "read-only": "border-transparent !text-text-600 cursor-default focus:outline-none bg-transparent"
1258
1258
  };
1259
1259
  var VARIANT_CLASSES = {
1260
1260
  outlined: "border rounded-lg",
@@ -1293,6 +1293,9 @@ var getCombinedClasses = (actualState, variant) => {
1293
1293
  if (actualState === "error" && variant === "underlined") {
1294
1294
  return "border-0 border-b-2 border-indicator-error rounded-none bg-transparent focus:outline-none focus:border-primary-950 placeholder:text-text-600";
1295
1295
  }
1296
+ if (actualState === "read-only" && variant === "underlined") {
1297
+ return "border-0 border-b-0 rounded-none bg-transparent focus:outline-none !text-text-900 cursor-default";
1298
+ }
1296
1299
  return `${stateClasses} ${variantClasses}`;
1297
1300
  };
1298
1301
  var Input = forwardRef8(
@@ -1323,7 +1326,7 @@ var Input = forwardRef8(
1323
1326
  [actualState, variant]
1324
1327
  );
1325
1328
  const iconSize = getIconSize(size);
1326
- const baseClasses = "bg-background w-full py-2 px-3 font-normal text-text-900 focus:outline-primary-950";
1329
+ const baseClasses = `bg-background w-full py-2 ${actualState === "read-only" ? "px-0" : "px-3"} font-normal text-text-900 focus:outline-primary-950`;
1327
1330
  const generatedId = useId4();
1328
1331
  const inputId = id ?? `input-${generatedId}`;
1329
1332
  const togglePasswordVisibility = () => setShowPassword(!showPassword);
@@ -1434,7 +1437,7 @@ var Chips = ({
1434
1437
  var Chips_default = Chips;
1435
1438
 
1436
1439
  // src/components/ProgressBar/ProgressBar.tsx
1437
- import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
1440
+ import { Fragment as Fragment2, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
1438
1441
  var SIZE_CLASSES7 = {
1439
1442
  small: {
1440
1443
  container: "h-1",
@@ -1475,101 +1478,397 @@ var VARIANT_CLASSES2 = {
1475
1478
  // Green for performance (#84D3A2)
1476
1479
  }
1477
1480
  };
1478
- var ProgressBar = ({
1479
- value,
1480
- max = 100,
1481
- size = "medium",
1482
- variant = "blue",
1483
- label,
1484
- showPercentage = false,
1485
- className = "",
1486
- labelClassName = "",
1487
- percentageClassName = ""
1488
- }) => {
1481
+ var calculateProgressValues = (value, max) => {
1489
1482
  const safeValue = isNaN(value) ? 0 : value;
1490
1483
  const clampedValue = Math.max(0, Math.min(safeValue, max));
1491
1484
  const percentage = max === 0 ? 0 : clampedValue / max * 100;
1492
- const sizeClasses = SIZE_CLASSES7[size];
1493
- const variantClasses = VARIANT_CLASSES2[variant];
1494
- return /* @__PURE__ */ jsxs13(
1485
+ return { clampedValue, percentage };
1486
+ };
1487
+ var shouldShowHeader = (label, showPercentage, showHitCount) => {
1488
+ return !!(label || showPercentage || showHitCount);
1489
+ };
1490
+ var getDisplayPriority = (showHitCount, showPercentage, label, clampedValue, max, percentage) => {
1491
+ if (showHitCount) {
1492
+ return {
1493
+ type: "hitCount",
1494
+ content: `${Math.round(clampedValue)} de ${max}`,
1495
+ hasMetrics: true
1496
+ };
1497
+ }
1498
+ if (showPercentage) {
1499
+ return {
1500
+ type: "percentage",
1501
+ content: `${Math.round(percentage)}%`,
1502
+ hasMetrics: true
1503
+ };
1504
+ }
1505
+ return {
1506
+ type: "label",
1507
+ content: label,
1508
+ hasMetrics: false
1509
+ };
1510
+ };
1511
+ var getCompactLayoutConfig = ({
1512
+ showPercentage,
1513
+ showHitCount,
1514
+ percentage,
1515
+ clampedValue,
1516
+ max,
1517
+ label,
1518
+ percentageClassName,
1519
+ labelClassName
1520
+ }) => {
1521
+ const displayPriority = getDisplayPriority(
1522
+ showHitCount,
1523
+ showPercentage,
1524
+ label,
1525
+ clampedValue,
1526
+ max,
1527
+ percentage
1528
+ );
1529
+ return {
1530
+ color: displayPriority.hasMetrics ? "text-primary-600" : "text-primary-700",
1531
+ className: displayPriority.hasMetrics ? percentageClassName : labelClassName,
1532
+ content: displayPriority.content
1533
+ };
1534
+ };
1535
+ var getDefaultLayoutDisplayConfig = (size, label, showPercentage) => ({
1536
+ showHeader: size === "small" && !!(label || showPercentage),
1537
+ showPercentage: size === "medium" && showPercentage,
1538
+ showLabel: size === "medium" && !!label && !showPercentage
1539
+ // Only show label when percentage is not shown
1540
+ });
1541
+ var renderStackedHitCountDisplay = (showHitCount, showPercentage, clampedValue, max, percentage, percentageClassName) => {
1542
+ if (!showHitCount && !showPercentage) return null;
1543
+ const displayPriority = getDisplayPriority(
1544
+ showHitCount,
1545
+ showPercentage,
1546
+ null,
1547
+ // label is not relevant for stacked layout metrics display
1548
+ clampedValue,
1549
+ max,
1550
+ percentage
1551
+ );
1552
+ return /* @__PURE__ */ jsx18(
1495
1553
  "div",
1496
1554
  {
1497
- className: `flex ${sizeClasses.layout} ${size === "medium" ? "gap-2" : sizeClasses.spacing} ${className}`,
1498
- children: [
1499
- size === "small" && (label || showPercentage) && /* @__PURE__ */ jsxs13("div", { className: "flex flex-row items-center justify-between w-full", children: [
1500
- label && /* @__PURE__ */ jsx18(
1501
- Text_default,
1502
- {
1503
- as: "div",
1504
- size: "xs",
1505
- weight: "medium",
1506
- className: `text-text-950 leading-none tracking-normal text-center ${labelClassName}`,
1507
- children: label
1508
- }
1509
- ),
1510
- showPercentage && /* @__PURE__ */ jsxs13(
1511
- Text_default,
1512
- {
1513
- size: "xs",
1514
- weight: "medium",
1515
- className: `text-text-950 leading-none tracking-normal text-center ${percentageClassName}`,
1516
- children: [
1517
- Math.round(percentage),
1518
- "%"
1519
- ]
1520
- }
1521
- )
1522
- ] }),
1523
- /* @__PURE__ */ jsxs13(
1524
- "div",
1525
- {
1526
- className: `${size === "medium" ? "flex-grow" : "w-full"} ${sizeClasses.container} ${variantClasses.background} ${sizeClasses.borderRadius} overflow-hidden relative`,
1527
- children: [
1528
- /* @__PURE__ */ jsx18(
1529
- "progress",
1530
- {
1531
- value: clampedValue,
1532
- max,
1533
- "aria-label": typeof label === "string" ? label : "Progress",
1534
- className: "absolute inset-0 w-full h-full opacity-0"
1535
- }
1536
- ),
1537
- /* @__PURE__ */ jsx18(
1538
- "div",
1539
- {
1540
- className: `${sizeClasses.bar} ${variantClasses.fill} ${sizeClasses.borderRadius} transition-all duration-300 ease-out shadow-hard-shadow-3`,
1541
- style: { width: `${percentage}%` }
1542
- }
1543
- )
1544
- ]
1545
- }
1546
- ),
1547
- size === "medium" && showPercentage && /* @__PURE__ */ jsxs13(
1555
+ className: `text-xs font-medium leading-[14px] text-right ${percentageClassName}`,
1556
+ children: displayPriority.type === "hitCount" ? /* @__PURE__ */ jsxs13(Fragment2, { children: [
1557
+ /* @__PURE__ */ jsx18("span", { className: "text-success-200", children: Math.round(clampedValue) }),
1558
+ /* @__PURE__ */ jsxs13("span", { className: "text-text-600", children: [
1559
+ " de ",
1560
+ max
1561
+ ] })
1562
+ ] }) : /* @__PURE__ */ jsxs13(Text_default, { size: "xs", weight: "medium", className: "text-success-200", children: [
1563
+ Math.round(percentage),
1564
+ "%"
1565
+ ] })
1566
+ }
1567
+ );
1568
+ };
1569
+ var ProgressBarBase = ({
1570
+ clampedValue,
1571
+ max,
1572
+ percentage,
1573
+ label,
1574
+ variantClasses,
1575
+ containerClassName,
1576
+ fillClassName
1577
+ }) => /* @__PURE__ */ jsxs13(
1578
+ "div",
1579
+ {
1580
+ className: `${containerClassName} ${variantClasses.background} overflow-hidden relative`,
1581
+ children: [
1582
+ /* @__PURE__ */ jsx18(
1583
+ "progress",
1584
+ {
1585
+ value: clampedValue,
1586
+ max,
1587
+ "aria-label": typeof label === "string" ? `${label}: ${Math.round(percentage)}% complete` : `Progress: ${Math.round(percentage)}% of ${max}`,
1588
+ className: "absolute inset-0 w-full h-full opacity-0"
1589
+ }
1590
+ ),
1591
+ /* @__PURE__ */ jsx18(
1592
+ "div",
1593
+ {
1594
+ className: `${fillClassName} ${variantClasses.fill} transition-all duration-300 ease-out`,
1595
+ style: { width: `${percentage}%` }
1596
+ }
1597
+ )
1598
+ ]
1599
+ }
1600
+ );
1601
+ var StackedLayout = ({
1602
+ className,
1603
+ label,
1604
+ showPercentage,
1605
+ showHitCount,
1606
+ labelClassName,
1607
+ percentageClassName,
1608
+ clampedValue,
1609
+ max,
1610
+ percentage,
1611
+ variantClasses,
1612
+ dimensions
1613
+ }) => /* @__PURE__ */ jsxs13(
1614
+ "div",
1615
+ {
1616
+ className: `flex flex-col items-start gap-2 ${dimensions.width} ${dimensions.height} ${className}`,
1617
+ children: [
1618
+ shouldShowHeader(label, showPercentage, showHitCount) && /* @__PURE__ */ jsxs13("div", { className: "flex flex-row justify-between items-center w-full h-[19px]", children: [
1619
+ label && /* @__PURE__ */ jsx18(
1548
1620
  Text_default,
1549
1621
  {
1550
- size: "xs",
1622
+ as: "div",
1623
+ size: "md",
1551
1624
  weight: "medium",
1552
- className: `text-text-950 leading-none tracking-normal text-center flex-none ${percentageClassName}`,
1553
- children: [
1554
- Math.round(percentage),
1555
- "%"
1556
- ]
1625
+ className: `text-text-600 leading-[19px] ${labelClassName}`,
1626
+ children: label
1557
1627
  }
1558
1628
  ),
1559
- size === "medium" && label && !showPercentage && /* @__PURE__ */ jsx18(
1629
+ renderStackedHitCountDisplay(
1630
+ showHitCount,
1631
+ showPercentage,
1632
+ clampedValue,
1633
+ max,
1634
+ percentage,
1635
+ percentageClassName
1636
+ )
1637
+ ] }),
1638
+ /* @__PURE__ */ jsx18(
1639
+ ProgressBarBase,
1640
+ {
1641
+ clampedValue,
1642
+ max,
1643
+ percentage,
1644
+ label,
1645
+ variantClasses,
1646
+ containerClassName: "w-full h-2 rounded-lg",
1647
+ fillClassName: "h-2 rounded-lg shadow-hard-shadow-3"
1648
+ }
1649
+ )
1650
+ ]
1651
+ }
1652
+ );
1653
+ var CompactLayout = ({
1654
+ className,
1655
+ label,
1656
+ showPercentage,
1657
+ showHitCount,
1658
+ labelClassName,
1659
+ percentageClassName,
1660
+ clampedValue,
1661
+ max,
1662
+ percentage,
1663
+ variantClasses,
1664
+ dimensions
1665
+ }) => {
1666
+ const {
1667
+ color,
1668
+ className: compactClassName,
1669
+ content
1670
+ } = getCompactLayoutConfig({
1671
+ showPercentage,
1672
+ showHitCount,
1673
+ percentage,
1674
+ clampedValue,
1675
+ max,
1676
+ label,
1677
+ percentageClassName,
1678
+ labelClassName
1679
+ });
1680
+ return /* @__PURE__ */ jsxs13(
1681
+ "div",
1682
+ {
1683
+ className: `flex flex-col items-start gap-1 ${dimensions.width} ${dimensions.height} ${className}`,
1684
+ children: [
1685
+ shouldShowHeader(label, showPercentage, showHitCount) && /* @__PURE__ */ jsx18(
1560
1686
  Text_default,
1561
1687
  {
1562
1688
  as: "div",
1563
- size: "xs",
1689
+ size: "sm",
1564
1690
  weight: "medium",
1565
- className: `text-text-950 leading-none tracking-normal text-center flex-none ${labelClassName}`,
1566
- children: label
1691
+ color,
1692
+ className: `leading-4 w-full ${compactClassName}`,
1693
+ children: content
1694
+ }
1695
+ ),
1696
+ /* @__PURE__ */ jsx18(
1697
+ ProgressBarBase,
1698
+ {
1699
+ clampedValue,
1700
+ max,
1701
+ percentage,
1702
+ label,
1703
+ variantClasses,
1704
+ containerClassName: "w-full h-1 rounded-full",
1705
+ fillClassName: "h-1 rounded-full"
1567
1706
  }
1568
1707
  )
1569
1708
  ]
1570
1709
  }
1571
1710
  );
1572
1711
  };
1712
+ var DefaultLayout = ({
1713
+ className,
1714
+ size,
1715
+ sizeClasses,
1716
+ variantClasses,
1717
+ label,
1718
+ showPercentage,
1719
+ labelClassName,
1720
+ percentageClassName,
1721
+ clampedValue,
1722
+ max,
1723
+ percentage
1724
+ }) => {
1725
+ const gapClass = size === "medium" ? "gap-2" : sizeClasses.spacing;
1726
+ const progressBarClass = size === "medium" ? "flex-grow" : "w-full";
1727
+ const displayConfig = getDefaultLayoutDisplayConfig(
1728
+ size,
1729
+ label,
1730
+ showPercentage
1731
+ );
1732
+ return /* @__PURE__ */ jsxs13("div", { className: `flex ${sizeClasses.layout} ${gapClass} ${className}`, children: [
1733
+ displayConfig.showHeader && /* @__PURE__ */ jsxs13("div", { className: "flex flex-row items-center justify-between w-full", children: [
1734
+ label && /* @__PURE__ */ jsx18(
1735
+ Text_default,
1736
+ {
1737
+ as: "div",
1738
+ size: "xs",
1739
+ weight: "medium",
1740
+ className: `text-text-950 leading-none tracking-normal text-center ${labelClassName}`,
1741
+ children: label
1742
+ }
1743
+ ),
1744
+ showPercentage && /* @__PURE__ */ jsxs13(
1745
+ Text_default,
1746
+ {
1747
+ size: "xs",
1748
+ weight: "medium",
1749
+ className: `text-text-950 leading-none tracking-normal text-center ${percentageClassName}`,
1750
+ children: [
1751
+ Math.round(percentage),
1752
+ "%"
1753
+ ]
1754
+ }
1755
+ )
1756
+ ] }),
1757
+ /* @__PURE__ */ jsx18(
1758
+ ProgressBarBase,
1759
+ {
1760
+ clampedValue,
1761
+ max,
1762
+ percentage,
1763
+ label,
1764
+ variantClasses,
1765
+ containerClassName: `${progressBarClass} ${sizeClasses.container} ${sizeClasses.borderRadius}`,
1766
+ fillClassName: `${sizeClasses.bar} ${sizeClasses.borderRadius} shadow-hard-shadow-3`
1767
+ }
1768
+ ),
1769
+ displayConfig.showPercentage && /* @__PURE__ */ jsxs13(
1770
+ Text_default,
1771
+ {
1772
+ size: "xs",
1773
+ weight: "medium",
1774
+ className: `text-text-950 leading-none tracking-normal text-center flex-none ${percentageClassName}`,
1775
+ children: [
1776
+ Math.round(percentage),
1777
+ "%"
1778
+ ]
1779
+ }
1780
+ ),
1781
+ displayConfig.showLabel && /* @__PURE__ */ jsx18(
1782
+ Text_default,
1783
+ {
1784
+ as: "div",
1785
+ size: "xs",
1786
+ weight: "medium",
1787
+ className: `text-text-950 leading-none tracking-normal text-center flex-none ${labelClassName}`,
1788
+ children: label
1789
+ }
1790
+ )
1791
+ ] });
1792
+ };
1793
+ var ProgressBar = ({
1794
+ value,
1795
+ max = 100,
1796
+ size = "medium",
1797
+ variant = "blue",
1798
+ layout = "default",
1799
+ label,
1800
+ showPercentage = false,
1801
+ showHitCount = false,
1802
+ className = "",
1803
+ labelClassName = "",
1804
+ percentageClassName = "",
1805
+ stackedWidth,
1806
+ stackedHeight,
1807
+ compactWidth,
1808
+ compactHeight
1809
+ }) => {
1810
+ const { clampedValue, percentage } = calculateProgressValues(value, max);
1811
+ const sizeClasses = SIZE_CLASSES7[size];
1812
+ const variantClasses = VARIANT_CLASSES2[variant];
1813
+ if (layout === "stacked") {
1814
+ return /* @__PURE__ */ jsx18(
1815
+ StackedLayout,
1816
+ {
1817
+ className,
1818
+ label,
1819
+ showPercentage,
1820
+ showHitCount,
1821
+ labelClassName,
1822
+ percentageClassName,
1823
+ clampedValue,
1824
+ max,
1825
+ percentage,
1826
+ variantClasses,
1827
+ dimensions: {
1828
+ width: stackedWidth ?? "w-[380px]",
1829
+ height: stackedHeight ?? "h-[35px]"
1830
+ }
1831
+ }
1832
+ );
1833
+ }
1834
+ if (layout === "compact") {
1835
+ return /* @__PURE__ */ jsx18(
1836
+ CompactLayout,
1837
+ {
1838
+ className,
1839
+ label,
1840
+ showPercentage,
1841
+ showHitCount,
1842
+ labelClassName,
1843
+ percentageClassName,
1844
+ clampedValue,
1845
+ max,
1846
+ percentage,
1847
+ variantClasses,
1848
+ dimensions: {
1849
+ width: compactWidth ?? "w-[131px]",
1850
+ height: compactHeight ?? "h-[24px]"
1851
+ }
1852
+ }
1853
+ );
1854
+ }
1855
+ return /* @__PURE__ */ jsx18(
1856
+ DefaultLayout,
1857
+ {
1858
+ className,
1859
+ size,
1860
+ sizeClasses,
1861
+ variantClasses,
1862
+ label,
1863
+ showPercentage,
1864
+ labelClassName,
1865
+ percentageClassName,
1866
+ clampedValue,
1867
+ max,
1868
+ percentage
1869
+ }
1870
+ );
1871
+ };
1573
1872
  var ProgressBar_default = ProgressBar;
1574
1873
 
1575
1874
  // src/components/ProgressCircle/ProgressCircle.tsx
@@ -1743,7 +2042,12 @@ var ProgressCircle = ({
1743
2042
  var ProgressCircle_default = ProgressCircle;
1744
2043
 
1745
2044
  // src/components/Calendar/Calendar.tsx
1746
- import { useState as useState5, useMemo as useMemo2, useEffect, useRef } from "react";
2045
+ import {
2046
+ useState as useState5,
2047
+ useMemo as useMemo2,
2048
+ useEffect,
2049
+ useRef
2050
+ } from "react";
1747
2051
  import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
1748
2052
  var WEEK_DAYS = ["SEG", "TER", "QUA", "QUI", "SEX", "S\xC1B", "DOM"];
1749
2053
  var WEEK_DAYS_SHORT = ["S", "T", "Q", "Q", "S", "S", "D"];
@@ -1813,7 +2117,7 @@ var getDayStyles = (day, variant, showActivities) => {
1813
2117
  dayStyle = "bg-primary-800";
1814
2118
  textStyle = "text-white";
1815
2119
  } else if (day.isToday) {
1816
- textStyle = "text-[#1c61b2]";
2120
+ textStyle = "text-primary-800";
1817
2121
  } else if (variant === "navigation" && showActivities && day.activities?.length) {
1818
2122
  const primaryActivity = day.activities[0];
1819
2123
  if (primaryActivity.status === "near-deadline") {
@@ -2049,7 +2353,7 @@ var Calendar = ({
2049
2353
  );
2050
2354
  let spanClass = "";
2051
2355
  if (day.isSelected && day.isToday) {
2052
- spanClass = "h-6 w-6 rounded-full bg-[#1c61b2] text-text";
2356
+ spanClass = "h-6 w-6 rounded-full bg-primary-800 text-text";
2053
2357
  } else if (day.isSelected) {
2054
2358
  spanClass = "h-6 w-6 rounded-full bg-primary-950 text-text";
2055
2359
  }
@@ -2061,12 +2365,12 @@ var Calendar = ({
2061
2365
  "button",
2062
2366
  {
2063
2367
  className: `
2064
- w-9 h-9
2065
- flex items-center justify-center
2066
- text-md font-normal
2067
- cursor-pointer
2368
+ w-9 h-9
2369
+ flex items-center justify-center
2370
+ text-md font-normal
2371
+ cursor-pointer
2068
2372
  rounded-full
2069
- ${dayStyle}
2373
+ ${dayStyle}
2070
2374
  ${textStyle}
2071
2375
  `,
2072
2376
  onClick: () => handleDateSelect(day),
@@ -2215,13 +2519,13 @@ var Calendar = ({
2215
2519
  "button",
2216
2520
  {
2217
2521
  className: `
2218
- w-10 h-10
2219
- flex items-center justify-center
2220
- text-xl font-normal
2221
- cursor-pointer
2522
+ w-10 h-10
2523
+ flex items-center justify-center
2524
+ text-xl font-normal
2525
+ cursor-pointer
2222
2526
  rounded-full
2223
2527
  focus:outline-none focus:ring-2 focus:ring-primary-600 focus:ring-offset-1
2224
- ${dayStyle}
2528
+ ${dayStyle}
2225
2529
  ${textStyle}
2226
2530
  `,
2227
2531
  onClick: () => handleDateSelect(day),
@@ -2239,11 +2543,107 @@ var Calendar = ({
2239
2543
  };
2240
2544
  var Calendar_default = Calendar;
2241
2545
 
2546
+ // src/components/Modal/Modal.tsx
2547
+ import { useEffect as useEffect2 } from "react";
2548
+ import { X as X2 } from "phosphor-react";
2549
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
2550
+ var SIZE_CLASSES9 = {
2551
+ xs: "max-w-[360px]",
2552
+ sm: "max-w-[420px]",
2553
+ md: "max-w-[510px]",
2554
+ lg: "max-w-[640px]",
2555
+ xl: "max-w-[970px]"
2556
+ };
2557
+ var Modal = ({
2558
+ isOpen,
2559
+ onClose,
2560
+ title,
2561
+ children,
2562
+ size = "md",
2563
+ className = "",
2564
+ closeOnBackdropClick = true,
2565
+ closeOnEscape = true,
2566
+ footer,
2567
+ hideCloseButton = false
2568
+ }) => {
2569
+ useEffect2(() => {
2570
+ if (!isOpen || !closeOnEscape) return;
2571
+ const handleEscape = (event) => {
2572
+ if (event.key === "Escape") {
2573
+ onClose();
2574
+ }
2575
+ };
2576
+ document.addEventListener("keydown", handleEscape);
2577
+ return () => document.removeEventListener("keydown", handleEscape);
2578
+ }, [isOpen, closeOnEscape, onClose]);
2579
+ useEffect2(() => {
2580
+ const originalOverflow = document.body.style.overflow;
2581
+ if (isOpen) {
2582
+ document.body.style.overflow = "hidden";
2583
+ } else {
2584
+ document.body.style.overflow = originalOverflow;
2585
+ }
2586
+ return () => {
2587
+ document.body.style.overflow = originalOverflow;
2588
+ };
2589
+ }, [isOpen]);
2590
+ const handleBackdropClick = (event) => {
2591
+ if (closeOnBackdropClick && event.target === event.currentTarget) {
2592
+ onClose();
2593
+ }
2594
+ };
2595
+ const handleBackdropKeyDown = (event) => {
2596
+ if (closeOnBackdropClick && (event.key === "Enter" || event.key === " ")) {
2597
+ onClose();
2598
+ }
2599
+ };
2600
+ if (!isOpen) return null;
2601
+ const sizeClasses = SIZE_CLASSES9[size];
2602
+ const baseClasses = "bg-background rounded-3xl shadow-hard-shadow-2 border border-border-100 w-full mx-4";
2603
+ const modalClasses = `${baseClasses} ${sizeClasses} ${className}`;
2604
+ return /* @__PURE__ */ jsx21(
2605
+ "div",
2606
+ {
2607
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-xs",
2608
+ onClick: handleBackdropClick,
2609
+ onKeyDown: handleBackdropKeyDown,
2610
+ role: "none",
2611
+ "aria-hidden": "true",
2612
+ children: /* @__PURE__ */ jsxs16(
2613
+ "div",
2614
+ {
2615
+ className: modalClasses,
2616
+ role: "dialog",
2617
+ "aria-modal": "true",
2618
+ "aria-labelledby": "modal-title",
2619
+ children: [
2620
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between px-6 py-6", children: [
2621
+ /* @__PURE__ */ jsx21("h2", { id: "modal-title", className: "text-lg font-semibold text-text-950", children: title }),
2622
+ !hideCloseButton && /* @__PURE__ */ jsx21(
2623
+ "button",
2624
+ {
2625
+ onClick: onClose,
2626
+ className: "p-1 text-text-500 hover:text-text-700 hover:bg-background-50 rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-indicator-info focus:ring-offset-2",
2627
+ "aria-label": "Fechar modal",
2628
+ children: /* @__PURE__ */ jsx21(X2, { size: 18 })
2629
+ }
2630
+ )
2631
+ ] }),
2632
+ /* @__PURE__ */ jsx21("div", { className: "px-6 pb-6", children: /* @__PURE__ */ jsx21("div", { className: "text-text-500 font-normal text-sm leading-6", children }) }),
2633
+ footer && /* @__PURE__ */ jsx21("div", { className: "flex justify-end gap-3 px-6 pb-6", children: footer })
2634
+ ]
2635
+ }
2636
+ )
2637
+ }
2638
+ );
2639
+ };
2640
+ var Modal_default = Modal;
2641
+
2242
2642
  // src/components/DropdownMenu/DropdownMenu.tsx
2243
2643
  import { SignOut, User } from "phosphor-react";
2244
2644
  import {
2245
2645
  forwardRef as forwardRef9,
2246
- useEffect as useEffect2,
2646
+ useEffect as useEffect3,
2247
2647
  useRef as useRef2,
2248
2648
  isValidElement,
2249
2649
  Children,
@@ -2251,7 +2651,7 @@ import {
2251
2651
  useState as useState6
2252
2652
  } from "react";
2253
2653
  import { create as create2, useStore } from "zustand";
2254
- import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
2654
+ import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
2255
2655
  function createDropdownStore() {
2256
2656
  return create2((set) => ({
2257
2657
  open: false,
@@ -2281,16 +2681,17 @@ var injectStore = (children, store) => {
2281
2681
  return child;
2282
2682
  });
2283
2683
  };
2284
- var DropdownMenu = ({ children, open, onOpenChange }) => {
2684
+ var DropdownMenu = ({
2685
+ children,
2686
+ open: propOpen,
2687
+ onOpenChange
2688
+ }) => {
2285
2689
  const storeRef = useRef2(null);
2286
2690
  storeRef.current ??= createDropdownStore();
2287
2691
  const store = storeRef.current;
2288
- const isControlled = open !== void 0;
2289
- const uncontrolledOpen = useStore(store, (s) => s.open);
2290
- const currentOpen = isControlled ? open : uncontrolledOpen;
2692
+ const { open, setOpen: storeSetOpen } = useStore(store, (s) => s);
2291
2693
  const setOpen = (newOpen) => {
2292
- onOpenChange?.(newOpen);
2293
- if (!isControlled) store.setState({ open: newOpen });
2694
+ storeSetOpen(newOpen);
2294
2695
  };
2295
2696
  const menuRef = useRef2(null);
2296
2697
  const handleArrowDownOrArrowUp = (event) => {
@@ -2326,9 +2727,8 @@ var DropdownMenu = ({ children, open, onOpenChange }) => {
2326
2727
  setOpen(false);
2327
2728
  }
2328
2729
  };
2329
- useEffect2(() => {
2330
- onOpenChange?.(currentOpen);
2331
- if (currentOpen) {
2730
+ useEffect3(() => {
2731
+ if (open) {
2332
2732
  document.addEventListener("mousedown", handleClickOutside);
2333
2733
  document.addEventListener("keydown", handleDownkey);
2334
2734
  }
@@ -2336,13 +2736,17 @@ var DropdownMenu = ({ children, open, onOpenChange }) => {
2336
2736
  document.removeEventListener("mousedown", handleClickOutside);
2337
2737
  document.removeEventListener("keydown", handleDownkey);
2338
2738
  };
2339
- }, [currentOpen]);
2340
- useEffect2(() => {
2341
- if (isControlled) {
2342
- store.setState({ open });
2739
+ }, [open]);
2740
+ useEffect3(() => {
2741
+ setOpen(open);
2742
+ onOpenChange?.(open);
2743
+ }, [open, onOpenChange]);
2744
+ useEffect3(() => {
2745
+ if (propOpen) {
2746
+ setOpen(propOpen);
2343
2747
  }
2344
- }, []);
2345
- return /* @__PURE__ */ jsx21("div", { className: "relative", ref: menuRef, children: injectStore(children, store) });
2748
+ }, [propOpen]);
2749
+ return /* @__PURE__ */ jsx22("div", { className: "relative", ref: menuRef, children: injectStore(children, store) });
2346
2750
  };
2347
2751
  var DropdownMenuTrigger = ({
2348
2752
  className,
@@ -2354,7 +2758,7 @@ var DropdownMenuTrigger = ({
2354
2758
  const store = useDropdownStore(externalStore);
2355
2759
  const open = useStore(store, (s) => s.open);
2356
2760
  const toggleOpen = () => store.setState({ open: !open });
2357
- return /* @__PURE__ */ jsx21(
2761
+ return /* @__PURE__ */ jsx22(
2358
2762
  Button_default,
2359
2763
  {
2360
2764
  variant: "outline",
@@ -2391,7 +2795,7 @@ var MENUCONTENT_VARIANT_CLASSES = {
2391
2795
  profile: "p-6"
2392
2796
  };
2393
2797
  var MenuLabel = forwardRef9(({ className, inset, store: _store, ...props }, ref) => {
2394
- return /* @__PURE__ */ jsx21(
2798
+ return /* @__PURE__ */ jsx22(
2395
2799
  "div",
2396
2800
  {
2397
2801
  ref,
@@ -2415,7 +2819,7 @@ var MenuContent = forwardRef9(
2415
2819
  const store = useDropdownStore(externalStore);
2416
2820
  const open = useStore(store, (s) => s.open);
2417
2821
  const [isVisible, setIsVisible] = useState6(open);
2418
- useEffect2(() => {
2822
+ useEffect3(() => {
2419
2823
  if (open) {
2420
2824
  setIsVisible(true);
2421
2825
  } else {
@@ -2430,7 +2834,7 @@ var MenuContent = forwardRef9(
2430
2834
  return `absolute ${vertical} ${horizontal}`;
2431
2835
  };
2432
2836
  const variantClasses = MENUCONTENT_VARIANT_CLASSES[variant];
2433
- return /* @__PURE__ */ jsx21(
2837
+ return /* @__PURE__ */ jsx22(
2434
2838
  "div",
2435
2839
  {
2436
2840
  ref,
@@ -2489,7 +2893,7 @@ var DropdownMenuItem = forwardRef9(
2489
2893
  const getVariantProps = () => {
2490
2894
  return variant === "profile" ? { "data-variant": "profile" } : {};
2491
2895
  };
2492
- return /* @__PURE__ */ jsxs16(
2896
+ return /* @__PURE__ */ jsxs17(
2493
2897
  "div",
2494
2898
  {
2495
2899
  ref,
@@ -2511,7 +2915,7 @@ var DropdownMenuItem = forwardRef9(
2511
2915
  ...props,
2512
2916
  children: [
2513
2917
  iconLeft,
2514
- /* @__PURE__ */ jsx21("span", { className: "w-full text-md", children }),
2918
+ /* @__PURE__ */ jsx22("span", { className: "w-full text-md", children }),
2515
2919
  iconRight
2516
2920
  ]
2517
2921
  }
@@ -2519,7 +2923,7 @@ var DropdownMenuItem = forwardRef9(
2519
2923
  }
2520
2924
  );
2521
2925
  DropdownMenuItem.displayName = "DropdownMenuItem";
2522
- var DropdownMenuSeparator = forwardRef9(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ jsx21(
2926
+ var DropdownMenuSeparator = forwardRef9(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ jsx22(
2523
2927
  "div",
2524
2928
  {
2525
2929
  ref,
@@ -2532,7 +2936,7 @@ var ProfileMenuTrigger = forwardRef9(({ className, onClick, store: externalStore
2532
2936
  const store = useDropdownStore(externalStore);
2533
2937
  const open = useStore(store, (s) => s.open);
2534
2938
  const toggleOpen = () => store.setState({ open: !open });
2535
- return /* @__PURE__ */ jsx21(
2939
+ return /* @__PURE__ */ jsx22(
2536
2940
  "button",
2537
2941
  {
2538
2942
  ref,
@@ -2544,13 +2948,13 @@ var ProfileMenuTrigger = forwardRef9(({ className, onClick, store: externalStore
2544
2948
  },
2545
2949
  "aria-expanded": open,
2546
2950
  ...props,
2547
- children: /* @__PURE__ */ jsx21("span", { className: "size-6 rounded-full bg-background-100 flex items-center justify-center", children: /* @__PURE__ */ jsx21(User, { className: "text-background-950", size: 18 }) })
2951
+ children: /* @__PURE__ */ jsx22("span", { className: "size-6 rounded-full bg-background-100 flex items-center justify-center", children: /* @__PURE__ */ jsx22(User, { className: "text-background-950", size: 18 }) })
2548
2952
  }
2549
2953
  );
2550
2954
  });
2551
2955
  ProfileMenuTrigger.displayName = "ProfileMenuTrigger";
2552
2956
  var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ...props }, ref) => {
2553
- return /* @__PURE__ */ jsxs16(
2957
+ return /* @__PURE__ */ jsxs17(
2554
2958
  "div",
2555
2959
  {
2556
2960
  ref,
@@ -2561,10 +2965,10 @@ var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ..
2561
2965
  `,
2562
2966
  ...props,
2563
2967
  children: [
2564
- /* @__PURE__ */ jsx21("span", { className: "size-16 bg-background-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx21(User, { size: 34, className: "text-background-950" }) }),
2565
- /* @__PURE__ */ jsxs16("div", { className: "flex flex-col ", children: [
2566
- /* @__PURE__ */ jsx21("p", { className: "text-xl font-bold text-text-950", children: name }),
2567
- /* @__PURE__ */ jsx21("p", { className: "text-md text-text-600", children: email })
2968
+ /* @__PURE__ */ jsx22("span", { className: "size-16 bg-background-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx22(User, { size: 34, className: "text-background-950" }) }),
2969
+ /* @__PURE__ */ jsxs17("div", { className: "flex flex-col ", children: [
2970
+ /* @__PURE__ */ jsx22("p", { className: "text-xl font-bold text-text-950", children: name }),
2971
+ /* @__PURE__ */ jsx22("p", { className: "text-md text-text-600", children: email })
2568
2972
  ] })
2569
2973
  ]
2570
2974
  }
@@ -2572,7 +2976,7 @@ var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ..
2572
2976
  });
2573
2977
  ProfileMenuHeader.displayName = "ProfileMenuHeader";
2574
2978
  var ProfileMenuSection = forwardRef9(({ className, children, store: _store, ...props }, ref) => {
2575
- return /* @__PURE__ */ jsx21(
2979
+ return /* @__PURE__ */ jsx22(
2576
2980
  "div",
2577
2981
  {
2578
2982
  ref,
@@ -2595,7 +2999,7 @@ var ProfileMenuFooter = ({
2595
2999
  }) => {
2596
3000
  const store = useDropdownStore(externalStore);
2597
3001
  const setOpen = useStore(store, (s) => s.setOpen);
2598
- return /* @__PURE__ */ jsxs16(
3002
+ return /* @__PURE__ */ jsxs17(
2599
3003
  Button_default,
2600
3004
  {
2601
3005
  variant: "outline",
@@ -2607,8 +3011,8 @@ var ProfileMenuFooter = ({
2607
3011
  },
2608
3012
  ...props,
2609
3013
  children: [
2610
- /* @__PURE__ */ jsx21("span", { className: "mr-2 flex items-center", children: /* @__PURE__ */ jsx21(SignOut, {}) }),
2611
- /* @__PURE__ */ jsx21("span", { children: "Sair" })
3014
+ /* @__PURE__ */ jsx22("span", { className: "mr-2 flex items-center", children: /* @__PURE__ */ jsx22(SignOut, {}) }),
3015
+ /* @__PURE__ */ jsx22("span", { children: "Sair" })
2612
3016
  ]
2613
3017
  }
2614
3018
  );
@@ -2619,7 +3023,7 @@ var DropdownMenu_default = DropdownMenu;
2619
3023
  // src/components/Select/Select.tsx
2620
3024
  import { create as create3, useStore as useStore2 } from "zustand";
2621
3025
  import {
2622
- useEffect as useEffect3,
3026
+ useEffect as useEffect4,
2623
3027
  useRef as useRef3,
2624
3028
  forwardRef as forwardRef10,
2625
3029
  isValidElement as isValidElement2,
@@ -2627,13 +3031,13 @@ import {
2627
3031
  cloneElement as cloneElement2
2628
3032
  } from "react";
2629
3033
  import { CaretDown, Check as Check3 } from "phosphor-react";
2630
- import { Fragment as Fragment2, jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
3034
+ import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
2631
3035
  var VARIANT_CLASSES4 = {
2632
3036
  outlined: "border-2 rounded-sm focus:border-primary-950",
2633
3037
  underlined: "border-b-2 focus:border-primary-950",
2634
3038
  rounded: "border-2 rounded-4xl focus:border-primary-950"
2635
3039
  };
2636
- var SIZE_CLASSES9 = {
3040
+ var SIZE_CLASSES10 = {
2637
3041
  small: "text-sm",
2638
3042
  medium: "text-md",
2639
3043
  large: "text-lg"
@@ -2673,7 +3077,7 @@ function getLabelAsNode(children) {
2673
3077
  }
2674
3078
  const flattened = Children2.toArray(children);
2675
3079
  if (flattened.length === 1) return flattened[0];
2676
- return /* @__PURE__ */ jsx22(Fragment2, { children: flattened });
3080
+ return /* @__PURE__ */ jsx23(Fragment3, { children: flattened });
2677
3081
  }
2678
3082
  var injectStore2 = (children, store) => {
2679
3083
  return Children2.map(children, (child) => {
@@ -2705,8 +3109,6 @@ var Select = ({
2705
3109
  store,
2706
3110
  (s) => s
2707
3111
  );
2708
- const isControlled = propValue !== void 0;
2709
- const currentValue = isControlled ? propValue : value;
2710
3112
  const findLabelForValue = (children2, targetValue) => {
2711
3113
  let found = null;
2712
3114
  const search = (nodes) => {
@@ -2724,14 +3126,13 @@ var Select = ({
2724
3126
  search(children2);
2725
3127
  return found;
2726
3128
  };
2727
- useEffect3(() => {
3129
+ useEffect4(() => {
2728
3130
  if (!selectedLabel && defaultValue) {
2729
3131
  const label = findLabelForValue(children, defaultValue);
2730
3132
  if (label) store.setState({ selectedLabel: label });
2731
3133
  }
2732
3134
  }, [children, defaultValue, selectedLabel]);
2733
- useEffect3(() => {
2734
- setValue(currentValue);
3135
+ useEffect4(() => {
2735
3136
  const handleClickOutside = (event) => {
2736
3137
  if (selectRef.current && !selectRef.current.contains(event.target)) {
2737
3138
  setOpen(false);
@@ -2766,13 +3167,19 @@ var Select = ({
2766
3167
  document.removeEventListener("keydown", handleArrowKeys);
2767
3168
  };
2768
3169
  }, [open]);
2769
- useEffect3(() => {
2770
- if (onValueChange) {
2771
- onValueChange(value);
3170
+ useEffect4(() => {
3171
+ setValue(value);
3172
+ onValueChange?.(value);
3173
+ }, [value, onValueChange]);
3174
+ useEffect4(() => {
3175
+ if (propValue) {
3176
+ setValue(propValue);
3177
+ const label = findLabelForValue(children, propValue);
3178
+ if (label) store.setState({ selectedLabel: label });
2772
3179
  }
2773
- }, [value]);
2774
- const sizeClasses = SIZE_CLASSES9[size];
2775
- return /* @__PURE__ */ jsx22("div", { className: `relative ${sizeClasses} w-[288px]`, ref: selectRef, children: injectStore2(children, store) });
3180
+ }, [propValue]);
3181
+ const sizeClasses = SIZE_CLASSES10[size];
3182
+ return /* @__PURE__ */ jsx23("div", { className: `relative ${sizeClasses} w-[288px]`, ref: selectRef, children: injectStore2(children, store) });
2776
3183
  };
2777
3184
  var SelectValue = ({
2778
3185
  placeholder,
@@ -2781,7 +3188,7 @@ var SelectValue = ({
2781
3188
  const store = useSelectStore(externalStore);
2782
3189
  const selectedLabel = useStore2(store, (s) => s.selectedLabel);
2783
3190
  const value = useStore2(store, (s) => s.value);
2784
- return /* @__PURE__ */ jsx22("span", { className: "text-inherit", children: selectedLabel || placeholder || value });
3191
+ return /* @__PURE__ */ jsx23("span", { className: "text-inherit", children: selectedLabel || placeholder || value });
2785
3192
  };
2786
3193
  var SelectTrigger = forwardRef10(
2787
3194
  ({
@@ -2796,7 +3203,7 @@ var SelectTrigger = forwardRef10(
2796
3203
  const open = useStore2(store, (s) => s.open);
2797
3204
  const toggleOpen = () => store.setState({ open: !open });
2798
3205
  const variantClasses = VARIANT_CLASSES4[variant];
2799
- return /* @__PURE__ */ jsxs17(
3206
+ return /* @__PURE__ */ jsxs18(
2800
3207
  "button",
2801
3208
  {
2802
3209
  ref,
@@ -2815,7 +3222,7 @@ var SelectTrigger = forwardRef10(
2815
3222
  ...props,
2816
3223
  children: [
2817
3224
  props.children,
2818
- /* @__PURE__ */ jsx22(
3225
+ /* @__PURE__ */ jsx23(
2819
3226
  CaretDown,
2820
3227
  {
2821
3228
  className: `h-[1em] w-[1em] opacity-50 transition-transform ${open ? "rotate-180" : ""}`
@@ -2840,7 +3247,7 @@ var SelectContent = forwardRef10(
2840
3247
  const open = useStore2(store, (s) => s.open);
2841
3248
  if (!open) return null;
2842
3249
  const getPositionClasses = () => `w-full min-w-full absolute ${SIDE_CLASSES2[side]} ${ALIGN_CLASSES2[align]}`;
2843
- return /* @__PURE__ */ jsx22(
3250
+ return /* @__PURE__ */ jsx23(
2844
3251
  "div",
2845
3252
  {
2846
3253
  role: "menu",
@@ -2863,8 +3270,12 @@ var SelectItem = forwardRef10(
2863
3270
  ...props
2864
3271
  }, ref) => {
2865
3272
  const store = useSelectStore(externalStore);
2866
- const selectedValue = useStore2(store, (s) => s.value);
2867
- const { setValue, setSelectedLabel, setOpen } = store.getState();
3273
+ const {
3274
+ value: selectedValue,
3275
+ setValue,
3276
+ setOpen,
3277
+ setSelectedLabel
3278
+ } = useStore2(store, (s) => s);
2868
3279
  const handleClick = (e) => {
2869
3280
  const labelNode = getLabelAsNode(children);
2870
3281
  if (!disabled) {
@@ -2874,7 +3285,7 @@ var SelectItem = forwardRef10(
2874
3285
  }
2875
3286
  props.onClick?.(e);
2876
3287
  };
2877
- return /* @__PURE__ */ jsxs17(
3288
+ return /* @__PURE__ */ jsxs18(
2878
3289
  "div",
2879
3290
  {
2880
3291
  role: "menuitem",
@@ -2894,7 +3305,7 @@ var SelectItem = forwardRef10(
2894
3305
  tabIndex: disabled ? -1 : 0,
2895
3306
  ...props,
2896
3307
  children: [
2897
- /* @__PURE__ */ jsx22("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ jsx22(Check3, { className: "" }) }),
3308
+ /* @__PURE__ */ jsx23("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ jsx23(Check3, { className: "" }) }),
2898
3309
  children
2899
3310
  ]
2900
3311
  }
@@ -2907,7 +3318,7 @@ var Select_default = Select;
2907
3318
  // src/components/Menu/Menu.tsx
2908
3319
  import { create as create4, useStore as useStore3 } from "zustand";
2909
3320
  import {
2910
- useEffect as useEffect4,
3321
+ useEffect as useEffect5,
2911
3322
  useRef as useRef4,
2912
3323
  forwardRef as forwardRef11,
2913
3324
  isValidElement as isValidElement3,
@@ -2916,7 +3327,7 @@ import {
2916
3327
  useState as useState7
2917
3328
  } from "react";
2918
3329
  import { CaretLeft, CaretRight } from "phosphor-react";
2919
- import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
3330
+ import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
2920
3331
  var createMenuStore = () => create4((set) => ({
2921
3332
  value: "",
2922
3333
  setValue: (value) => set({ value })
@@ -2944,15 +3355,15 @@ var Menu = forwardRef11(
2944
3355
  storeRef.current ??= createMenuStore();
2945
3356
  const store = storeRef.current;
2946
3357
  const { setValue, value } = useStore3(store, (s) => s);
2947
- useEffect4(() => {
3358
+ useEffect5(() => {
2948
3359
  setValue(propValue ?? defaultValue);
2949
3360
  }, [defaultValue, propValue, setValue]);
2950
- useEffect4(() => {
3361
+ useEffect5(() => {
2951
3362
  onValueChange?.(value);
2952
3363
  }, [value, onValueChange]);
2953
3364
  const baseClasses = "w-full flex flex-row items-center gap-2 py-2 px-6";
2954
3365
  const variantClasses = VARIANT_CLASSES5[variant];
2955
- return /* @__PURE__ */ jsx23(
3366
+ return /* @__PURE__ */ jsx24(
2956
3367
  "ul",
2957
3368
  {
2958
3369
  ref,
@@ -2997,7 +3408,7 @@ var MenuItem = forwardRef11(
2997
3408
  ...props
2998
3409
  };
2999
3410
  const variants = {
3000
- menu: /* @__PURE__ */ jsx23(
3411
+ menu: /* @__PURE__ */ jsx24(
3001
3412
  "li",
3002
3413
  {
3003
3414
  "data-variant": "menu",
@@ -3012,7 +3423,7 @@ var MenuItem = forwardRef11(
3012
3423
  children
3013
3424
  }
3014
3425
  ),
3015
- menu2: /* @__PURE__ */ jsx23(
3426
+ menu2: /* @__PURE__ */ jsx24(
3016
3427
  "li",
3017
3428
  {
3018
3429
  "data-variant": "menu2",
@@ -3024,7 +3435,7 @@ var MenuItem = forwardRef11(
3024
3435
  children
3025
3436
  }
3026
3437
  ),
3027
- breadcrumb: /* @__PURE__ */ jsx23(
3438
+ breadcrumb: /* @__PURE__ */ jsx24(
3028
3439
  "li",
3029
3440
  {
3030
3441
  "data-variant": "breadcrumb",
@@ -3035,7 +3446,7 @@ var MenuItem = forwardRef11(
3035
3446
  ${className ?? ""}
3036
3447
  `,
3037
3448
  ...commonProps,
3038
- children: /* @__PURE__ */ jsx23(
3449
+ children: /* @__PURE__ */ jsx24(
3039
3450
  "span",
3040
3451
  {
3041
3452
  className: `
@@ -3053,14 +3464,14 @@ var MenuItem = forwardRef11(
3053
3464
  );
3054
3465
  MenuItem.displayName = "MenuItem";
3055
3466
  var MenuSeparator = forwardRef11(
3056
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx23(
3467
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx24(
3057
3468
  "li",
3058
3469
  {
3059
3470
  ref,
3060
3471
  "aria-hidden": "true",
3061
3472
  className: `[&>svg]:w-4 [&>svg]:h-4 text-text-600 ${className ?? ""}`,
3062
3473
  ...props,
3063
- children: children ?? /* @__PURE__ */ jsx23(CaretRight, {})
3474
+ children: children ?? /* @__PURE__ */ jsx24(CaretRight, {})
3064
3475
  }
3065
3476
  )
3066
3477
  );
@@ -3095,6 +3506,7 @@ export {
3095
3506
  MenuItem,
3096
3507
  MenuLabel,
3097
3508
  MenuSeparator,
3509
+ Modal_default as Modal,
3098
3510
  NavButton_default as NavButton,
3099
3511
  ProfileMenuFooter,
3100
3512
  ProfileMenuHeader,