@exem-ui/react 0.3.4-next.20261015085356 → 0.3.4-next.20261022010408

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
@@ -1,5 +1,5 @@
1
- import { overlayListVariants, commonInputVariants, textFieldVariants, ScrollArea, ConditionalTooltip } from './chunk-L24IAWPF.mjs';
2
- export { ColorPalette, ColorPaletteColors, Combobox, ComboboxContent, ComboboxDescription, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSearch, ComboboxTrigger, ComboboxValue, DEFAULT_COLOR, ScrollArea, ScrollBar, Segment, Select, Tabs, Tooltip, colorPaletteColorClasses, getColorPaletteColor, isInPalette } from './chunk-L24IAWPF.mjs';
1
+ import { overlayListVariants, commonInputVariants, textFieldVariants, ScrollArea, ConditionalTooltip } from './chunk-RXQE5QHI.mjs';
2
+ export { ColorPalette, ColorPaletteColors, Combobox, ComboboxContent, ComboboxDescription, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSearch, ComboboxTrigger, ComboboxValue, DEFAULT_COLOR, ScrollArea, ScrollBar, Segment, Select, Tabs, Tooltip, colorPaletteColorClasses, getColorPaletteColor, isInPalette } from './chunk-RXQE5QHI.mjs';
3
3
  import { X, MoreHorizontal, iconSizes, Minus, Check, Person, Loading, Warning, Info, Error as Error$1, ChevronLeft, ChevronRight } from './chunk-HCGCMPIB.mjs';
4
4
  import { cva, cn } from '@exem-ui/core/utils';
5
5
  import * as React from 'react';
@@ -13,7 +13,6 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
13
13
  import { DayPicker } from 'react-day-picker';
14
14
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
15
15
  import { Dialog } from '@base-ui/react/dialog';
16
- import * as DialogPrimitive2 from '@radix-ui/react-dialog';
17
16
  import { Resizable } from 're-resizable';
18
17
  import { Progress as Progress$1 } from '@base-ui/react/progress';
19
18
  import { toast as toast$1, Toaster as Toaster$1 } from 'sonner';
@@ -466,6 +465,7 @@ var buttonVariants = cva(
466
465
  },
467
466
  variants: {
468
467
  size: {
468
+ "2xsmall": "h-5 gap-0 px-1 text-caption font-medium",
469
469
  xsmall: "h-6 gap-0 px-1 text-body-3 font-medium",
470
470
  small: "h-7 gap-0.5 px-1.5 text-body-2 font-medium",
471
471
  medium: "h-8 gap-0.5 px-2 text-body-2 font-medium",
@@ -476,6 +476,7 @@ var buttonVariants = cva(
476
476
  }
477
477
  );
478
478
  var iconSizeMap = {
479
+ "2xsmall": iconSizes.xs,
479
480
  xsmall: iconSizes.sm,
480
481
  small: iconSizes.sm,
481
482
  medium: iconSizes.sm,
@@ -519,6 +520,7 @@ function Button({
519
520
  );
520
521
  }
521
522
  var iconButtonSizeClasses = {
523
+ "2xsmall": "size-5",
522
524
  xsmall: "size-6",
523
525
  small: "size-7",
524
526
  medium: "size-8",
@@ -1614,55 +1616,16 @@ var Modal = Object.assign(ModalRoot, {
1614
1616
  Description: ModalDescription
1615
1617
  });
1616
1618
 
1617
- // src/hooks/useOverlayDismissGuard.ts
1618
- var isBaseUiPopupOpen = () => Boolean(
1619
- document.querySelector('[data-base-ui-portal] [data-slot="combobox-content"][data-open]')
1620
- );
1621
- var isTargetInsideBaseUiPopup = (target) => target instanceof Element && Boolean(target.closest("[data-base-ui-portal]"));
1622
- var shouldPreventDismissForSelect = (target) => {
1623
- const isSelectOpen = Boolean(
1624
- document.querySelector('[data-radix-select-content][data-state="open"]')
1625
- );
1626
- if (isSelectOpen) {
1627
- return true;
1628
- }
1629
- if (!(target instanceof Element)) {
1630
- return false;
1631
- }
1632
- return Boolean(
1633
- target.closest("[data-radix-select-content]") || target.closest("[data-radix-select-viewport]")
1634
- );
1635
- };
1636
- function useOverlayDismissGuard({
1637
- onInteractOutside,
1638
- onEscapeKeyDown
1639
- }) {
1640
- const handleInteractOutside = (event) => {
1641
- if (shouldPreventDismissForSelect(event.target) || isTargetInsideBaseUiPopup(event.target)) {
1642
- event.preventDefault();
1643
- }
1644
- onInteractOutside?.(event);
1645
- };
1646
- const handleEscapeKeyDown = (event) => {
1647
- if (isBaseUiPopupOpen()) {
1648
- event.preventDefault();
1649
- }
1650
- onEscapeKeyDown?.(event);
1651
- };
1652
- return { onEscapeKeyDown: handleEscapeKeyDown, onInteractOutside: handleInteractOutside };
1653
- }
1654
-
1655
1619
  // src/sheet/sheetResize.ts
1656
1620
  var SHEET_EDGE_GAP = "[--sheet-edge-gap:40px]";
1657
- var getAxis = (side) => side === "left" || side === "right" ? "horizontal" : "vertical";
1658
- var getDefaults = (axis) => axis === "horizontal" ? { minSize: 400, maxSize: "80%", defaultSize: 800 } : { minSize: 300, maxSize: "80%", defaultSize: 600 };
1659
- var resolveMaxSize = (maxSize, axis) => {
1621
+ var SHEET_SIZE_DEFAULTS = { minSize: 400, maxSize: "80%", defaultSize: 800 };
1622
+ var resolveMaxSize = (maxSize) => {
1660
1623
  if (typeof maxSize === "number") {
1661
1624
  return maxSize;
1662
1625
  }
1663
1626
  const value = Number.parseFloat(maxSize);
1664
1627
  if (maxSize.trim().endsWith("%") && Number.isFinite(value)) {
1665
- return `${value}${axis === "horizontal" ? "vw" : "vh"}`;
1628
+ return `${value}vw`;
1666
1629
  }
1667
1630
  return maxSize;
1668
1631
  };
@@ -1693,67 +1656,49 @@ var writeStoredSize = (key, size) => {
1693
1656
  };
1694
1657
  var ENABLE_BY_SIDE = {
1695
1658
  right: { left: true },
1696
- left: { right: true },
1697
- top: { bottom: true },
1698
- bottom: { top: true }
1659
+ left: { right: true }
1699
1660
  };
1700
1661
  var HANDLE_EDGE_BY_SIDE = {
1701
1662
  right: "left",
1702
- left: "right",
1703
- top: "bottom",
1704
- bottom: "top"
1663
+ left: "right"
1705
1664
  };
1706
- var SheetResizeHandle = ({ axis, active }) => /* @__PURE__ */ jsx(
1707
- "div",
1665
+ var SheetResizeHandle = ({ active }) => /* @__PURE__ */ jsx("div", { className: "group/sheet-handle flex h-full w-full cursor-col-resize items-center justify-center", children: /* @__PURE__ */ jsx(
1666
+ "span",
1708
1667
  {
1709
1668
  className: cn(
1710
- "group/sheet-handle flex h-full w-full items-center justify-center",
1711
- axis === "horizontal" ? "cursor-col-resize" : "cursor-row-resize"
1712
- ),
1713
- children: /* @__PURE__ */ jsx(
1714
- "span",
1715
- {
1716
- className: cn(
1717
- "transition-colors group-hover/sheet-handle:bg-border-accent",
1718
- active ? "bg-border-accent" : "bg-border-primary",
1719
- axis === "horizontal" ? "h-full w-px" : "h-px w-full"
1720
- )
1721
- }
1669
+ "transition-colors group-hover/sheet-handle:bg-border-accent",
1670
+ active ? "bg-border-accent" : "bg-border-primary",
1671
+ "h-full w-px"
1722
1672
  )
1723
1673
  }
1724
- );
1674
+ ) });
1725
1675
  var SheetResizableBox = ({ side, options, children }) => {
1726
1676
  const { minSize, maxSize, defaultSize, storageKey, onResize } = options;
1727
- const axis = getAxis(side);
1728
- const isHorizontal = axis === "horizontal";
1729
- const defaults = getDefaults(axis);
1730
- const resolvedMin = minSize ?? defaults.minSize;
1731
- const resolvedMax = resolveMaxSize(maxSize ?? defaults.maxSize, axis);
1677
+ const resolvedMin = minSize ?? SHEET_SIZE_DEFAULTS.minSize;
1678
+ const resolvedMax = resolveMaxSize(maxSize ?? SHEET_SIZE_DEFAULTS.maxSize);
1732
1679
  const [initialSize] = useState(() => {
1733
1680
  const stored = storageKey ? readStoredSize(storageKey) : null;
1734
- return Math.max(stored ?? defaultSize ?? defaults.defaultSize, resolvedMin);
1681
+ return Math.max(stored ?? defaultSize ?? SHEET_SIZE_DEFAULTS.defaultSize, resolvedMin);
1735
1682
  });
1736
1683
  const [resizing, setResizing] = useState(false);
1737
1684
  const handleResizeStop = (_event, _direction, refElement) => {
1738
1685
  setResizing(false);
1739
- const next = isHorizontal ? refElement.offsetWidth : refElement.offsetHeight;
1686
+ const next = refElement.offsetWidth;
1740
1687
  if (storageKey) {
1741
1688
  writeStoredSize(storageKey, next);
1742
1689
  }
1743
1690
  onResize?.(next);
1744
1691
  };
1745
1692
  const handleComponent = {
1746
- [HANDLE_EDGE_BY_SIDE[side]]: /* @__PURE__ */ jsx(SheetResizeHandle, { axis, active: resizing })
1693
+ [HANDLE_EDGE_BY_SIDE[side]]: /* @__PURE__ */ jsx(SheetResizeHandle, { active: resizing })
1747
1694
  };
1748
1695
  return /* @__PURE__ */ jsx(
1749
1696
  Resizable,
1750
1697
  {
1751
1698
  enable: ENABLE_BY_SIDE[side],
1752
- defaultSize: isHorizontal ? { width: initialSize, height: "100%" } : { width: "100%", height: initialSize },
1753
- minWidth: isHorizontal ? resolvedMin : void 0,
1754
- maxWidth: isHorizontal ? resolvedMax : void 0,
1755
- minHeight: isHorizontal ? void 0 : resolvedMin,
1756
- maxHeight: isHorizontal ? void 0 : resolvedMax,
1699
+ defaultSize: { width: initialSize, height: "100%" },
1700
+ minWidth: resolvedMin,
1701
+ maxWidth: resolvedMax,
1757
1702
  onResizeStart: () => setResizing(true),
1758
1703
  onResizeStop: handleResizeStop,
1759
1704
  handleComponent,
@@ -1762,135 +1707,132 @@ var SheetResizableBox = ({ side, options, children }) => {
1762
1707
  }
1763
1708
  );
1764
1709
  };
1765
- var SHEET_CONTENT_BASE = "fixed z-50 data-[state=open]:duration-300 data-[state=closed]:duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
1710
+ var SHEET_TRANSITION = "transition-[transform,translate,opacity] duration-300 ease-out data-[ending-style]:duration-200";
1766
1711
  var SHEET_CONTENT_BOX = "flex flex-col border-border-primary bg-background-primary shadow-strong";
1767
- var SHEET_SIDE_CLASSES = {
1768
- right: "inset-y-0 right-0 h-full w-[800px] max-w-[calc(100vw-var(--sheet-edge-gap))] border-l data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right",
1769
- left: "inset-y-0 left-0 h-full w-[800px] max-w-[calc(100vw-var(--sheet-edge-gap))] border-r data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left",
1770
- top: "inset-x-0 top-0 w-full h-auto max-h-[calc(100vh-var(--sheet-edge-gap))] border-b data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top",
1771
- bottom: "inset-x-0 bottom-0 w-full h-auto max-h-[calc(100vh-var(--sheet-edge-gap))] border-t data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom"
1712
+ var SHEET_ANCHOR = {
1713
+ right: "inset-y-0 right-0 max-w-[calc(100vw-var(--sheet-edge-gap))]",
1714
+ left: "inset-y-0 left-0 max-w-[calc(100vw-var(--sheet-edge-gap))]"
1772
1715
  };
1773
- var SHEET_RESIZE_SIDE_CLASSES = {
1774
- right: "inset-y-0 right-0 max-w-[calc(100vw-var(--sheet-edge-gap))] data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right",
1775
- left: "inset-y-0 left-0 max-w-[calc(100vw-var(--sheet-edge-gap))] data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left",
1776
- top: "inset-x-0 top-0 max-h-[calc(100vh-var(--sheet-edge-gap))] data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top",
1777
- bottom: "inset-x-0 bottom-0 max-h-[calc(100vh-var(--sheet-edge-gap))] data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom"
1716
+ var SHEET_SLIDE = {
1717
+ right: "data-[starting-style]:translate-x-full data-[ending-style]:translate-x-full",
1718
+ left: "data-[starting-style]:-translate-x-full data-[ending-style]:-translate-x-full"
1778
1719
  };
1779
- var SheetContext = createContext({ side: "right" });
1780
- var SheetRoot = (props) => /* @__PURE__ */ jsx(DialogPrimitive2.Root, { ...props });
1781
- var Sheet = SheetRoot;
1782
- Sheet.Trigger = forwardRef(
1783
- (props, ref) => /* @__PURE__ */ jsx(DialogPrimitive2.Trigger, { ref, ...props })
1784
- );
1785
- Sheet.Portal = (props) => /* @__PURE__ */ jsx(DialogPrimitive2.Portal, { ...props });
1786
- Sheet.Close = forwardRef(
1787
- (props, ref) => /* @__PURE__ */ jsx(DialogPrimitive2.Close, { ref, ...props })
1788
- );
1789
- Sheet.Overlay = forwardRef(
1790
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1791
- DialogPrimitive2.Overlay,
1720
+ var SHEET_BOX_SIZE = {
1721
+ right: "h-full w-[800px] border-l",
1722
+ left: "h-full w-[800px] border-r"
1723
+ };
1724
+ var SheetModalContext = createContext(void 0);
1725
+ function SheetRoot(props) {
1726
+ return /* @__PURE__ */ jsx(SheetModalContext.Provider, { value: props.modal, children: /* @__PURE__ */ jsx(Dialog.Root, { ...props }) });
1727
+ }
1728
+ function SheetTrigger(props) {
1729
+ return /* @__PURE__ */ jsx(Dialog.Trigger, { "data-slot": "sheet-trigger", ...props });
1730
+ }
1731
+ function SheetPortal(props) {
1732
+ return /* @__PURE__ */ jsx(Dialog.Portal, { ...props });
1733
+ }
1734
+ function SheetOverlay({ className, ...props }) {
1735
+ return /* @__PURE__ */ jsx(
1736
+ Dialog.Backdrop,
1792
1737
  {
1793
- ref,
1738
+ "data-slot": "sheet-overlay",
1794
1739
  className: cn(
1795
- "fixed inset-0 z-50 bg-component-dim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1740
+ "fixed inset-0 z-50 bg-component-dim",
1741
+ "transition-opacity duration-300 data-[starting-style]:opacity-0 data-[ending-style]:opacity-0",
1796
1742
  className
1797
1743
  ),
1798
1744
  ...props
1799
1745
  }
1800
- )
1801
- );
1802
- Sheet.Content = forwardRef(
1803
- ({
1804
- className,
1805
- children,
1806
- side = "right",
1807
- resizable = false,
1808
- onInteractOutside,
1809
- onEscapeKeyDown,
1810
- ...props
1811
- }, ref) => {
1812
- const resizeOptions = typeof resizable === "object" ? resizable : { use: resizable };
1813
- const isResizable = resizeOptions.use ?? true;
1814
- const dismissGuard = useOverlayDismissGuard({ onEscapeKeyDown, onInteractOutside });
1815
- return /* @__PURE__ */ jsx(SheetContext.Provider, { value: { side }, children: /* @__PURE__ */ jsxs(Sheet.Portal, { children: [
1816
- /* @__PURE__ */ jsx(Sheet.Overlay, {}),
1817
- /* @__PURE__ */ jsx(
1818
- DialogPrimitive2.Content,
1819
- {
1820
- ref,
1821
- className: cn(
1822
- SHEET_CONTENT_BASE,
1823
- SHEET_EDGE_GAP,
1824
- isResizable ? SHEET_RESIZE_SIDE_CLASSES[side] : cn(SHEET_CONTENT_BOX, SHEET_SIDE_CLASSES[side]),
1825
- className
1826
- ),
1827
- ...props,
1828
- ...dismissGuard,
1829
- children: isResizable ? /* @__PURE__ */ jsx(SheetResizableBox, { side, options: resizeOptions, children }) : children
1830
- }
1831
- )
1832
- ] }) });
1833
- }
1834
- );
1835
- Sheet.Header = forwardRef(
1836
- ({ className, line = true, rightSlot, children, ...props }, ref) => {
1837
- const rightElement = rightSlot === void 0 ? /* @__PURE__ */ jsx(
1838
- DialogPrimitive2.Close,
1839
- {
1840
- className: cn(
1841
- "flex shrink-0 items-center justify-center size-8 rounded-medium text-icon-secondary transition-colors hover:bg-elevation-elevation-2 focus:outline-none disabled:pointer-events-none"
1842
- ),
1843
- children: /* @__PURE__ */ jsx(X, { type: "regular", size: 20 })
1844
- }
1845
- ) : rightSlot;
1846
- return /* @__PURE__ */ jsxs(
1847
- "div",
1746
+ );
1747
+ }
1748
+ function SheetContent({
1749
+ className,
1750
+ children,
1751
+ side: sideProp = "right",
1752
+ resizable = false,
1753
+ ...props
1754
+ }) {
1755
+ const side = sideProp === "left" ? "left" : "right";
1756
+ const modal = useContext(SheetModalContext);
1757
+ const resizeOptions = typeof resizable === "object" ? resizable : { use: resizable };
1758
+ const isResizable = resizeOptions.use ?? true;
1759
+ const showOverlay = modal !== false && modal !== "trap-focus";
1760
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [
1761
+ showOverlay && /* @__PURE__ */ jsx(SheetOverlay, {}),
1762
+ /* @__PURE__ */ jsx(
1763
+ Dialog.Popup,
1848
1764
  {
1849
- ref,
1765
+ "data-slot": "sheet-content",
1850
1766
  className: cn(
1851
- "flex shrink-0 flex-row items-center gap-2 h-12 pl-4 pr-2",
1852
- line && "border-b border-border-primary",
1767
+ "fixed z-50",
1768
+ SHEET_EDGE_GAP,
1769
+ SHEET_TRANSITION,
1770
+ SHEET_ANCHOR[side],
1771
+ SHEET_SLIDE[side],
1772
+ !isResizable && cn(SHEET_CONTENT_BOX, SHEET_BOX_SIZE[side]),
1853
1773
  className
1854
1774
  ),
1855
1775
  ...props,
1856
- children: [
1857
- /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-row items-center gap-1", children }),
1858
- rightElement ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-row items-center", children: rightElement }) : null
1859
- ]
1860
- }
1861
- );
1862
- }
1863
- );
1864
- Sheet.Body = forwardRef(
1865
- ({ className, children, ...props }, ref) => {
1866
- const { side } = useContext(SheetContext);
1867
- const disableHorizontalScroll = side === "left" || side === "right";
1868
- return /* @__PURE__ */ jsx(
1869
- "div",
1870
- {
1871
- ref,
1872
- className: cn(
1873
- "flex-1 flex flex-col min-h-0 h-full",
1874
- "[&_[data-slot=scroll-area-viewport]>div]:h-full"
1875
- ),
1876
- ...props,
1877
- children: /* @__PURE__ */ jsx(
1878
- ScrollArea,
1879
- {
1880
- className: "h-full flex flex-col",
1881
- disableHorizontalScroll,
1882
- children: /* @__PURE__ */ jsx("div", { className: cn("p-4", className), children })
1883
- }
1884
- )
1776
+ children: isResizable ? /* @__PURE__ */ jsx(SheetResizableBox, { side, options: resizeOptions, children }) : children
1885
1777
  }
1886
- );
1887
- }
1888
- );
1889
- Sheet.Footer = forwardRef(
1890
- ({ className, line = true, ...props }, ref) => /* @__PURE__ */ jsx(
1778
+ )
1779
+ ] });
1780
+ }
1781
+ function SheetHeader({ className, line = true, rightSlot, children, ...props }) {
1782
+ const rightElement = rightSlot === void 0 ? /* @__PURE__ */ jsx(
1783
+ Dialog.Close,
1784
+ {
1785
+ "data-slot": "sheet-close-icon",
1786
+ className: cn(
1787
+ "flex shrink-0 items-center justify-center size-8 rounded-medium text-icon-secondary transition-colors hover:bg-elevation-elevation-2 focus:outline-none disabled:pointer-events-none"
1788
+ ),
1789
+ children: /* @__PURE__ */ jsx(X, { type: "regular", size: 20 })
1790
+ }
1791
+ ) : rightSlot;
1792
+ return /* @__PURE__ */ jsxs(
1891
1793
  "div",
1892
1794
  {
1893
- ref,
1795
+ "data-slot": "sheet-header",
1796
+ className: cn(
1797
+ "flex shrink-0 flex-row items-center gap-2 h-12 pl-4 pr-2",
1798
+ line && "border-b border-border-primary",
1799
+ className
1800
+ ),
1801
+ ...props,
1802
+ children: [
1803
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-row items-center gap-1", children }),
1804
+ rightElement ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-row items-center", children: rightElement }) : null
1805
+ ]
1806
+ }
1807
+ );
1808
+ }
1809
+ function SheetBody({ className, children, scroll = true, ...props }) {
1810
+ const content = /* @__PURE__ */ jsx("div", { className: cn("p-4", className), children });
1811
+ return /* @__PURE__ */ jsx(
1812
+ "div",
1813
+ {
1814
+ "data-slot": "sheet-body",
1815
+ className: cn(
1816
+ "flex-1 flex flex-col min-h-0",
1817
+ scroll && "h-full [&_[data-slot=scroll-area-viewport]>div]:h-full"
1818
+ ),
1819
+ ...props,
1820
+ children: scroll ? /* @__PURE__ */ jsx(
1821
+ ScrollArea,
1822
+ {
1823
+ className: "h-full flex flex-col",
1824
+ disableHorizontalScroll: true,
1825
+ children: content
1826
+ }
1827
+ ) : content
1828
+ }
1829
+ );
1830
+ }
1831
+ function SheetFooter({ className, line = true, ...props }) {
1832
+ return /* @__PURE__ */ jsx(
1833
+ "div",
1834
+ {
1835
+ "data-slot": "sheet-footer",
1894
1836
  className: cn(
1895
1837
  "flex flex-row items-center justify-between h-14 gap-3 px-4 py-3",
1896
1838
  line && "border-t border-border-primary",
@@ -1898,13 +1840,19 @@ Sheet.Footer = forwardRef(
1898
1840
  ),
1899
1841
  ...props
1900
1842
  }
1901
- )
1902
- );
1903
- Sheet.FooterDescription = forwardRef(
1904
- ({ className, error = false, icon, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1843
+ );
1844
+ }
1845
+ function SheetFooterDescription({
1846
+ className,
1847
+ error = false,
1848
+ icon,
1849
+ children,
1850
+ ...props
1851
+ }) {
1852
+ return /* @__PURE__ */ jsxs(
1905
1853
  "div",
1906
1854
  {
1907
- ref,
1855
+ "data-slot": "sheet-footer-description",
1908
1856
  className: cn(
1909
1857
  "flex flex-row items-center gap-1 text-body-3",
1910
1858
  error ? "text-text-critical" : "text-text-tertiary",
@@ -1916,43 +1864,71 @@ Sheet.FooterDescription = forwardRef(
1916
1864
  children
1917
1865
  ]
1918
1866
  }
1919
- )
1920
- );
1921
- Sheet.Actions = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("ml-auto flex flex-row items-center gap-2", className), ...props }));
1922
- Sheet.Title = forwardRef(
1923
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1924
- DialogPrimitive2.Title,
1867
+ );
1868
+ }
1869
+ function SheetActions({ className, ...props }) {
1870
+ return /* @__PURE__ */ jsx(
1871
+ "div",
1925
1872
  {
1926
- ref,
1873
+ "data-slot": "sheet-actions",
1874
+ className: cn("ml-auto flex flex-row items-center gap-2", className),
1875
+ ...props
1876
+ }
1877
+ );
1878
+ }
1879
+ function SheetClose(props) {
1880
+ return /* @__PURE__ */ jsx(Dialog.Close, { "data-slot": "sheet-close", ...props });
1881
+ }
1882
+ function SheetTitle({ className, ...props }) {
1883
+ return /* @__PURE__ */ jsx(
1884
+ Dialog.Title,
1885
+ {
1886
+ "data-slot": "sheet-title",
1927
1887
  className: cn(
1928
1888
  "text-body-1 font-semibold leading-none tracking-tight text-text-primary",
1929
1889
  className
1930
1890
  ),
1931
1891
  ...props
1932
1892
  }
1933
- )
1934
- );
1935
- Sheet.Description = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1936
- DialogPrimitive2.Description,
1937
- {
1938
- ref,
1939
- className: cn("text-body-2 text-text-tertiary", className),
1940
- ...props
1941
- }
1942
- ));
1943
- Sheet.displayName = "Sheet";
1944
- Sheet.Trigger.displayName = "Sheet.Trigger";
1945
- Sheet.Portal.displayName = "Sheet.Portal";
1946
- Sheet.Close.displayName = "Sheet.Close";
1947
- Sheet.Overlay.displayName = "Sheet.Overlay";
1948
- Sheet.Content.displayName = "Sheet.Content";
1949
- Sheet.Header.displayName = "Sheet.Header";
1950
- Sheet.Body.displayName = "Sheet.Body";
1951
- Sheet.Footer.displayName = "Sheet.Footer";
1952
- Sheet.FooterDescription.displayName = "Sheet.FooterDescription";
1953
- Sheet.Actions.displayName = "Sheet.Actions";
1954
- Sheet.Title.displayName = "Sheet.Title";
1955
- Sheet.Description.displayName = "Sheet.Description";
1893
+ );
1894
+ }
1895
+ function SheetDescription({ className, ...props }) {
1896
+ return /* @__PURE__ */ jsx(
1897
+ Dialog.Description,
1898
+ {
1899
+ "data-slot": "sheet-description",
1900
+ className: cn("text-body-2 text-text-tertiary", className),
1901
+ ...props
1902
+ }
1903
+ );
1904
+ }
1905
+ SheetRoot.displayName = "Sheet";
1906
+ SheetTrigger.displayName = "Sheet.Trigger";
1907
+ SheetPortal.displayName = "Sheet.Portal";
1908
+ SheetClose.displayName = "Sheet.Close";
1909
+ SheetOverlay.displayName = "Sheet.Overlay";
1910
+ SheetContent.displayName = "Sheet.Content";
1911
+ SheetHeader.displayName = "Sheet.Header";
1912
+ SheetBody.displayName = "Sheet.Body";
1913
+ SheetFooter.displayName = "Sheet.Footer";
1914
+ SheetFooterDescription.displayName = "Sheet.FooterDescription";
1915
+ SheetActions.displayName = "Sheet.Actions";
1916
+ SheetTitle.displayName = "Sheet.Title";
1917
+ SheetDescription.displayName = "Sheet.Description";
1918
+ var Sheet = Object.assign(SheetRoot, {
1919
+ Trigger: SheetTrigger,
1920
+ Portal: SheetPortal,
1921
+ Close: SheetClose,
1922
+ Overlay: SheetOverlay,
1923
+ Content: SheetContent,
1924
+ Header: SheetHeader,
1925
+ Body: SheetBody,
1926
+ Footer: SheetFooter,
1927
+ FooterDescription: SheetFooterDescription,
1928
+ Actions: SheetActions,
1929
+ Title: SheetTitle,
1930
+ Description: SheetDescription
1931
+ });
1956
1932
  var MESSAGE_BOX_TRANSITION = "transition-[transform,scale,opacity] duration-200 data-[starting-style]:opacity-0 data-[ending-style]:opacity-0";
1957
1933
  var MessageBoxContext = createContext({ variant: "default" });
1958
1934
  function MessageBoxRoot(props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exem-ui/react",
3
- "version": "0.3.4-next.20261015085356",
3
+ "version": "0.3.4-next.20261022010408",
4
4
  "description": "Exem Design System - React Components",
5
5
  "author": "Exem Design Team",
6
6
  "license": "Apache-2.0",
@@ -79,7 +79,6 @@
79
79
  "@dnd-kit/sortable": "^10.0.0",
80
80
  "@dnd-kit/utilities": "^3.2.2",
81
81
  "@radix-ui/react-checkbox": "^1.2.3",
82
- "@radix-ui/react-dialog": "^1.1.15",
83
82
  "@radix-ui/react-dropdown-menu": "^2.1.16",
84
83
  "@radix-ui/react-radio-group": "^1.2.3",
85
84
  "@radix-ui/react-scroll-area": "^1.2.10",
@@ -99,7 +98,7 @@
99
98
  "tailwind-merge": "^3.3.1",
100
99
  "tailwind-scrollbar-hide": "^4.0.0",
101
100
  "tiny-invariant": "^1.3.3",
102
- "@exem-ui/core": "0.3.3-next.20261015085356"
101
+ "@exem-ui/core": "0.3.3-next.20261022010408"
103
102
  },
104
103
  "devDependencies": {
105
104
  "@eslint/js": "^9.15.0",
@@ -135,7 +134,7 @@
135
134
  "tsup": "^8.5.0",
136
135
  "typescript": "^5.8.2",
137
136
  "typescript-eslint": "^8.16.0",
138
- "@exem-ui/tailwindcss3": "0.3.2-next.20261015085356"
137
+ "@exem-ui/tailwindcss3": "0.3.2-next.20261022010408"
139
138
  },
140
139
  "scripts": {
141
140
  "generate": "node scripts/generate-icons.js",