@doscientos/ui 0.1.32 → 0.1.33

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.js CHANGED
@@ -1733,22 +1733,209 @@ function CommandItem({ className, ...props }) {
1733
1733
  );
1734
1734
  }
1735
1735
 
1736
- // src/ui/sheet/sheet.tsx
1736
+ // src/ui/confirm-dialog/confirm-dialog.tsx
1737
+ import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
1738
+ function ConfirmDialog({
1739
+ open,
1740
+ onOpenChange,
1741
+ title,
1742
+ description,
1743
+ confirmLabel = "Confirmar",
1744
+ cancelLabel = "Cancelar",
1745
+ destructive = false,
1746
+ pending = false,
1747
+ onConfirm
1748
+ }) {
1749
+ return /* @__PURE__ */ jsx17(
1750
+ AlertDialog,
1751
+ {
1752
+ open,
1753
+ onOpenChange: (nextOpen) => {
1754
+ if (!pending || nextOpen) onOpenChange(nextOpen);
1755
+ },
1756
+ children: /* @__PURE__ */ jsxs6(AlertDialogContent, { children: [
1757
+ /* @__PURE__ */ jsxs6(AlertDialogHeader, { children: [
1758
+ /* @__PURE__ */ jsx17(AlertDialogTitle, { children: title }),
1759
+ description ? /* @__PURE__ */ jsx17(AlertDialogDescription, { children: description }) : null
1760
+ ] }),
1761
+ /* @__PURE__ */ jsxs6(AlertDialogFooter, { children: [
1762
+ /* @__PURE__ */ jsx17(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
1763
+ /* @__PURE__ */ jsx17(
1764
+ Button,
1765
+ {
1766
+ variant: destructive ? "destructive" : "default",
1767
+ isDisabled: pending,
1768
+ onPress: onConfirm,
1769
+ children: confirmLabel
1770
+ }
1771
+ )
1772
+ ] })
1773
+ ] })
1774
+ }
1775
+ );
1776
+ }
1777
+
1778
+ // src/ui/copy-button/copy-button.tsx
1779
+ import { Check as Check2, Copy } from "lucide-react";
1780
+ import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
1781
+ function CopyButton({
1782
+ value,
1783
+ children,
1784
+ copiedLabel = "Copiado",
1785
+ resetMs,
1786
+ onCopied,
1787
+ onCopyError,
1788
+ ...props
1789
+ }) {
1790
+ const { copy, status } = useClipboard({ resetMs, onError: onCopyError });
1791
+ const copied = status === "copied";
1792
+ const label = copied ? copiedLabel : children ?? "Copiar";
1793
+ return /* @__PURE__ */ jsxs7(
1794
+ Button,
1795
+ {
1796
+ "aria-label": typeof label === "string" ? label : void 0,
1797
+ onPress: () => {
1798
+ void copy(value).then((wasCopied) => {
1799
+ if (wasCopied) onCopied?.(value);
1800
+ });
1801
+ },
1802
+ ...props,
1803
+ children: [
1804
+ copied ? /* @__PURE__ */ jsx18(Check2, { "aria-hidden": "true", className: "size-3.5" }) : /* @__PURE__ */ jsx18(Copy, { "aria-hidden": "true", className: "size-3.5" }),
1805
+ label
1806
+ ]
1807
+ }
1808
+ );
1809
+ }
1810
+
1811
+ // src/ui/danger-zone/danger-zone.tsx
1812
+ import { ChevronDown, ShieldAlert } from "lucide-react";
1813
+ import {
1814
+ Button as DisclosureButton,
1815
+ Disclosure,
1816
+ DisclosurePanel,
1817
+ Heading as Heading2
1818
+ } from "react-aria-components";
1819
+ import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
1820
+ function DangerZone({
1821
+ title = "Zona de peligro",
1822
+ description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
1823
+ defaultOpen = false,
1824
+ className,
1825
+ children
1826
+ }) {
1827
+ return /* @__PURE__ */ jsx19(Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ jsxs8(Card, { className: cn("border-destructive/30", className), children: [
1828
+ /* @__PURE__ */ jsx19(Heading2, { className: "flex", children: /* @__PURE__ */ jsxs8(
1829
+ DisclosureButton,
1830
+ {
1831
+ slot: "trigger",
1832
+ "data-slot": "danger-zone-trigger",
1833
+ className: "group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3",
1834
+ children: [
1835
+ /* @__PURE__ */ jsx19(ShieldAlert, { className: "text-destructive size-4 shrink-0" }),
1836
+ /* @__PURE__ */ jsxs8("span", { className: "flex flex-1 flex-col gap-0.5", children: [
1837
+ /* @__PURE__ */ jsx19("span", { className: "font-heading text-destructive text-base leading-snug font-medium", children: title }),
1838
+ /* @__PURE__ */ jsx19("span", { className: "text-muted-foreground text-xs", children: description })
1839
+ ] }),
1840
+ /* @__PURE__ */ jsx19(ChevronDown, { className: "text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180" })
1841
+ ]
1842
+ }
1843
+ ) }),
1844
+ /* @__PURE__ */ jsx19(DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ jsx19(CardContent, { children }) })
1845
+ ] }) });
1846
+ }
1847
+
1848
+ // src/ui/data-view-state/data-view-state.tsx
1849
+ import { jsx as jsx20 } from "react/jsx-runtime";
1850
+ function DataViewState({ className, ...props }) {
1851
+ return /* @__PURE__ */ jsx20(
1852
+ "section",
1853
+ {
1854
+ "data-slot": "data-view-state",
1855
+ className: cn(
1856
+ "flex min-h-40 flex-col items-center justify-center gap-3 rounded-xl border p-6 text-center",
1857
+ className
1858
+ ),
1859
+ ...props
1860
+ }
1861
+ );
1862
+ }
1863
+ function DataViewStateTitle({ children, className, ...props }) {
1864
+ return /* @__PURE__ */ jsx20("h2", { "data-slot": "data-view-state-title", className: cn("font-semibold", className), ...props, children });
1865
+ }
1866
+ function DataViewStateDescription({ className, ...props }) {
1867
+ return /* @__PURE__ */ jsx20(
1868
+ "p",
1869
+ {
1870
+ "data-slot": "data-view-state-description",
1871
+ className: cn("text-sm text-muted-foreground", className),
1872
+ ...props
1873
+ }
1874
+ );
1875
+ }
1876
+ function DataViewStateActions({ className, ...props }) {
1877
+ return /* @__PURE__ */ jsx20(
1878
+ "div",
1879
+ {
1880
+ "data-slot": "data-view-state-actions",
1881
+ className: cn("flex items-center gap-2", className),
1882
+ ...props
1883
+ }
1884
+ );
1885
+ }
1886
+
1887
+ // src/ui/description-list/description-list.tsx
1888
+ import { jsx as jsx21 } from "react/jsx-runtime";
1889
+ function DescriptionList({ className, ...props }) {
1890
+ return /* @__PURE__ */ jsx21(
1891
+ "dl",
1892
+ {
1893
+ "data-slot": "description-list",
1894
+ className: cn("grid gap-x-6 gap-y-4 sm:grid-cols-2", className),
1895
+ ...props
1896
+ }
1897
+ );
1898
+ }
1899
+ function DescriptionItem({ className, ...props }) {
1900
+ return /* @__PURE__ */ jsx21("div", { "data-slot": "description-item", className: cn("min-w-0", className), ...props });
1901
+ }
1902
+ function DescriptionTerm({ className, ...props }) {
1903
+ return /* @__PURE__ */ jsx21(
1904
+ "dt",
1905
+ {
1906
+ "data-slot": "description-term",
1907
+ className: cn("text-xs font-medium text-muted-foreground", className),
1908
+ ...props
1909
+ }
1910
+ );
1911
+ }
1912
+ function DescriptionDetails({ className, ...props }) {
1913
+ return /* @__PURE__ */ jsx21(
1914
+ "dd",
1915
+ {
1916
+ "data-slot": "description-details",
1917
+ className: cn("mt-1 wrap-break-word text-sm", className),
1918
+ ...props
1919
+ }
1920
+ );
1921
+ }
1922
+
1923
+ // src/ui/drawer/drawer.tsx
1737
1924
  import { XIcon as XIcon2 } from "lucide-react";
1738
1925
  import {
1739
1926
  Dialog as DrawerPrimitive,
1740
1927
  DialogTrigger as DrawerTriggerPrimitive,
1741
- Heading as Heading2,
1928
+ Heading as Heading3,
1742
1929
  ModalOverlay as ModalOverlayPrimitive,
1743
1930
  Modal as ModalPrimitive,
1744
1931
  Text as Text3
1745
1932
  } from "react-aria-components";
1746
- import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
1933
+ import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
1747
1934
  function DrawerTrigger({ ...props }) {
1748
- return /* @__PURE__ */ jsx17(DrawerTriggerPrimitive, { "data-slot": "drawer-trigger", ...props });
1935
+ return /* @__PURE__ */ jsx22(DrawerTriggerPrimitive, { "data-slot": "drawer-trigger", ...props });
1749
1936
  }
1750
1937
  function DrawerClose({ className, variant = "outline", size = "default", ...props }) {
1751
- return /* @__PURE__ */ jsx17(
1938
+ return /* @__PURE__ */ jsx22(
1752
1939
  Button,
1753
1940
  {
1754
1941
  slot: "close",
@@ -1765,7 +1952,7 @@ function DrawerOverlay({
1765
1952
  children,
1766
1953
  ...props
1767
1954
  }) {
1768
- return /* @__PURE__ */ jsx17(
1955
+ return /* @__PURE__ */ jsx22(
1769
1956
  ModalOverlayPrimitive,
1770
1957
  {
1771
1958
  "data-slot": "drawer-overlay",
@@ -1787,7 +1974,7 @@ function DrawerContent({
1787
1974
  showCloseButton = true,
1788
1975
  ...props
1789
1976
  }) {
1790
- return /* @__PURE__ */ jsx17(DrawerOverlay, { ...props, children: /* @__PURE__ */ jsx17(
1977
+ return /* @__PURE__ */ jsx22(DrawerOverlay, { ...props, children: /* @__PURE__ */ jsx22(
1791
1978
  ModalPrimitive,
1792
1979
  {
1793
1980
  "data-slot": "drawer-content",
@@ -1796,7 +1983,7 @@ function DrawerContent({
1796
1983
  "fixed z-50 flex max-h-svh flex-col gap-4 border-border bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg motion-safe:transition motion-safe:duration-200 motion-safe:ease-in-out motion-safe:data-entering:opacity-0 motion-safe:data-exiting:opacity-0 motion-reduce:transition-none data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:pb-[env(safe-area-inset-bottom)] motion-safe:data-[side=bottom]:data-entering:translate-y-10 motion-safe:data-[side=bottom]:data-exiting:translate-y-10 data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r motion-safe:data-[side=left]:data-entering:-translate-x-10 motion-safe:data-[side=left]:data-exiting:-translate-x-10 data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l motion-safe:data-[side=right]:data-entering:translate-x-10 motion-safe:data-[side=right]:data-exiting:translate-x-10 data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:pt-[env(safe-area-inset-top)] motion-safe:data-[side=top]:data-entering:-translate-y-10 motion-safe:data-[side=top]:data-exiting:-translate-y-10 data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",
1797
1984
  className
1798
1985
  ),
1799
- children: /* @__PURE__ */ jsxs6(
1986
+ children: /* @__PURE__ */ jsxs9(
1800
1987
  DrawerPrimitive,
1801
1988
  {
1802
1989
  "data-slot": "drawer",
@@ -1804,9 +1991,9 @@ function DrawerContent({
1804
1991
  ...dialogProps,
1805
1992
  children: [
1806
1993
  children,
1807
- showCloseButton && /* @__PURE__ */ jsxs6(DrawerClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
1808
- /* @__PURE__ */ jsx17(XIcon2, {}),
1809
- /* @__PURE__ */ jsx17("span", { className: "sr-only", children: "Cerrar" })
1994
+ showCloseButton && /* @__PURE__ */ jsxs9(DrawerClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
1995
+ /* @__PURE__ */ jsx22(XIcon2, {}),
1996
+ /* @__PURE__ */ jsx22("span", { className: "sr-only", children: "Cerrar" })
1810
1997
  ] })
1811
1998
  ]
1812
1999
  }
@@ -1815,16 +2002,16 @@ function DrawerContent({
1815
2002
  ) });
1816
2003
  }
1817
2004
  function Drawer(props) {
1818
- if (!("trigger" in props)) return /* @__PURE__ */ jsx17(DrawerContent, { ...props });
2005
+ if (!("trigger" in props)) return /* @__PURE__ */ jsx22(DrawerContent, { ...props });
1819
2006
  const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
1820
- const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx17(Button, { ...triggerProps, children: trigger }) : trigger;
1821
- return /* @__PURE__ */ jsxs6(DrawerTrigger, { defaultOpen, isOpen, onOpenChange, children: [
2007
+ const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx22(Button, { ...triggerProps, children: trigger }) : trigger;
2008
+ return /* @__PURE__ */ jsxs9(DrawerTrigger, { defaultOpen, isOpen, onOpenChange, children: [
1822
2009
  triggerElement,
1823
- /* @__PURE__ */ jsx17(DrawerContent, { ...contentProps, children })
2010
+ /* @__PURE__ */ jsx22(DrawerContent, { ...contentProps, children })
1824
2011
  ] });
1825
2012
  }
1826
2013
  function DrawerHeader({ className, ...props }) {
1827
- return /* @__PURE__ */ jsx17(
2014
+ return /* @__PURE__ */ jsx22(
1828
2015
  "div",
1829
2016
  {
1830
2017
  "data-slot": "drawer-header",
@@ -1834,7 +2021,7 @@ function DrawerHeader({ className, ...props }) {
1834
2021
  );
1835
2022
  }
1836
2023
  function DrawerFooter({ className, ...props }) {
1837
- return /* @__PURE__ */ jsx17(
2024
+ return /* @__PURE__ */ jsx22(
1838
2025
  "div",
1839
2026
  {
1840
2027
  "data-slot": "drawer-footer",
@@ -1843,320 +2030,63 @@ function DrawerFooter({ className, ...props }) {
1843
2030
  }
1844
2031
  );
1845
2032
  }
1846
- function DrawerTitle({ className, ...props }) {
1847
- return /* @__PURE__ */ jsx17(
1848
- Heading2,
1849
- {
1850
- slot: "title",
1851
- "data-slot": "drawer-title",
1852
- className: cn("text-base font-medium text-foreground", className),
1853
- ...props
1854
- }
1855
- );
1856
- }
1857
- function DrawerDescription({
1858
- className,
1859
- ...props
1860
- }) {
1861
- return /* @__PURE__ */ jsx17(
1862
- Text3,
1863
- {
1864
- slot: "description",
1865
- "data-slot": "drawer-description",
1866
- className: cn("text-sm text-muted-foreground", className),
1867
- ...props
1868
- }
1869
- );
1870
- }
1871
- var Sheet = DrawerContent;
1872
- var SheetClose = DrawerClose;
1873
- var SheetContent = DrawerContent;
1874
- var SheetDescription = DrawerDescription;
1875
- var SheetFooter = DrawerFooter;
1876
- var SheetHeader = DrawerHeader;
1877
- var SheetTitle = DrawerTitle;
1878
- var SheetTrigger = DrawerTrigger;
1879
-
1880
- // src/ui/composition/composition.tsx
1881
- import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
1882
- function FilterBar({ className, ...props }) {
1883
- return /* @__PURE__ */ jsx18(
1884
- "div",
1885
- {
1886
- "data-slot": "filter-bar",
1887
- className: cn("flex flex-wrap items-center gap-2", className),
1888
- ...props
1889
- }
1890
- );
1891
- }
1892
- function FilterGroup({ className, ...props }) {
1893
- return /* @__PURE__ */ jsx18(
1894
- "div",
1895
- {
1896
- "data-slot": "filter-group",
1897
- className: cn("flex flex-wrap items-center gap-2", className),
1898
- ...props
1899
- }
1900
- );
1901
- }
1902
- function ActiveFilters({ className, ...props }) {
1903
- return /* @__PURE__ */ jsx18(
1904
- "div",
1905
- {
1906
- "data-slot": "active-filters",
1907
- "aria-label": "Filtros activos",
1908
- className: cn("flex flex-wrap items-center gap-1.5", className),
1909
- ...props
1910
- }
1911
- );
1912
- }
1913
- function FilterChip({
1914
- children,
1915
- onRemove,
1916
- ...props
1917
- }) {
1918
- return /* @__PURE__ */ jsxs7(Button, { size: "sm", variant: "outline", onPress: onRemove, ...props, children: [
1919
- children,
1920
- " \xD7"
1921
- ] });
1922
- }
1923
- function SelectionToolbar({
1924
- count,
1925
- className,
1926
- children,
1927
- ...props
1928
- }) {
1929
- return /* @__PURE__ */ jsxs7(
1930
- "div",
1931
- {
1932
- "data-slot": "selection-toolbar",
1933
- className: cn(
1934
- "flex flex-wrap items-center justify-between gap-2 rounded-lg border bg-muted/40 p-2",
1935
- className
1936
- ),
1937
- ...props,
1938
- children: [
1939
- /* @__PURE__ */ jsxs7("output", { "aria-live": "polite", className: "text-sm font-medium", children: [
1940
- count,
1941
- " seleccionados"
1942
- ] }),
1943
- /* @__PURE__ */ jsx18("div", { className: "flex items-center gap-2", children })
1944
- ]
1945
- }
1946
- );
1947
- }
1948
- function DescriptionList({ className, ...props }) {
1949
- return /* @__PURE__ */ jsx18(
1950
- "dl",
1951
- {
1952
- "data-slot": "description-list",
1953
- className: cn("grid gap-x-6 gap-y-4 sm:grid-cols-2", className),
1954
- ...props
1955
- }
1956
- );
1957
- }
1958
- function DescriptionItem({ className, ...props }) {
1959
- return /* @__PURE__ */ jsx18("div", { "data-slot": "description-item", className: cn("min-w-0", className), ...props });
1960
- }
1961
- function DescriptionTerm({ className, ...props }) {
1962
- return /* @__PURE__ */ jsx18(
1963
- "dt",
1964
- {
1965
- "data-slot": "description-term",
1966
- className: cn("text-xs font-medium text-muted-foreground", className),
1967
- ...props
1968
- }
1969
- );
1970
- }
1971
- function DescriptionDetails({ className, ...props }) {
1972
- return /* @__PURE__ */ jsx18(
1973
- "dd",
1974
- {
1975
- "data-slot": "description-details",
1976
- className: cn("mt-1 wrap-break-word text-sm", className),
1977
- ...props
1978
- }
1979
- );
1980
- }
1981
- function DataViewState({ className, ...props }) {
1982
- return /* @__PURE__ */ jsx18(
1983
- "section",
1984
- {
1985
- "data-slot": "data-view-state",
1986
- className: cn(
1987
- "flex min-h-40 flex-col items-center justify-center gap-3 rounded-xl border p-6 text-center",
1988
- className
1989
- ),
1990
- ...props
1991
- }
1992
- );
1993
- }
1994
- function DataViewStateTitle({ children, className, ...props }) {
1995
- return /* @__PURE__ */ jsx18("h2", { "data-slot": "data-view-state-title", className: cn("font-semibold", className), ...props, children });
1996
- }
1997
- function DataViewStateDescription({ className, ...props }) {
1998
- return /* @__PURE__ */ jsx18(
1999
- "p",
2000
- {
2001
- "data-slot": "data-view-state-description",
2002
- className: cn("text-sm text-muted-foreground", className),
2003
- ...props
2004
- }
2005
- );
2006
- }
2007
- function DataViewStateActions({ className, ...props }) {
2008
- return /* @__PURE__ */ jsx18(
2009
- "div",
2010
- {
2011
- "data-slot": "data-view-state-actions",
2012
- className: cn("flex items-center gap-2", className),
2013
- ...props
2014
- }
2015
- );
2016
- }
2017
- function MetricGrid({ className, ...props }) {
2018
- return /* @__PURE__ */ jsx18(
2019
- "div",
2020
- {
2021
- "data-slot": "metric-grid",
2022
- className: cn("grid gap-4 sm:grid-cols-2 xl:grid-cols-4", className),
2023
- ...props
2024
- }
2025
- );
2026
- }
2027
- function DetailDrawer({ children, ...props }) {
2028
- return /* @__PURE__ */ jsx18(DrawerContent, { ...props, children });
2029
- }
2030
- function DetailDrawerBody({ className, ...props }) {
2031
- return /* @__PURE__ */ jsx18(
2032
- "div",
2033
- {
2034
- "data-slot": "detail-drawer-body",
2035
- className: cn("min-h-0 flex-1 overflow-y-auto px-4", className),
2036
- ...props
2037
- }
2038
- );
2039
- }
2040
-
2041
- // src/ui/confirm-dialog/confirm-dialog.tsx
2042
- import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
2043
- function ConfirmDialog({
2044
- open,
2045
- onOpenChange,
2046
- title,
2047
- description,
2048
- confirmLabel = "Confirmar",
2049
- cancelLabel = "Cancelar",
2050
- destructive = false,
2051
- pending = false,
2052
- onConfirm
2053
- }) {
2054
- return /* @__PURE__ */ jsx19(
2055
- AlertDialog,
2056
- {
2057
- open,
2058
- onOpenChange: (nextOpen) => {
2059
- if (!pending || nextOpen) onOpenChange(nextOpen);
2060
- },
2061
- children: /* @__PURE__ */ jsxs8(AlertDialogContent, { children: [
2062
- /* @__PURE__ */ jsxs8(AlertDialogHeader, { children: [
2063
- /* @__PURE__ */ jsx19(AlertDialogTitle, { children: title }),
2064
- description ? /* @__PURE__ */ jsx19(AlertDialogDescription, { children: description }) : null
2065
- ] }),
2066
- /* @__PURE__ */ jsxs8(AlertDialogFooter, { children: [
2067
- /* @__PURE__ */ jsx19(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
2068
- /* @__PURE__ */ jsx19(
2069
- Button,
2070
- {
2071
- variant: destructive ? "destructive" : "default",
2072
- isDisabled: pending,
2073
- onPress: onConfirm,
2074
- children: confirmLabel
2075
- }
2076
- )
2077
- ] })
2078
- ] })
2079
- }
2080
- );
2081
- }
2082
-
2083
- // src/ui/copy-button/copy-button.tsx
2084
- import { Check as Check2, Copy } from "lucide-react";
2085
- import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
2086
- function CopyButton({
2087
- value,
2088
- children,
2089
- copiedLabel = "Copiado",
2090
- resetMs,
2091
- onCopied,
2092
- onCopyError,
2033
+ function DrawerTitle({ className, ...props }) {
2034
+ return /* @__PURE__ */ jsx22(
2035
+ Heading3,
2036
+ {
2037
+ slot: "title",
2038
+ "data-slot": "drawer-title",
2039
+ className: cn("text-base font-medium text-foreground", className),
2040
+ ...props
2041
+ }
2042
+ );
2043
+ }
2044
+ function DrawerDescription({
2045
+ className,
2093
2046
  ...props
2094
2047
  }) {
2095
- const { copy, status } = useClipboard({ resetMs, onError: onCopyError });
2096
- const copied = status === "copied";
2097
- const label = copied ? copiedLabel : children ?? "Copiar";
2098
- return /* @__PURE__ */ jsxs9(
2099
- Button,
2048
+ return /* @__PURE__ */ jsx22(
2049
+ Text3,
2100
2050
  {
2101
- "aria-label": typeof label === "string" ? label : void 0,
2102
- onPress: () => {
2103
- void copy(value).then((wasCopied) => {
2104
- if (wasCopied) onCopied?.(value);
2105
- });
2106
- },
2107
- ...props,
2108
- children: [
2109
- copied ? /* @__PURE__ */ jsx20(Check2, { "aria-hidden": "true", className: "size-3.5" }) : /* @__PURE__ */ jsx20(Copy, { "aria-hidden": "true", className: "size-3.5" }),
2110
- label
2111
- ]
2051
+ slot: "description",
2052
+ "data-slot": "drawer-description",
2053
+ className: cn("text-sm text-muted-foreground", className),
2054
+ ...props
2112
2055
  }
2113
2056
  );
2114
2057
  }
2058
+ var Sheet = DrawerContent;
2059
+ var SheetClose = DrawerClose;
2060
+ var SheetContent = DrawerContent;
2061
+ var SheetDescription = DrawerDescription;
2062
+ var SheetFooter = DrawerFooter;
2063
+ var SheetHeader = DrawerHeader;
2064
+ var SheetTitle = DrawerTitle;
2065
+ var SheetTrigger = DrawerTrigger;
2115
2066
 
2116
- // src/ui/danger-zone/danger-zone.tsx
2117
- import { ChevronDown, ShieldAlert } from "lucide-react";
2118
- import {
2119
- Button as DisclosureButton,
2120
- Disclosure,
2121
- DisclosurePanel,
2122
- Heading as Heading3
2123
- } from "react-aria-components";
2124
- import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
2125
- function DangerZone({
2126
- title = "Zona de peligro",
2127
- description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
2128
- defaultOpen = false,
2129
- className,
2130
- children
2131
- }) {
2132
- return /* @__PURE__ */ jsx21(Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ jsxs10(Card, { className: cn("border-destructive/30", className), children: [
2133
- /* @__PURE__ */ jsx21(Heading3, { className: "flex", children: /* @__PURE__ */ jsxs10(
2134
- DisclosureButton,
2135
- {
2136
- slot: "trigger",
2137
- "data-slot": "danger-zone-trigger",
2138
- className: "group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3",
2139
- children: [
2140
- /* @__PURE__ */ jsx21(ShieldAlert, { className: "text-destructive size-4 shrink-0" }),
2141
- /* @__PURE__ */ jsxs10("span", { className: "flex flex-1 flex-col gap-0.5", children: [
2142
- /* @__PURE__ */ jsx21("span", { className: "font-heading text-destructive text-base leading-snug font-medium", children: title }),
2143
- /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground text-xs", children: description })
2144
- ] }),
2145
- /* @__PURE__ */ jsx21(ChevronDown, { className: "text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180" })
2146
- ]
2147
- }
2148
- ) }),
2149
- /* @__PURE__ */ jsx21(DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ jsx21(CardContent, { children }) })
2150
- ] }) });
2067
+ // src/ui/detail-drawer/detail-drawer.tsx
2068
+ import { jsx as jsx23 } from "react/jsx-runtime";
2069
+ function DetailDrawer({ children, ...props }) {
2070
+ return /* @__PURE__ */ jsx23(DrawerContent, { ...props, children });
2071
+ }
2072
+ function DetailDrawerBody({ className, ...props }) {
2073
+ return /* @__PURE__ */ jsx23(
2074
+ "div",
2075
+ {
2076
+ "data-slot": "detail-drawer-body",
2077
+ className: cn("min-h-0 flex-1 overflow-y-auto px-4", className),
2078
+ ...props
2079
+ }
2080
+ );
2151
2081
  }
2152
2082
 
2153
2083
  // src/ui/doc-preview/doc-preview.tsx
2154
2084
  import { FileText, Image } from "lucide-react";
2155
- import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
2085
+ import { jsx as jsx24, jsxs as jsxs10 } from "react/jsx-runtime";
2156
2086
  function DocPreview({ url, mimeType, name }) {
2157
- if (!url) return /* @__PURE__ */ jsx22(Fallback, { mimeType, reason: "no-url" });
2087
+ if (!url) return /* @__PURE__ */ jsx24(Fallback, { mimeType, reason: "no-url" });
2158
2088
  if (mimeType === "application/pdf" || mimeType === "text/plain" || mimeType === "text/csv") {
2159
- return /* @__PURE__ */ jsx22(
2089
+ return /* @__PURE__ */ jsx24(
2160
2090
  "iframe",
2161
2091
  {
2162
2092
  src: url,
@@ -2167,9 +2097,9 @@ function DocPreview({ url, mimeType, name }) {
2167
2097
  );
2168
2098
  }
2169
2099
  if (mimeType?.startsWith("image/")) {
2170
- return /* @__PURE__ */ jsx22("div", { className: "bg-muted/30 flex justify-center rounded-sm p-6", children: /* @__PURE__ */ jsx22("img", { src: url, alt: name, className: "max-h-[75vh] max-w-full rounded object-contain" }) });
2100
+ return /* @__PURE__ */ jsx24("div", { className: "bg-muted/30 flex justify-center rounded-sm p-6", children: /* @__PURE__ */ jsx24("img", { src: url, alt: name, className: "max-h-[75vh] max-w-full rounded object-contain" }) });
2171
2101
  }
2172
- return /* @__PURE__ */ jsx22(Fallback, { mimeType, reason: "unsupported" });
2102
+ return /* @__PURE__ */ jsx24(Fallback, { mimeType, reason: "unsupported" });
2173
2103
  }
2174
2104
  function Fallback({
2175
2105
  mimeType,
@@ -2177,11 +2107,11 @@ function Fallback({
2177
2107
  }) {
2178
2108
  const Icon = mimeType?.startsWith("image/") ? Image : FileText;
2179
2109
  const message = reason === "no-url" ? "No se pudo generar la URL de preview." : "Preview no disponible para este tipo de archivo.";
2180
- return /* @__PURE__ */ jsxs11("div", { className: "text-muted-foreground flex flex-col items-center justify-center gap-2 py-14", children: [
2181
- /* @__PURE__ */ jsx22(Icon, { className: "size-9 opacity-30" }),
2182
- /* @__PURE__ */ jsx22("p", { className: "text-sm", children: message }),
2183
- mimeType ? /* @__PURE__ */ jsx22("p", { className: "font-mono text-xs opacity-50", children: mimeType }) : null,
2184
- /* @__PURE__ */ jsx22("p", { className: "text-xs opacity-50", children: "Usa el bot\xF3n Descargar para abrir el archivo." })
2110
+ return /* @__PURE__ */ jsxs10("div", { className: "text-muted-foreground flex flex-col items-center justify-center gap-2 py-14", children: [
2111
+ /* @__PURE__ */ jsx24(Icon, { className: "size-9 opacity-30" }),
2112
+ /* @__PURE__ */ jsx24("p", { className: "text-sm", children: message }),
2113
+ mimeType ? /* @__PURE__ */ jsx24("p", { className: "font-mono text-xs opacity-50", children: mimeType }) : null,
2114
+ /* @__PURE__ */ jsx24("p", { className: "text-xs opacity-50", children: "Usa el bot\xF3n Descargar para abrir el archivo." })
2185
2115
  ] });
2186
2116
  }
2187
2117
 
@@ -2200,9 +2130,9 @@ import {
2200
2130
  Separator as SeparatorPrimitive2,
2201
2131
  SubmenuTrigger as SubmenuTriggerPrimitive
2202
2132
  } from "react-aria-components";
2203
- import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
2133
+ import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs11 } from "react/jsx-runtime";
2204
2134
  function DropdownMenuTrigger({ ...props }) {
2205
- return /* @__PURE__ */ jsx23(MenuTriggerPrimitive, { "data-slot": "dropdown-menu-trigger", ...props });
2135
+ return /* @__PURE__ */ jsx25(MenuTriggerPrimitive, { "data-slot": "dropdown-menu-trigger", ...props });
2206
2136
  }
2207
2137
  function DropdownMenuContent({
2208
2138
  "data-slot": dataSlot = "dropdown-menu-content",
@@ -2213,7 +2143,7 @@ function DropdownMenuContent({
2213
2143
  children,
2214
2144
  ...props
2215
2145
  }) {
2216
- return /* @__PURE__ */ jsx23(
2146
+ return /* @__PURE__ */ jsx25(
2217
2147
  PopoverPrimitive,
2218
2148
  {
2219
2149
  "data-slot": dataSlot,
@@ -2225,7 +2155,7 @@ function DropdownMenuContent({
2225
2155
  "w-(--trigger-width) min-w-32 origin-(--trigger-anchor-point) overflow-x-hidden overflow-y-auto rounded-lg border border-border bg-popover p-1 text-popover-foreground",
2226
2156
  className
2227
2157
  ),
2228
- children: /* @__PURE__ */ jsx23(
2158
+ children: /* @__PURE__ */ jsx25(
2229
2159
  MenuPrimitive,
2230
2160
  {
2231
2161
  className: "max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden",
@@ -2237,25 +2167,25 @@ function DropdownMenuContent({
2237
2167
  );
2238
2168
  }
2239
2169
  function DropdownMenu(props) {
2240
- if (!("trigger" in props)) return /* @__PURE__ */ jsx23(DropdownMenuContent, { ...props });
2170
+ if (!("trigger" in props)) return /* @__PURE__ */ jsx25(DropdownMenuContent, { ...props });
2241
2171
  const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
2242
- const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx23(Button, { ...triggerProps, children: trigger }) : trigger;
2243
- return /* @__PURE__ */ jsxs12(DropdownMenuTrigger, { defaultOpen, isOpen, onOpenChange, children: [
2172
+ const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx25(Button, { ...triggerProps, children: trigger }) : trigger;
2173
+ return /* @__PURE__ */ jsxs11(DropdownMenuTrigger, { defaultOpen, isOpen, onOpenChange, children: [
2244
2174
  triggerElement,
2245
- /* @__PURE__ */ jsx23(DropdownMenuContent, { ...contentProps, children })
2175
+ /* @__PURE__ */ jsx25(DropdownMenuContent, { ...contentProps, children })
2246
2176
  ] });
2247
2177
  }
2248
2178
  function DropdownMenuGroup({
2249
2179
  ...props
2250
2180
  }) {
2251
- return /* @__PURE__ */ jsx23(MenuSectionPrimitive, { "data-slot": "dropdown-menu-group", ...props });
2181
+ return /* @__PURE__ */ jsx25(MenuSectionPrimitive, { "data-slot": "dropdown-menu-group", ...props });
2252
2182
  }
2253
2183
  function DropdownMenuLabel({
2254
2184
  className,
2255
2185
  inset,
2256
2186
  ...props
2257
2187
  }) {
2258
- return /* @__PURE__ */ jsx23(
2188
+ return /* @__PURE__ */ jsx25(
2259
2189
  HeaderPrimitive,
2260
2190
  {
2261
2191
  "data-slot": "dropdown-menu-label",
@@ -2287,7 +2217,7 @@ function DropdownMenuItem({
2287
2217
  children,
2288
2218
  ...props
2289
2219
  }) {
2290
- return /* @__PURE__ */ jsx23(
2220
+ return /* @__PURE__ */ jsx25(
2291
2221
  MenuItemPrimitive,
2292
2222
  {
2293
2223
  "data-slot": "dropdown-menu-item",
@@ -2299,13 +2229,13 @@ function DropdownMenuItem({
2299
2229
  (className2, { selectionMode }) => cn(dropdownMenuItemVariants({ selectionMode }), className2)
2300
2230
  ),
2301
2231
  ...props,
2302
- children: composeRenderProps(children, (children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs12(Fragment5, { children: [
2303
- selectionMode !== "none" ? /* @__PURE__ */ jsx23(
2232
+ children: composeRenderProps(children, (children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs11(Fragment5, { children: [
2233
+ selectionMode !== "none" ? /* @__PURE__ */ jsx25(
2304
2234
  "span",
2305
2235
  {
2306
2236
  className: "pointer-events-none absolute right-2 flex items-center justify-center",
2307
2237
  "data-slot": selectionMode === "single" ? "dropdown-menu-radio-item-indicator" : "dropdown-menu-checkbox-item-indicator",
2308
- children: isSelected ? /* @__PURE__ */ jsx23(CheckIcon, {}) : null
2238
+ children: isSelected ? /* @__PURE__ */ jsx25(CheckIcon, {}) : null
2309
2239
  }
2310
2240
  ) : null,
2311
2241
  children2
@@ -2314,7 +2244,7 @@ function DropdownMenuItem({
2314
2244
  );
2315
2245
  }
2316
2246
  function DropdownMenuSub({ ...props }) {
2317
- return /* @__PURE__ */ jsx23(SubmenuTriggerPrimitive, { "data-slot": "dropdown-menu-sub", ...props });
2247
+ return /* @__PURE__ */ jsx25(SubmenuTriggerPrimitive, { "data-slot": "dropdown-menu-sub", ...props });
2318
2248
  }
2319
2249
  function DropdownMenuSubTrigger({
2320
2250
  className,
@@ -2322,7 +2252,7 @@ function DropdownMenuSubTrigger({
2322
2252
  children,
2323
2253
  ...props
2324
2254
  }) {
2325
- return /* @__PURE__ */ jsx23(
2255
+ return /* @__PURE__ */ jsx25(
2326
2256
  MenuItemPrimitive,
2327
2257
  {
2328
2258
  "data-slot": "dropdown-menu-sub-trigger",
@@ -2333,9 +2263,9 @@ function DropdownMenuSubTrigger({
2333
2263
  className
2334
2264
  ),
2335
2265
  ...props,
2336
- children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs12(Fragment5, { children: [
2266
+ children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs11(Fragment5, { children: [
2337
2267
  children2,
2338
- /* @__PURE__ */ jsx23(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
2268
+ /* @__PURE__ */ jsx25(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
2339
2269
  ] }))
2340
2270
  }
2341
2271
  );
@@ -2347,7 +2277,7 @@ function DropdownMenuSubContent({
2347
2277
  className,
2348
2278
  ...props
2349
2279
  }) {
2350
- return /* @__PURE__ */ jsx23(
2280
+ return /* @__PURE__ */ jsx25(
2351
2281
  DropdownMenuContent,
2352
2282
  {
2353
2283
  "data-slot": "dropdown-menu-sub-content",
@@ -2366,7 +2296,7 @@ function DropdownMenuSeparator({
2366
2296
  className,
2367
2297
  ...props
2368
2298
  }) {
2369
- return /* @__PURE__ */ jsx23(
2299
+ return /* @__PURE__ */ jsx25(
2370
2300
  SeparatorPrimitive2,
2371
2301
  {
2372
2302
  "data-slot": "dropdown-menu-separator",
@@ -2376,7 +2306,7 @@ function DropdownMenuSeparator({
2376
2306
  );
2377
2307
  }
2378
2308
  function DropdownMenuShortcut({ className, ...props }) {
2379
- return /* @__PURE__ */ jsx23(
2309
+ return /* @__PURE__ */ jsx25(
2380
2310
  "span",
2381
2311
  {
2382
2312
  "data-slot": "dropdown-menu-shortcut",
@@ -2405,9 +2335,9 @@ var emptyStateMediaVariants = cva7(
2405
2335
  );
2406
2336
 
2407
2337
  // src/ui/empty-state/empty-state.tsx
2408
- import { jsx as jsx24 } from "react/jsx-runtime";
2338
+ import { jsx as jsx26 } from "react/jsx-runtime";
2409
2339
  function EmptyState({ className, ...props }) {
2410
- return /* @__PURE__ */ jsx24(
2340
+ return /* @__PURE__ */ jsx26(
2411
2341
  "div",
2412
2342
  {
2413
2343
  "data-slot": "empty-state",
@@ -2420,7 +2350,7 @@ function EmptyState({ className, ...props }) {
2420
2350
  );
2421
2351
  }
2422
2352
  function EmptyStateHeader({ className, ...props }) {
2423
- return /* @__PURE__ */ jsx24(
2353
+ return /* @__PURE__ */ jsx26(
2424
2354
  "div",
2425
2355
  {
2426
2356
  "data-slot": "empty-state-header",
@@ -2434,7 +2364,7 @@ function EmptyStateMedia({
2434
2364
  variant = "default",
2435
2365
  ...props
2436
2366
  }) {
2437
- return /* @__PURE__ */ jsx24(
2367
+ return /* @__PURE__ */ jsx26(
2438
2368
  "div",
2439
2369
  {
2440
2370
  "data-slot": "empty-state-media",
@@ -2445,7 +2375,7 @@ function EmptyStateMedia({
2445
2375
  );
2446
2376
  }
2447
2377
  function EmptyStateTitle({ className, children, ...props }) {
2448
- return /* @__PURE__ */ jsx24(
2378
+ return /* @__PURE__ */ jsx26(
2449
2379
  "h3",
2450
2380
  {
2451
2381
  "data-slot": "empty-state-title",
@@ -2456,7 +2386,7 @@ function EmptyStateTitle({ className, children, ...props }) {
2456
2386
  );
2457
2387
  }
2458
2388
  function EmptyStateDescription({ className, ...props }) {
2459
- return /* @__PURE__ */ jsx24(
2389
+ return /* @__PURE__ */ jsx26(
2460
2390
  "p",
2461
2391
  {
2462
2392
  "data-slot": "empty-state-description",
@@ -2469,7 +2399,7 @@ function EmptyStateDescription({ className, ...props }) {
2469
2399
  );
2470
2400
  }
2471
2401
  function EmptyStateContent({ className, ...props }) {
2472
- return /* @__PURE__ */ jsx24(
2402
+ return /* @__PURE__ */ jsx26(
2473
2403
  "div",
2474
2404
  {
2475
2405
  "data-slot": "empty-state-content",
@@ -2487,9 +2417,9 @@ import { Component, Suspense } from "react";
2487
2417
 
2488
2418
  // src/ui/error-state/error-state.tsx
2489
2419
  import { AlertCircle } from "lucide-react";
2490
- import { jsx as jsx25 } from "react/jsx-runtime";
2420
+ import { jsx as jsx27 } from "react/jsx-runtime";
2491
2421
  function ErrorState({ className, ...props }) {
2492
- return /* @__PURE__ */ jsx25(
2422
+ return /* @__PURE__ */ jsx27(
2493
2423
  "section",
2494
2424
  {
2495
2425
  "data-slot": "error-state",
@@ -2506,7 +2436,7 @@ function ErrorStateIcon({
2506
2436
  className,
2507
2437
  ...props
2508
2438
  }) {
2509
- return /* @__PURE__ */ jsx25(
2439
+ return /* @__PURE__ */ jsx27(
2510
2440
  AlertCircle,
2511
2441
  {
2512
2442
  "data-slot": "error-state-icon",
@@ -2517,7 +2447,7 @@ function ErrorStateIcon({
2517
2447
  );
2518
2448
  }
2519
2449
  function ErrorStateTitle({ className, ...props }) {
2520
- return /* @__PURE__ */ jsx25(
2450
+ return /* @__PURE__ */ jsx27(
2521
2451
  "h2",
2522
2452
  {
2523
2453
  "data-slot": "error-state-title",
@@ -2527,7 +2457,7 @@ function ErrorStateTitle({ className, ...props }) {
2527
2457
  );
2528
2458
  }
2529
2459
  function ErrorStateDescription({ className, ...props }) {
2530
- return /* @__PURE__ */ jsx25(
2460
+ return /* @__PURE__ */ jsx27(
2531
2461
  "p",
2532
2462
  {
2533
2463
  "data-slot": "error-state-description",
@@ -2537,7 +2467,7 @@ function ErrorStateDescription({ className, ...props }) {
2537
2467
  );
2538
2468
  }
2539
2469
  function ErrorStateActions({ className, ...props }) {
2540
- return /* @__PURE__ */ jsx25(
2470
+ return /* @__PURE__ */ jsx27(
2541
2471
  "div",
2542
2472
  {
2543
2473
  "data-slot": "error-state-actions",
@@ -2548,7 +2478,7 @@ function ErrorStateActions({ className, ...props }) {
2548
2478
  }
2549
2479
 
2550
2480
  // src/ui/error-boundary/error-boundary.tsx
2551
- import { jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
2481
+ import { jsx as jsx28, jsxs as jsxs12 } from "react/jsx-runtime";
2552
2482
  function changedResetKeys(previous = [], next = []) {
2553
2483
  return previous.length !== next.length || previous.some((value, index) => !Object.is(value, next[index]));
2554
2484
  }
@@ -2571,31 +2501,31 @@ var Boundary = class extends Component {
2571
2501
  if (typeof fallback === "function")
2572
2502
  return fallback({ error: this.state.error, reset: this.reset });
2573
2503
  if (fallback) return fallback;
2574
- return /* @__PURE__ */ jsxs13(ErrorState, { children: [
2575
- /* @__PURE__ */ jsx26(ErrorStateIcon, {}),
2576
- /* @__PURE__ */ jsx26(ErrorStateTitle, { children: "No se pudo cargar este contenido" }),
2577
- /* @__PURE__ */ jsx26(ErrorStateDescription, { children: "Prueba a cargarlo de nuevo." }),
2578
- /* @__PURE__ */ jsx26(ErrorStateActions, { children: /* @__PURE__ */ jsx26(Button, { onPress: this.reset, children: "Reintentar" }) })
2504
+ return /* @__PURE__ */ jsxs12(ErrorState, { children: [
2505
+ /* @__PURE__ */ jsx28(ErrorStateIcon, {}),
2506
+ /* @__PURE__ */ jsx28(ErrorStateTitle, { children: "No se pudo cargar este contenido" }),
2507
+ /* @__PURE__ */ jsx28(ErrorStateDescription, { children: "Prueba a cargarlo de nuevo." }),
2508
+ /* @__PURE__ */ jsx28(ErrorStateActions, { children: /* @__PURE__ */ jsx28(Button, { onPress: this.reset, children: "Reintentar" }) })
2579
2509
  ] });
2580
2510
  }
2581
2511
  };
2582
2512
  function ErrorBoundary(props) {
2583
- return /* @__PURE__ */ jsx26(Boundary, { ...props });
2513
+ return /* @__PURE__ */ jsx28(Boundary, { ...props });
2584
2514
  }
2585
2515
  function AsyncBoundary({
2586
2516
  pending = null,
2587
2517
  ...props
2588
2518
  }) {
2589
- return /* @__PURE__ */ jsx26(ErrorBoundary, { ...props, children: /* @__PURE__ */ jsx26(Suspense, { fallback: pending, children: props.children }) });
2519
+ return /* @__PURE__ */ jsx28(ErrorBoundary, { ...props, children: /* @__PURE__ */ jsx28(Suspense, { fallback: pending, children: props.children }) });
2590
2520
  }
2591
2521
 
2592
2522
  // src/ui/label/label.tsx
2593
2523
  import { forwardRef } from "react";
2594
2524
  import { Label as LabelPrimitive } from "react-aria-components";
2595
- import { jsx as jsx27 } from "react/jsx-runtime";
2525
+ import { jsx as jsx29 } from "react/jsx-runtime";
2596
2526
  var Label2 = forwardRef(
2597
2527
  function Label3({ className, ...props }, ref) {
2598
- return /* @__PURE__ */ jsx27(
2528
+ return /* @__PURE__ */ jsx29(
2599
2529
  LabelPrimitive,
2600
2530
  {
2601
2531
  ref,
@@ -2627,16 +2557,16 @@ var fieldVariants = cva8(
2627
2557
  );
2628
2558
 
2629
2559
  // src/ui/field/field.tsx
2630
- import { jsx as jsx28, jsxs as jsxs14 } from "react/jsx-runtime";
2560
+ import { jsx as jsx30, jsxs as jsxs13 } from "react/jsx-runtime";
2631
2561
  function FieldSet({ className, ...props }) {
2632
- return /* @__PURE__ */ jsx28("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
2562
+ return /* @__PURE__ */ jsx30("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
2633
2563
  }
2634
2564
  function FieldLegend({
2635
2565
  className,
2636
2566
  variant = "legend",
2637
2567
  ...props
2638
2568
  }) {
2639
- return /* @__PURE__ */ jsx28(
2569
+ return /* @__PURE__ */ jsx30(
2640
2570
  "legend",
2641
2571
  {
2642
2572
  "data-slot": "field-legend",
@@ -2650,7 +2580,7 @@ function FieldLegend({
2650
2580
  );
2651
2581
  }
2652
2582
  function FieldGroup({ className, ...props }) {
2653
- return /* @__PURE__ */ jsx28(
2583
+ return /* @__PURE__ */ jsx30(
2654
2584
  "div",
2655
2585
  {
2656
2586
  "data-slot": "field-group",
@@ -2665,7 +2595,7 @@ function FieldGroup({ className, ...props }) {
2665
2595
  function Field({ className, orientation = "vertical", ...props }) {
2666
2596
  return (
2667
2597
  // biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.
2668
- /* @__PURE__ */ jsx28(
2598
+ /* @__PURE__ */ jsx30(
2669
2599
  "div",
2670
2600
  {
2671
2601
  role: "group",
@@ -2678,7 +2608,7 @@ function Field({ className, orientation = "vertical", ...props }) {
2678
2608
  );
2679
2609
  }
2680
2610
  function FieldContent({ className, ...props }) {
2681
- return /* @__PURE__ */ jsx28(
2611
+ return /* @__PURE__ */ jsx30(
2682
2612
  "div",
2683
2613
  {
2684
2614
  "data-slot": "field-content",
@@ -2688,7 +2618,7 @@ function FieldContent({ className, ...props }) {
2688
2618
  );
2689
2619
  }
2690
2620
  function FieldLabel({ className, ...props }) {
2691
- return /* @__PURE__ */ jsx28(
2621
+ return /* @__PURE__ */ jsx30(
2692
2622
  Label2,
2693
2623
  {
2694
2624
  "data-slot": "field-label",
@@ -2701,7 +2631,7 @@ function FieldLabel({ className, ...props }) {
2701
2631
  );
2702
2632
  }
2703
2633
  function FieldTitle({ className, ...props }) {
2704
- return /* @__PURE__ */ jsx28(
2634
+ return /* @__PURE__ */ jsx30(
2705
2635
  "div",
2706
2636
  {
2707
2637
  "data-slot": "field-title",
@@ -2711,7 +2641,7 @@ function FieldTitle({ className, ...props }) {
2711
2641
  );
2712
2642
  }
2713
2643
  function FieldDescription({ className, ...props }) {
2714
- return /* @__PURE__ */ jsx28(
2644
+ return /* @__PURE__ */ jsx30(
2715
2645
  "p",
2716
2646
  {
2717
2647
  "data-slot": "field-description",
@@ -2724,7 +2654,7 @@ function FieldDescription({ className, ...props }) {
2724
2654
  );
2725
2655
  }
2726
2656
  function FieldSeparator({ className, children, ...props }) {
2727
- return /* @__PURE__ */ jsxs14(
2657
+ return /* @__PURE__ */ jsxs13(
2728
2658
  "div",
2729
2659
  {
2730
2660
  "data-slot": "field-separator",
@@ -2732,8 +2662,8 @@ function FieldSeparator({ className, children, ...props }) {
2732
2662
  className: cn("relative -my-2 h-5 text-sm", className),
2733
2663
  ...props,
2734
2664
  children: [
2735
- /* @__PURE__ */ jsx28(Separator, { className: "absolute inset-0 top-1/2" }),
2736
- children ? /* @__PURE__ */ jsx28(
2665
+ /* @__PURE__ */ jsx30(Separator, { className: "absolute inset-0 top-1/2" }),
2666
+ children ? /* @__PURE__ */ jsx30(
2737
2667
  "span",
2738
2668
  {
2739
2669
  "data-slot": "field-separator-content",
@@ -2747,9 +2677,9 @@ function FieldSeparator({ className, children, ...props }) {
2747
2677
  }
2748
2678
  function FieldError2({ className, children, errors, ...props }) {
2749
2679
  const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])];
2750
- const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ jsx28("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ jsx28("li", { children: message }, message)) }) : null);
2680
+ const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ jsx30("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ jsx30("li", { children: message }, message)) }) : null);
2751
2681
  if (!content) return null;
2752
- return /* @__PURE__ */ jsx28(
2682
+ return /* @__PURE__ */ jsx30(
2753
2683
  "div",
2754
2684
  {
2755
2685
  role: "alert",
@@ -2761,9 +2691,53 @@ function FieldError2({ className, children, errors, ...props }) {
2761
2691
  );
2762
2692
  }
2763
2693
 
2694
+ // src/ui/filter-bar/filter-bar.tsx
2695
+ import { jsx as jsx31, jsxs as jsxs14 } from "react/jsx-runtime";
2696
+ function FilterBar({ className, ...props }) {
2697
+ return /* @__PURE__ */ jsx31(
2698
+ "div",
2699
+ {
2700
+ "data-slot": "filter-bar",
2701
+ className: cn("flex flex-wrap items-center gap-2", className),
2702
+ ...props
2703
+ }
2704
+ );
2705
+ }
2706
+ function FilterGroup({ className, ...props }) {
2707
+ return /* @__PURE__ */ jsx31(
2708
+ "div",
2709
+ {
2710
+ "data-slot": "filter-group",
2711
+ className: cn("flex flex-wrap items-center gap-2", className),
2712
+ ...props
2713
+ }
2714
+ );
2715
+ }
2716
+ function ActiveFilters({ className, ...props }) {
2717
+ return /* @__PURE__ */ jsx31(
2718
+ "div",
2719
+ {
2720
+ "data-slot": "active-filters",
2721
+ "aria-label": "Filtros activos",
2722
+ className: cn("flex flex-wrap items-center gap-1.5", className),
2723
+ ...props
2724
+ }
2725
+ );
2726
+ }
2727
+ function FilterChip({
2728
+ children,
2729
+ onRemove,
2730
+ ...props
2731
+ }) {
2732
+ return /* @__PURE__ */ jsxs14(Button, { size: "sm", variant: "outline", onPress: onRemove, ...props, children: [
2733
+ children,
2734
+ " \xD7"
2735
+ ] });
2736
+ }
2737
+
2764
2738
  // src/ui/form-feedback/form-feedback.tsx
2765
2739
  import { CheckCircle, CircleAlert, LoaderCircle } from "lucide-react";
2766
- import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
2740
+ import { jsx as jsx32, jsxs as jsxs15 } from "react/jsx-runtime";
2767
2741
  function FormFeedback({
2768
2742
  state,
2769
2743
  className,
@@ -2771,7 +2745,7 @@ function FormFeedback({
2771
2745
  successLabel = "Guardado"
2772
2746
  }) {
2773
2747
  if (state.status === "idle")
2774
- return /* @__PURE__ */ jsx29("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
2748
+ return /* @__PURE__ */ jsx32("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
2775
2749
  const error = state.status === "error";
2776
2750
  const success = state.status === "success";
2777
2751
  return /* @__PURE__ */ jsxs15(
@@ -2787,10 +2761,10 @@ function FormFeedback({
2787
2761
  className
2788
2762
  ),
2789
2763
  children: [
2790
- state.status === "pending" && /* @__PURE__ */ jsx29(LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
2791
- success && /* @__PURE__ */ jsx29(CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
2792
- error && /* @__PURE__ */ jsx29(CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
2793
- /* @__PURE__ */ jsx29("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
2764
+ state.status === "pending" && /* @__PURE__ */ jsx32(LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
2765
+ success && /* @__PURE__ */ jsx32(CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
2766
+ error && /* @__PURE__ */ jsx32(CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
2767
+ /* @__PURE__ */ jsx32("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
2794
2768
  ]
2795
2769
  }
2796
2770
  );
@@ -2834,7 +2808,7 @@ function useFormFeedback(options) {
2834
2808
  }
2835
2809
 
2836
2810
  // src/ui/form-row/form-row.tsx
2837
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
2811
+ import { Fragment as Fragment6, jsx as jsx33, jsxs as jsxs16 } from "react/jsx-runtime";
2838
2812
  function FormRow({
2839
2813
  label,
2840
2814
  htmlFor,
@@ -2850,13 +2824,13 @@ function FormRow({
2850
2824
  /* @__PURE__ */ jsxs16("label", { htmlFor, className: "text-foreground text-sm font-medium", children: [
2851
2825
  label,
2852
2826
  required && /* @__PURE__ */ jsxs16(Fragment6, { children: [
2853
- /* @__PURE__ */ jsx30("span", { "aria-hidden": "true", className: "text-destructive ml-0.5", children: "*" }),
2854
- /* @__PURE__ */ jsx30("span", { className: "sr-only", children: " (obligatorio)" })
2827
+ /* @__PURE__ */ jsx33("span", { "aria-hidden": "true", className: "text-destructive ml-0.5", children: "*" }),
2828
+ /* @__PURE__ */ jsx33("span", { className: "sr-only", children: " (obligatorio)" })
2855
2829
  ] })
2856
2830
  ] }),
2857
2831
  children,
2858
- hint && /* @__PURE__ */ jsx30("p", { id: hintId, className: "text-muted-foreground text-xs", children: hint }),
2859
- error && /* @__PURE__ */ jsx30("p", { id: errorId, role: "alert", className: "text-destructive text-xs font-medium", children: error })
2832
+ hint && /* @__PURE__ */ jsx33("p", { id: hintId, className: "text-muted-foreground text-xs", children: hint }),
2833
+ error && /* @__PURE__ */ jsx33("p", { id: errorId, role: "alert", className: "text-destructive text-xs font-medium", children: error })
2860
2834
  ] });
2861
2835
  }
2862
2836
 
@@ -2869,17 +2843,17 @@ import {
2869
2843
  Tooltip as TooltipPrimitive,
2870
2844
  TooltipTrigger as TooltipTriggerPrimitive
2871
2845
  } from "react-aria-components";
2872
- import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
2846
+ import { jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
2873
2847
  function TooltipTrigger({
2874
2848
  delay = 0,
2875
2849
  ...props
2876
2850
  }) {
2877
- return /* @__PURE__ */ jsx31(TooltipTriggerPrimitive, { "data-slot": "tooltip-trigger", delay, ...props });
2851
+ return /* @__PURE__ */ jsx34(TooltipTriggerPrimitive, { "data-slot": "tooltip-trigger", delay, ...props });
2878
2852
  }
2879
2853
  function Tooltip({ label, children, delay, ...props }) {
2880
2854
  return /* @__PURE__ */ jsxs17(TooltipTrigger, { delay, children: [
2881
2855
  children,
2882
- /* @__PURE__ */ jsx31(TooltipContent, { ...props, children: label })
2856
+ /* @__PURE__ */ jsx34(TooltipContent, { ...props, children: label })
2883
2857
  ] });
2884
2858
  }
2885
2859
  function TooltipContent({
@@ -2904,7 +2878,7 @@ function TooltipContent({
2904
2878
  ...props,
2905
2879
  children: [
2906
2880
  children,
2907
- /* @__PURE__ */ jsx31(
2881
+ /* @__PURE__ */ jsx34(
2908
2882
  OverlayArrow,
2909
2883
  {
2910
2884
  className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs",
@@ -2922,7 +2896,7 @@ function TooltipContent({
2922
2896
  }
2923
2897
 
2924
2898
  // src/ui/icon-button/icon-button.tsx
2925
- import { jsx as jsx32 } from "react/jsx-runtime";
2899
+ import { jsx as jsx35 } from "react/jsx-runtime";
2926
2900
  function IconButton({
2927
2901
  label,
2928
2902
  children,
@@ -2932,7 +2906,7 @@ function IconButton({
2932
2906
  ...props
2933
2907
  }) {
2934
2908
  const linkClassName = cn(buttonVariants({ variant, size: "icon" }), className);
2935
- return /* @__PURE__ */ jsx32(Tooltip, { label, children: href ? /* @__PURE__ */ jsx32(Link2, { "data-slot": "icon-button", "aria-label": label, href, className: linkClassName, children }) : /* @__PURE__ */ jsx32(
2909
+ return /* @__PURE__ */ jsx35(Tooltip, { label, children: href ? /* @__PURE__ */ jsx35(Link2, { "data-slot": "icon-button", "aria-label": label, href, className: linkClassName, children }) : /* @__PURE__ */ jsx35(
2936
2910
  Button,
2937
2911
  {
2938
2912
  "data-slot": "icon-button",
@@ -2952,9 +2926,9 @@ import { cva as cva10 } from "class-variance-authority";
2952
2926
  // src/ui/input/input.tsx
2953
2927
  import { forwardRef as forwardRef2 } from "react";
2954
2928
  import { Input as AriaInput2 } from "react-aria-components";
2955
- import { jsx as jsx33 } from "react/jsx-runtime";
2929
+ import { jsx as jsx36 } from "react/jsx-runtime";
2956
2930
  var InputImpl = forwardRef2(function Input2({ className, type, ...props }, ref) {
2957
- return /* @__PURE__ */ jsx33(
2931
+ return /* @__PURE__ */ jsx36(
2958
2932
  AriaInput2,
2959
2933
  {
2960
2934
  ref,
@@ -2975,9 +2949,9 @@ import { forwardRef as forwardRef3 } from "react";
2975
2949
  import {
2976
2950
  TextArea as AriaTextArea
2977
2951
  } from "react-aria-components";
2978
- import { jsx as jsx34 } from "react/jsx-runtime";
2952
+ import { jsx as jsx37 } from "react/jsx-runtime";
2979
2953
  var TextareaImpl = forwardRef3(function Textarea({ className, ...props }, ref) {
2980
- return /* @__PURE__ */ jsx34(
2954
+ return /* @__PURE__ */ jsx37(
2981
2955
  AriaTextArea,
2982
2956
  {
2983
2957
  ref,
@@ -3010,11 +2984,11 @@ var inputGroupAddonVariants = cva9(
3010
2984
  );
3011
2985
 
3012
2986
  // src/ui/input-group/input-group.tsx
3013
- import { jsx as jsx35 } from "react/jsx-runtime";
2987
+ import { jsx as jsx38 } from "react/jsx-runtime";
3014
2988
  function InputGroup({ className, ...props }) {
3015
2989
  return (
3016
2990
  // biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.
3017
- /* @__PURE__ */ jsx35(
2991
+ /* @__PURE__ */ jsx38(
3018
2992
  "div",
3019
2993
  {
3020
2994
  role: "group",
@@ -3036,7 +3010,7 @@ function InputGroupAddon({
3036
3010
  }) {
3037
3011
  return (
3038
3012
  // biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.
3039
- /* @__PURE__ */ jsx35(
3013
+ /* @__PURE__ */ jsx38(
3040
3014
  "div",
3041
3015
  {
3042
3016
  role: "group",
@@ -3067,7 +3041,7 @@ function InputGroupButton({
3067
3041
  ...props
3068
3042
  }) {
3069
3043
  const buttonSize = size === "icon-xs" || size === "icon-sm" ? size : size;
3070
- return /* @__PURE__ */ jsx35(
3044
+ return /* @__PURE__ */ jsx38(
3071
3045
  Button,
3072
3046
  {
3073
3047
  "data-slot": "input-group-button",
@@ -3080,7 +3054,7 @@ function InputGroupButton({
3080
3054
  );
3081
3055
  }
3082
3056
  function InputGroupText({ className, ...props }) {
3083
- return /* @__PURE__ */ jsx35(
3057
+ return /* @__PURE__ */ jsx38(
3084
3058
  "span",
3085
3059
  {
3086
3060
  "data-slot": "input-group-text",
@@ -3093,7 +3067,7 @@ function InputGroupText({ className, ...props }) {
3093
3067
  );
3094
3068
  }
3095
3069
  function InputGroupInput({ className, ...props }) {
3096
- return /* @__PURE__ */ jsx35(
3070
+ return /* @__PURE__ */ jsx38(
3097
3071
  Input3,
3098
3072
  {
3099
3073
  "data-slot": "input-group-control",
@@ -3106,7 +3080,7 @@ function InputGroupInput({ className, ...props }) {
3106
3080
  );
3107
3081
  }
3108
3082
  function InputGroupTextarea({ className, ...props }) {
3109
- return /* @__PURE__ */ jsx35(
3083
+ return /* @__PURE__ */ jsx38(
3110
3084
  Textarea2,
3111
3085
  {
3112
3086
  "data-slot": "input-group-control",
@@ -3120,7 +3094,7 @@ function InputGroupTextarea({ className, ...props }) {
3120
3094
  }
3121
3095
 
3122
3096
  // src/ui/kanban/kanban.tsx
3123
- import { jsx as jsx36 } from "react/jsx-runtime";
3097
+ import { jsx as jsx39 } from "react/jsx-runtime";
3124
3098
  var columnSize = {
3125
3099
  compact: "w-56",
3126
3100
  default: "w-72",
@@ -3132,13 +3106,13 @@ function KanbanViewport({
3132
3106
  contentClassName,
3133
3107
  ...props
3134
3108
  }) {
3135
- return /* @__PURE__ */ jsx36(
3109
+ return /* @__PURE__ */ jsx39(
3136
3110
  "div",
3137
3111
  {
3138
3112
  "data-slot": "kanban-viewport",
3139
3113
  className: cn("-mx-1 overflow-x-auto pb-3", className),
3140
3114
  ...props,
3141
- children: /* @__PURE__ */ jsx36(
3115
+ children: /* @__PURE__ */ jsx39(
3142
3116
  "div",
3143
3117
  {
3144
3118
  "data-slot": "kanban-viewport-content",
@@ -3154,7 +3128,7 @@ function KanbanColumn({
3154
3128
  size = "default",
3155
3129
  ...props
3156
3130
  }) {
3157
- return /* @__PURE__ */ jsx36(
3131
+ return /* @__PURE__ */ jsx39(
3158
3132
  "section",
3159
3133
  {
3160
3134
  "data-slot": "kanban-column",
@@ -3165,7 +3139,7 @@ function KanbanColumn({
3165
3139
  );
3166
3140
  }
3167
3141
  function KanbanColumnHeader({ className, ...props }) {
3168
- return /* @__PURE__ */ jsx36(
3142
+ return /* @__PURE__ */ jsx39(
3169
3143
  "header",
3170
3144
  {
3171
3145
  "data-slot": "kanban-column-header",
@@ -3175,7 +3149,7 @@ function KanbanColumnHeader({ className, ...props }) {
3175
3149
  );
3176
3150
  }
3177
3151
  function KanbanColumnTitle({ className, ...props }) {
3178
- return /* @__PURE__ */ jsx36(
3152
+ return /* @__PURE__ */ jsx39(
3179
3153
  "span",
3180
3154
  {
3181
3155
  "data-slot": "kanban-column-title",
@@ -3188,14 +3162,14 @@ function KanbanColumnTitle({ className, ...props }) {
3188
3162
  );
3189
3163
  }
3190
3164
  function KanbanColumnBody({ className, ...props }) {
3191
- return /* @__PURE__ */ jsx36("div", { "data-slot": "kanban-column-body", className: cn("space-y-2", className), ...props });
3165
+ return /* @__PURE__ */ jsx39("div", { "data-slot": "kanban-column-body", className: cn("space-y-2", className), ...props });
3192
3166
  }
3193
3167
  function KanbanEmpty({
3194
3168
  className,
3195
3169
  compact = false,
3196
3170
  ...props
3197
3171
  }) {
3198
- return /* @__PURE__ */ jsx36(
3172
+ return /* @__PURE__ */ jsx39(
3199
3173
  "p",
3200
3174
  {
3201
3175
  "data-slot": "kanban-empty",
@@ -3211,9 +3185,9 @@ function KanbanEmpty({
3211
3185
  }
3212
3186
 
3213
3187
  // src/ui/kbd/kbd.tsx
3214
- import { jsx as jsx37 } from "react/jsx-runtime";
3188
+ import { jsx as jsx40 } from "react/jsx-runtime";
3215
3189
  function Kbd({ className, ...props }) {
3216
- return /* @__PURE__ */ jsx37(
3190
+ return /* @__PURE__ */ jsx40(
3217
3191
  "kbd",
3218
3192
  {
3219
3193
  "data-slot": "kbd",
@@ -3226,7 +3200,7 @@ function Kbd({ className, ...props }) {
3226
3200
  );
3227
3201
  }
3228
3202
  function KbdGroup({ className, ...props }) {
3229
- return /* @__PURE__ */ jsx37(
3203
+ return /* @__PURE__ */ jsx40(
3230
3204
  "span",
3231
3205
  {
3232
3206
  "data-slot": "kbd-group",
@@ -3238,13 +3212,13 @@ function KbdGroup({ className, ...props }) {
3238
3212
 
3239
3213
  // src/ui/loading-overlay/loading-overlay.tsx
3240
3214
  import { LoaderCircle as LoaderCircle2 } from "lucide-react";
3241
- import { jsx as jsx38, jsxs as jsxs18 } from "react/jsx-runtime";
3215
+ import { jsx as jsx41, jsxs as jsxs18 } from "react/jsx-runtime";
3242
3216
  function LoadingOverlay({
3243
3217
  label = "Cargando",
3244
3218
  className,
3245
3219
  ...props
3246
3220
  }) {
3247
- return /* @__PURE__ */ jsx38(
3221
+ return /* @__PURE__ */ jsx41(
3248
3222
  "output",
3249
3223
  {
3250
3224
  "aria-live": "polite",
@@ -3254,8 +3228,8 @@ function LoadingOverlay({
3254
3228
  ),
3255
3229
  ...props,
3256
3230
  children: /* @__PURE__ */ jsxs18("div", { className: "border-border bg-background flex items-center gap-2 rounded-lg border px-3 py-2 text-sm shadow-sm", children: [
3257
- /* @__PURE__ */ jsx38(LoaderCircle2, { className: "motion-safe:animate-spin", "aria-hidden": "true" }),
3258
- /* @__PURE__ */ jsx38("span", { children: label })
3231
+ /* @__PURE__ */ jsx41(LoaderCircle2, { className: "motion-safe:animate-spin", "aria-hidden": "true" }),
3232
+ /* @__PURE__ */ jsx41("span", { children: label })
3259
3233
  ] })
3260
3234
  }
3261
3235
  );
@@ -3268,10 +3242,10 @@ import {
3268
3242
  MenuTrigger as AriaMenuTrigger,
3269
3243
  Popover as Popover3
3270
3244
  } from "react-aria-components";
3271
- import { jsx as jsx39 } from "react/jsx-runtime";
3245
+ import { jsx as jsx42 } from "react/jsx-runtime";
3272
3246
  var MenuTrigger = AriaMenuTrigger;
3273
3247
  function MenuContent({ className, ...props }) {
3274
- return /* @__PURE__ */ jsx39(
3248
+ return /* @__PURE__ */ jsx42(
3275
3249
  Popover3,
3276
3250
  {
3277
3251
  "data-slot": "menu-content",
@@ -3285,10 +3259,10 @@ function MenuContent({ className, ...props }) {
3285
3259
  );
3286
3260
  }
3287
3261
  function Menu({ className, ...props }) {
3288
- return /* @__PURE__ */ jsx39(AriaMenu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
3262
+ return /* @__PURE__ */ jsx42(AriaMenu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
3289
3263
  }
3290
3264
  function MenuItem({ className, children, ...props }) {
3291
- return /* @__PURE__ */ jsx39(
3265
+ return /* @__PURE__ */ jsx42(
3292
3266
  AriaMenuItem,
3293
3267
  {
3294
3268
  "data-slot": "menu-item",
@@ -3303,7 +3277,7 @@ function MenuItem({ className, children, ...props }) {
3303
3277
  }
3304
3278
 
3305
3279
  // src/ui/metric-card/metric-card.tsx
3306
- import { jsx as jsx40, jsxs as jsxs19 } from "react/jsx-runtime";
3280
+ import { jsx as jsx43, jsxs as jsxs19 } from "react/jsx-runtime";
3307
3281
  function MetricCard({
3308
3282
  className,
3309
3283
  label,
@@ -3317,7 +3291,7 @@ function MetricCard({
3317
3291
  loadingLabel = "Cargando m\xE9trica",
3318
3292
  ...props
3319
3293
  }) {
3320
- return /* @__PURE__ */ jsx40(
3294
+ return /* @__PURE__ */ jsx43(
3321
3295
  Card,
3322
3296
  {
3323
3297
  "data-slot": "metric-card",
@@ -3327,15 +3301,15 @@ function MetricCard({
3327
3301
  className: cn("min-w-0", className),
3328
3302
  ...props,
3329
3303
  children: /* @__PURE__ */ jsxs19(CardContent, { className: "flex items-start gap-3", children: [
3330
- icon ? /* @__PURE__ */ jsx40("div", { "data-slot": "metric-card-icon", className: "text-muted-foreground shrink-0", children: icon }) : null,
3304
+ icon ? /* @__PURE__ */ jsx43("div", { "data-slot": "metric-card-icon", className: "text-muted-foreground shrink-0", children: icon }) : null,
3331
3305
  /* @__PURE__ */ jsxs19("div", { className: "min-w-0", children: [
3332
- /* @__PURE__ */ jsx40("p", { "data-slot": "metric-card-label", className: "text-muted-foreground text-sm", children: label }),
3333
- /* @__PURE__ */ jsx40(
3306
+ /* @__PURE__ */ jsx43("p", { "data-slot": "metric-card-label", className: "text-muted-foreground text-sm", children: label }),
3307
+ /* @__PURE__ */ jsx43(
3334
3308
  "strong",
3335
3309
  {
3336
3310
  "data-slot": "metric-card-value",
3337
3311
  className: "mt-1 block text-2xl font-semibold tracking-tight",
3338
- children: loading ? /* @__PURE__ */ jsx40(
3312
+ children: loading ? /* @__PURE__ */ jsx43(
3339
3313
  "span",
3340
3314
  {
3341
3315
  "data-slot": "metric-card-loading",
@@ -3345,7 +3319,7 @@ function MetricCard({
3345
3319
  ) : value
3346
3320
  }
3347
3321
  ),
3348
- delta ? /* @__PURE__ */ jsx40(
3322
+ delta ? /* @__PURE__ */ jsx43(
3349
3323
  "span",
3350
3324
  {
3351
3325
  "data-slot": "metric-card-delta",
@@ -3358,13 +3332,26 @@ function MetricCard({
3358
3332
  children: delta
3359
3333
  }
3360
3334
  ) : null,
3361
- description ? /* @__PURE__ */ jsx40("p", { "data-slot": "metric-card-description", className: "text-muted-foreground mt-1 text-xs", children: description }) : null
3335
+ description ? /* @__PURE__ */ jsx43("p", { "data-slot": "metric-card-description", className: "text-muted-foreground mt-1 text-xs", children: description }) : null
3362
3336
  ] })
3363
3337
  ] })
3364
3338
  }
3365
3339
  );
3366
3340
  }
3367
3341
 
3342
+ // src/ui/metric-grid/metric-grid.tsx
3343
+ import { jsx as jsx44 } from "react/jsx-runtime";
3344
+ function MetricGrid({ className, ...props }) {
3345
+ return /* @__PURE__ */ jsx44(
3346
+ "div",
3347
+ {
3348
+ "data-slot": "metric-grid",
3349
+ className: cn("grid gap-4 sm:grid-cols-2 xl:grid-cols-4", className),
3350
+ ...props
3351
+ }
3352
+ );
3353
+ }
3354
+
3368
3355
  // src/ui/otp-input/otp-input.tsx
3369
3356
  import {
3370
3357
  forwardRef as forwardRef4,
@@ -3373,7 +3360,7 @@ import {
3373
3360
  useState as useState12
3374
3361
  } from "react";
3375
3362
  import { Input as AriaInput3 } from "react-aria-components";
3376
- import { jsx as jsx41, jsxs as jsxs20 } from "react/jsx-runtime";
3363
+ import { jsx as jsx45, jsxs as jsxs20 } from "react/jsx-runtime";
3377
3364
  function normalizeOtp(value, length) {
3378
3365
  return value.replace(/[^0-9]/g, "").slice(0, length);
3379
3366
  }
@@ -3435,7 +3422,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
3435
3422
  style: { gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` },
3436
3423
  onPointerDown: handlePointerDown,
3437
3424
  children: [
3438
- /* @__PURE__ */ jsx41(
3425
+ /* @__PURE__ */ jsx45(
3439
3426
  AriaInput3,
3440
3427
  {
3441
3428
  ...props,
@@ -3475,7 +3462,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
3475
3462
  }
3476
3463
  }
3477
3464
  ),
3478
- slots.map((slot, index) => /* @__PURE__ */ jsx41(
3465
+ slots.map((slot, index) => /* @__PURE__ */ jsx45(
3479
3466
  "span",
3480
3467
  {
3481
3468
  "aria-hidden": "true",
@@ -3498,9 +3485,9 @@ var OtpInputImpl = forwardRef4(function OtpInput({
3498
3485
  var OtpInput2 = OtpInputImpl;
3499
3486
 
3500
3487
  // src/ui/page-header/page-header.tsx
3501
- import { jsx as jsx42 } from "react/jsx-runtime";
3488
+ import { jsx as jsx46 } from "react/jsx-runtime";
3502
3489
  function PageHeader({ className, ...props }) {
3503
- return /* @__PURE__ */ jsx42(
3490
+ return /* @__PURE__ */ jsx46(
3504
3491
  "header",
3505
3492
  {
3506
3493
  "data-slot": "page-header",
@@ -3513,10 +3500,10 @@ function PageHeader({ className, ...props }) {
3513
3500
  );
3514
3501
  }
3515
3502
  function PageHeaderHeading({ className, ...props }) {
3516
- return /* @__PURE__ */ jsx42("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
3503
+ return /* @__PURE__ */ jsx46("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
3517
3504
  }
3518
3505
  function PageHeaderTitle({ className, children, ...props }) {
3519
- return /* @__PURE__ */ jsx42(
3506
+ return /* @__PURE__ */ jsx46(
3520
3507
  "h1",
3521
3508
  {
3522
3509
  "data-slot": "page-header-title",
@@ -3527,7 +3514,7 @@ function PageHeaderTitle({ className, children, ...props }) {
3527
3514
  );
3528
3515
  }
3529
3516
  function PageHeaderDescription({ className, ...props }) {
3530
- return /* @__PURE__ */ jsx42(
3517
+ return /* @__PURE__ */ jsx46(
3531
3518
  "p",
3532
3519
  {
3533
3520
  "data-slot": "page-header-description",
@@ -3537,7 +3524,7 @@ function PageHeaderDescription({ className, ...props }) {
3537
3524
  );
3538
3525
  }
3539
3526
  function PageHeaderActions({ className, ...props }) {
3540
- return /* @__PURE__ */ jsx42(
3527
+ return /* @__PURE__ */ jsx46(
3541
3528
  "div",
3542
3529
  {
3543
3530
  "data-slot": "page-header-actions",
@@ -3547,7 +3534,7 @@ function PageHeaderActions({ className, ...props }) {
3547
3534
  );
3548
3535
  }
3549
3536
  function SectionHeader({ className, ...props }) {
3550
- return /* @__PURE__ */ jsx42(
3537
+ return /* @__PURE__ */ jsx46(
3551
3538
  "div",
3552
3539
  {
3553
3540
  "data-slot": "section-header",
@@ -3557,10 +3544,10 @@ function SectionHeader({ className, ...props }) {
3557
3544
  );
3558
3545
  }
3559
3546
  function SectionHeaderHeading({ className, ...props }) {
3560
- return /* @__PURE__ */ jsx42("div", { "data-slot": "section-header-heading", className: cn("min-w-0", className), ...props });
3547
+ return /* @__PURE__ */ jsx46("div", { "data-slot": "section-header-heading", className: cn("min-w-0", className), ...props });
3561
3548
  }
3562
3549
  function SectionHeaderTitle({ className, ...props }) {
3563
- return /* @__PURE__ */ jsx42(
3550
+ return /* @__PURE__ */ jsx46(
3564
3551
  "h2",
3565
3552
  {
3566
3553
  "data-slot": "section-header-title",
@@ -3570,7 +3557,7 @@ function SectionHeaderTitle({ className, ...props }) {
3570
3557
  );
3571
3558
  }
3572
3559
  function SectionHeaderDescription({ className, ...props }) {
3573
- return /* @__PURE__ */ jsx42(
3560
+ return /* @__PURE__ */ jsx46(
3574
3561
  "p",
3575
3562
  {
3576
3563
  "data-slot": "section-header-description",
@@ -3580,7 +3567,7 @@ function SectionHeaderDescription({ className, ...props }) {
3580
3567
  );
3581
3568
  }
3582
3569
  function SectionHeaderActions({ className, ...props }) {
3583
- return /* @__PURE__ */ jsx42(
3570
+ return /* @__PURE__ */ jsx46(
3584
3571
  "div",
3585
3572
  {
3586
3573
  "data-slot": "section-header-actions",
@@ -3593,7 +3580,7 @@ function SectionHeaderActions({ className, ...props }) {
3593
3580
  // src/ui/pagination/pagination.tsx
3594
3581
  import { ChevronLeft, ChevronRight } from "lucide-react";
3595
3582
  import * as React6 from "react";
3596
- import { jsx as jsx43, jsxs as jsxs21 } from "react/jsx-runtime";
3583
+ import { jsx as jsx47, jsxs as jsxs21 } from "react/jsx-runtime";
3597
3584
  function visiblePages(page, pageCount, siblingCount) {
3598
3585
  return [
3599
3586
  .../* @__PURE__ */ new Set([
@@ -3629,9 +3616,9 @@ function Pagination({
3629
3616
  "aria-label": ariaLabel,
3630
3617
  className: cn("flex flex-wrap items-center justify-between gap-4", className),
3631
3618
  children: [
3632
- /* @__PURE__ */ jsx43("p", { className: "text-muted-foreground text-sm", children: summary ?? `P\xE1gina ${currentPage} de ${totalPages}` }),
3619
+ /* @__PURE__ */ jsx47("p", { className: "text-muted-foreground text-sm", children: summary ?? `P\xE1gina ${currentPage} de ${totalPages}` }),
3633
3620
  /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-1", children: [
3634
- /* @__PURE__ */ jsx43(
3621
+ /* @__PURE__ */ jsx47(
3635
3622
  Button,
3636
3623
  {
3637
3624
  "aria-label": "P\xE1gina anterior",
@@ -3639,14 +3626,14 @@ function Pagination({
3639
3626
  onPress: () => onPageChange(currentPage - 1),
3640
3627
  size: "icon",
3641
3628
  variant: "ghost",
3642
- children: /* @__PURE__ */ jsx43(ChevronLeft, {})
3629
+ children: /* @__PURE__ */ jsx47(ChevronLeft, {})
3643
3630
  }
3644
3631
  ),
3645
3632
  pages.map((item, index) => {
3646
3633
  const previousPage = pages[index - 1];
3647
3634
  return /* @__PURE__ */ jsxs21(React6.Fragment, { children: [
3648
- previousPage !== void 0 && item > previousPage + 1 ? /* @__PURE__ */ jsx43("span", { "aria-hidden": "true", className: "text-muted-foreground px-1", children: "\u2026" }) : null,
3649
- /* @__PURE__ */ jsx43(
3635
+ previousPage !== void 0 && item > previousPage + 1 ? /* @__PURE__ */ jsx47("span", { "aria-hidden": "true", className: "text-muted-foreground px-1", children: "\u2026" }) : null,
3636
+ /* @__PURE__ */ jsx47(
3650
3637
  Button,
3651
3638
  {
3652
3639
  "aria-current": item === currentPage ? "page" : void 0,
@@ -3659,7 +3646,7 @@ function Pagination({
3659
3646
  )
3660
3647
  ] }, item);
3661
3648
  }),
3662
- /* @__PURE__ */ jsx43(
3649
+ /* @__PURE__ */ jsx47(
3663
3650
  Button,
3664
3651
  {
3665
3652
  "aria-label": "P\xE1gina siguiente",
@@ -3667,7 +3654,7 @@ function Pagination({
3667
3654
  onPress: () => onPageChange(currentPage + 1),
3668
3655
  size: "icon",
3669
3656
  variant: "ghost",
3670
- children: /* @__PURE__ */ jsx43(ChevronRight, {})
3657
+ children: /* @__PURE__ */ jsx47(ChevronRight, {})
3671
3658
  }
3672
3659
  )
3673
3660
  ] })
@@ -3681,10 +3668,10 @@ import {
3681
3668
  DialogTrigger as AriaDialogTrigger,
3682
3669
  Popover as AriaPopover
3683
3670
  } from "react-aria-components";
3684
- import { jsx as jsx44, jsxs as jsxs22 } from "react/jsx-runtime";
3671
+ import { jsx as jsx48, jsxs as jsxs22 } from "react/jsx-runtime";
3685
3672
  var PopoverTrigger = AriaDialogTrigger;
3686
3673
  function PopoverContent({ className, ...props }) {
3687
- return /* @__PURE__ */ jsx44(
3674
+ return /* @__PURE__ */ jsx48(
3688
3675
  AriaPopover,
3689
3676
  {
3690
3677
  "data-slot": "popover",
@@ -3699,12 +3686,12 @@ function PopoverContent({ className, ...props }) {
3699
3686
  );
3700
3687
  }
3701
3688
  function Popover4(props) {
3702
- if (!("trigger" in props)) return /* @__PURE__ */ jsx44(PopoverContent, { ...props });
3689
+ if (!("trigger" in props)) return /* @__PURE__ */ jsx48(PopoverContent, { ...props });
3703
3690
  const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
3704
- const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx44(Button, { ...triggerProps, children: trigger }) : trigger;
3691
+ const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ jsx48(Button, { ...triggerProps, children: trigger }) : trigger;
3705
3692
  return /* @__PURE__ */ jsxs22(PopoverTrigger, { defaultOpen, isOpen, onOpenChange, children: [
3706
3693
  triggerElement,
3707
- /* @__PURE__ */ jsx44(PopoverContent, { ...contentProps, children })
3694
+ /* @__PURE__ */ jsx48(PopoverContent, { ...contentProps, children })
3708
3695
  ] });
3709
3696
  }
3710
3697
 
@@ -3716,7 +3703,7 @@ import {
3716
3703
  Input as AriaInput4,
3717
3704
  NumberField as AriaNumberField
3718
3705
  } from "react-aria-components";
3719
- import { jsx as jsx45, jsxs as jsxs23 } from "react/jsx-runtime";
3706
+ import { jsx as jsx49, jsxs as jsxs23 } from "react/jsx-runtime";
3720
3707
  function QuantityInput({
3721
3708
  className,
3722
3709
  inputClassName,
@@ -3726,7 +3713,7 @@ function QuantityInput({
3726
3713
  step = 1,
3727
3714
  ...props
3728
3715
  }) {
3729
- return /* @__PURE__ */ jsx45(
3716
+ return /* @__PURE__ */ jsx49(
3730
3717
  AriaNumberField,
3731
3718
  {
3732
3719
  ...props,
@@ -3743,17 +3730,17 @@ function QuantityInput({
3743
3730
  "data-slot": "quantity-input-group",
3744
3731
  className: "border-border bg-background text-foreground focus-within:border-ring focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border transition-[border-color,box-shadow] focus-within:ring-3",
3745
3732
  children: [
3746
- /* @__PURE__ */ jsx45(
3733
+ /* @__PURE__ */ jsx49(
3747
3734
  AriaButton,
3748
3735
  {
3749
3736
  slot: "decrement",
3750
3737
  "aria-label": decrementAriaLabel,
3751
3738
  "data-slot": "quantity-input-decrement",
3752
3739
  className: "border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-r transition-colors outline-none data-disabled:pointer-events-none",
3753
- children: /* @__PURE__ */ jsx45(Minus2, { "aria-hidden": "true", className: "size-4" })
3740
+ children: /* @__PURE__ */ jsx49(Minus2, { "aria-hidden": "true", className: "size-4" })
3754
3741
  }
3755
3742
  ),
3756
- /* @__PURE__ */ jsx45(
3743
+ /* @__PURE__ */ jsx49(
3757
3744
  AriaInput4,
3758
3745
  {
3759
3746
  "data-slot": "quantity-input-value",
@@ -3763,14 +3750,14 @@ function QuantityInput({
3763
3750
  )
3764
3751
  }
3765
3752
  ),
3766
- /* @__PURE__ */ jsx45(
3753
+ /* @__PURE__ */ jsx49(
3767
3754
  AriaButton,
3768
3755
  {
3769
3756
  slot: "increment",
3770
3757
  "aria-label": incrementAriaLabel,
3771
3758
  "data-slot": "quantity-input-increment",
3772
3759
  className: "border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-l transition-colors outline-none data-disabled:pointer-events-none",
3773
- children: /* @__PURE__ */ jsx45(Plus, { "aria-hidden": "true", className: "size-4" })
3760
+ children: /* @__PURE__ */ jsx49(Plus, { "aria-hidden": "true", className: "size-4" })
3774
3761
  }
3775
3762
  )
3776
3763
  ]
@@ -3790,10 +3777,10 @@ import {
3790
3777
  ListBoxItem as ListBoxItem3,
3791
3778
  Popover as Popover5
3792
3779
  } from "react-aria-components";
3793
- import { Fragment as Fragment8, jsx as jsx46, jsxs as jsxs24 } from "react/jsx-runtime";
3780
+ import { Fragment as Fragment8, jsx as jsx50, jsxs as jsxs24 } from "react/jsx-runtime";
3794
3781
  var Select = AriaSelect;
3795
3782
  function SelectTrigger({ className, children, ...props }) {
3796
- return /* @__PURE__ */ jsx46(
3783
+ return /* @__PURE__ */ jsx50(
3797
3784
  AriaButton2,
3798
3785
  {
3799
3786
  "data-slot": "select-trigger",
@@ -3804,7 +3791,7 @@ function SelectTrigger({ className, children, ...props }) {
3804
3791
  ...props,
3805
3792
  children: (state) => /* @__PURE__ */ jsxs24(Fragment8, { children: [
3806
3793
  typeof children === "function" ? children(state) : children,
3807
- /* @__PURE__ */ jsx46(
3794
+ /* @__PURE__ */ jsx50(
3808
3795
  ChevronDown2,
3809
3796
  {
3810
3797
  "aria-hidden": "true",
@@ -3816,7 +3803,7 @@ function SelectTrigger({ className, children, ...props }) {
3816
3803
  );
3817
3804
  }
3818
3805
  function SelectValue({ className, ...props }) {
3819
- return /* @__PURE__ */ jsx46(
3806
+ return /* @__PURE__ */ jsx50(
3820
3807
  AriaSelectValue,
3821
3808
  {
3822
3809
  "data-slot": "select-value",
@@ -3826,7 +3813,7 @@ function SelectValue({ className, ...props }) {
3826
3813
  );
3827
3814
  }
3828
3815
  function SelectContent({ className, ...props }) {
3829
- return /* @__PURE__ */ jsx46(
3816
+ return /* @__PURE__ */ jsx50(
3830
3817
  Popover5,
3831
3818
  {
3832
3819
  "data-slot": "select-content",
@@ -3840,7 +3827,7 @@ function SelectContent({ className, ...props }) {
3840
3827
  );
3841
3828
  }
3842
3829
  function SelectList({ className, ...props }) {
3843
- return /* @__PURE__ */ jsx46(
3830
+ return /* @__PURE__ */ jsx50(
3844
3831
  ListBox3,
3845
3832
  {
3846
3833
  "data-slot": "select-list",
@@ -3854,7 +3841,7 @@ function SelectItem({
3854
3841
  children,
3855
3842
  ...props
3856
3843
  }) {
3857
- return /* @__PURE__ */ jsx46(
3844
+ return /* @__PURE__ */ jsx50(
3858
3845
  ListBoxItem3,
3859
3846
  {
3860
3847
  "data-slot": "select-item",
@@ -3868,6 +3855,34 @@ function SelectItem({
3868
3855
  );
3869
3856
  }
3870
3857
 
3858
+ // src/ui/selection-toolbar/selection-toolbar.tsx
3859
+ import { jsx as jsx51, jsxs as jsxs25 } from "react/jsx-runtime";
3860
+ function SelectionToolbar({
3861
+ count,
3862
+ className,
3863
+ children,
3864
+ ...props
3865
+ }) {
3866
+ return /* @__PURE__ */ jsxs25(
3867
+ "div",
3868
+ {
3869
+ "data-slot": "selection-toolbar",
3870
+ className: cn(
3871
+ "flex flex-wrap items-center justify-between gap-2 rounded-lg border bg-muted/40 p-2",
3872
+ className
3873
+ ),
3874
+ ...props,
3875
+ children: [
3876
+ /* @__PURE__ */ jsxs25("output", { "aria-live": "polite", className: "text-sm font-medium", children: [
3877
+ count,
3878
+ " seleccionados"
3879
+ ] }),
3880
+ /* @__PURE__ */ jsx51("div", { className: "flex items-center gap-2", children })
3881
+ ]
3882
+ }
3883
+ );
3884
+ }
3885
+
3871
3886
  // src/ui/sidebar/sidebar.tsx
3872
3887
  import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight2, Ellipsis, Search } from "lucide-react";
3873
3888
  import { useCallback as useCallback8, useMemo as useMemo2, useState as useState13 } from "react";
@@ -3883,7 +3898,7 @@ function useSidebar() {
3883
3898
  }
3884
3899
 
3885
3900
  // src/ui/sidebar/sidebar.tsx
3886
- import { Fragment as Fragment9, jsx as jsx47, jsxs as jsxs25 } from "react/jsx-runtime";
3901
+ import { Fragment as Fragment9, jsx as jsx52, jsxs as jsxs26 } from "react/jsx-runtime";
3887
3902
  function SidebarProvider({
3888
3903
  defaultCollapsed = false,
3889
3904
  collapsed: controlledCollapsed,
@@ -3908,11 +3923,11 @@ function SidebarProvider({
3908
3923
  }),
3909
3924
  [collapsed, setCollapsed, toggle]
3910
3925
  );
3911
- return /* @__PURE__ */ jsx47(SidebarContext.Provider, { value, children });
3926
+ return /* @__PURE__ */ jsx52(SidebarContext.Provider, { value, children });
3912
3927
  }
3913
3928
  function Sidebar({ className, ...props }) {
3914
3929
  const { collapsed } = useSidebar();
3915
- return /* @__PURE__ */ jsx47(
3930
+ return /* @__PURE__ */ jsx52(
3916
3931
  "aside",
3917
3932
  {
3918
3933
  "data-slot": "sidebar",
@@ -3926,7 +3941,7 @@ function Sidebar({ className, ...props }) {
3926
3941
  );
3927
3942
  }
3928
3943
  function SidebarHeader({ className, ...props }) {
3929
- return /* @__PURE__ */ jsx47(
3944
+ return /* @__PURE__ */ jsx52(
3930
3945
  "div",
3931
3946
  {
3932
3947
  "data-slot": "sidebar-header",
@@ -3941,7 +3956,7 @@ function SidebarSearch({
3941
3956
  className,
3942
3957
  ...props
3943
3958
  }) {
3944
- return /* @__PURE__ */ jsxs25(
3959
+ return /* @__PURE__ */ jsxs26(
3945
3960
  "button",
3946
3961
  {
3947
3962
  type: "button",
@@ -3952,15 +3967,15 @@ function SidebarSearch({
3952
3967
  ),
3953
3968
  ...props,
3954
3969
  children: [
3955
- /* @__PURE__ */ jsx47(Search, { className: "size-4 shrink-0" }),
3956
- /* @__PURE__ */ jsx47("span", { className: "flex-1 text-left", children: label }),
3957
- /* @__PURE__ */ jsx47("kbd", { className: "bg-secondary text-muted-foreground rounded px-1.5 py-0.5 font-mono text-[10px]", children: shortcut })
3970
+ /* @__PURE__ */ jsx52(Search, { className: "size-4 shrink-0" }),
3971
+ /* @__PURE__ */ jsx52("span", { className: "flex-1 text-left", children: label }),
3972
+ /* @__PURE__ */ jsx52("kbd", { className: "bg-secondary text-muted-foreground rounded px-1.5 py-0.5 font-mono text-[10px]", children: shortcut })
3958
3973
  ]
3959
3974
  }
3960
3975
  );
3961
3976
  }
3962
3977
  function SidebarContent({ className, ...props }) {
3963
- return /* @__PURE__ */ jsx47(
3978
+ return /* @__PURE__ */ jsx52(
3964
3979
  "nav",
3965
3980
  {
3966
3981
  "data-slot": "sidebar-content",
@@ -3971,7 +3986,7 @@ function SidebarContent({ className, ...props }) {
3971
3986
  );
3972
3987
  }
3973
3988
  function SidebarFooter({ className, ...props }) {
3974
- return /* @__PURE__ */ jsx47(
3989
+ return /* @__PURE__ */ jsx52(
3975
3990
  "div",
3976
3991
  {
3977
3992
  "data-slot": "sidebar-footer",
@@ -3987,8 +4002,8 @@ function SidebarGroup({
3987
4002
  ...props
3988
4003
  }) {
3989
4004
  const { collapsed } = useSidebar();
3990
- return /* @__PURE__ */ jsxs25("section", { "data-slot": "sidebar-group", className: cn("mb-4 last:mb-0", className), ...props, children: [
3991
- label && /* @__PURE__ */ jsx47(
4005
+ return /* @__PURE__ */ jsxs26("section", { "data-slot": "sidebar-group", className: cn("mb-4 last:mb-0", className), ...props, children: [
4006
+ label && /* @__PURE__ */ jsx52(
3992
4007
  "h2",
3993
4008
  {
3994
4009
  className: cn(
@@ -4012,7 +4027,7 @@ function SidebarItem({
4012
4027
  }) {
4013
4028
  const { collapsed } = useSidebar();
4014
4029
  const content = typeof children === "function" ? label : children ?? label;
4015
- return /* @__PURE__ */ jsx47(
4030
+ return /* @__PURE__ */ jsx52(
4016
4031
  Link3,
4017
4032
  {
4018
4033
  "data-slot": "sidebar-item",
@@ -4024,16 +4039,16 @@ function SidebarItem({
4024
4039
  typeof className === "function" ? className : className
4025
4040
  ),
4026
4041
  ...props,
4027
- children: (values) => /* @__PURE__ */ jsxs25(Fragment9, { children: [
4028
- /* @__PURE__ */ jsx47("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
4029
- /* @__PURE__ */ jsx47("span", { className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"), children: typeof children === "function" ? children(values) : content }),
4030
- badge && !collapsed && /* @__PURE__ */ jsx47("span", { className: "text-muted-foreground text-xs", children: badge })
4042
+ children: (values) => /* @__PURE__ */ jsxs26(Fragment9, { children: [
4043
+ /* @__PURE__ */ jsx52("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
4044
+ /* @__PURE__ */ jsx52("span", { className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"), children: typeof children === "function" ? children(values) : content }),
4045
+ badge && !collapsed && /* @__PURE__ */ jsx52("span", { className: "text-muted-foreground text-xs", children: badge })
4031
4046
  ] })
4032
4047
  }
4033
4048
  );
4034
4049
  }
4035
4050
  function SidebarSeparator({ className, ...props }) {
4036
- return /* @__PURE__ */ jsx47(
4051
+ return /* @__PURE__ */ jsx52(
4037
4052
  "hr",
4038
4053
  {
4039
4054
  "data-slot": "sidebar-separator",
@@ -4045,7 +4060,7 @@ function SidebarSeparator({ className, ...props }) {
4045
4060
  function SidebarTrigger({ className, ...props }) {
4046
4061
  const { collapsed, toggle } = useSidebar();
4047
4062
  const { onPress, ...buttonProps } = props;
4048
- return /* @__PURE__ */ jsx47(
4063
+ return /* @__PURE__ */ jsx52(
4049
4064
  Button,
4050
4065
  {
4051
4066
  "aria-label": collapsed ? "Expandir navegaci\xF3n" : "Colapsar navegaci\xF3n",
@@ -4057,14 +4072,14 @@ function SidebarTrigger({ className, ...props }) {
4057
4072
  variant: "ghost",
4058
4073
  className: cn("ml-auto", className),
4059
4074
  ...buttonProps,
4060
- children: collapsed ? /* @__PURE__ */ jsx47(ChevronRight2, {}) : /* @__PURE__ */ jsx47(ChevronLeft2, {})
4075
+ children: collapsed ? /* @__PURE__ */ jsx52(ChevronRight2, {}) : /* @__PURE__ */ jsx52(ChevronLeft2, {})
4061
4076
  }
4062
4077
  );
4063
4078
  }
4064
4079
  function SidebarRail({ className, ...props }) {
4065
4080
  const { toggle } = useSidebar();
4066
4081
  const { onClick, ...buttonProps } = props;
4067
- return /* @__PURE__ */ jsx47(
4082
+ return /* @__PURE__ */ jsx52(
4068
4083
  "button",
4069
4084
  {
4070
4085
  type: "button",
@@ -4082,7 +4097,7 @@ function SidebarRail({ className, ...props }) {
4082
4097
  );
4083
4098
  }
4084
4099
  function SidebarMore({ className, ...props }) {
4085
- return /* @__PURE__ */ jsx47(
4100
+ return /* @__PURE__ */ jsx52(
4086
4101
  Button,
4087
4102
  {
4088
4103
  "aria-label": "M\xE1s opciones",
@@ -4090,15 +4105,15 @@ function SidebarMore({ className, ...props }) {
4090
4105
  variant: "ghost",
4091
4106
  className: cn("size-7", className),
4092
4107
  ...props,
4093
- children: /* @__PURE__ */ jsx47(Ellipsis, {})
4108
+ children: /* @__PURE__ */ jsx52(Ellipsis, {})
4094
4109
  }
4095
4110
  );
4096
4111
  }
4097
4112
 
4098
4113
  // src/ui/skeleton/skeleton.tsx
4099
- import { jsx as jsx48 } from "react/jsx-runtime";
4114
+ import { jsx as jsx53 } from "react/jsx-runtime";
4100
4115
  function Skeleton({ className, ...props }) {
4101
- return /* @__PURE__ */ jsx48(
4116
+ return /* @__PURE__ */ jsx53(
4102
4117
  "div",
4103
4118
  {
4104
4119
  "aria-hidden": "true",
@@ -4113,7 +4128,7 @@ function Skeleton({ className, ...props }) {
4113
4128
  import { LoaderCircle as LoaderCircle3 } from "lucide-react";
4114
4129
  import { useCallback as useCallback9, useLayoutEffect, useRef as useRef7 } from "react";
4115
4130
  import { useFormStatus } from "react-dom";
4116
- import { Fragment as Fragment10, jsx as jsx49, jsxs as jsxs26 } from "react/jsx-runtime";
4131
+ import { Fragment as Fragment10, jsx as jsx54, jsxs as jsxs27 } from "react/jsx-runtime";
4117
4132
  function assignRef(ref, node) {
4118
4133
  if (typeof ref === "function") {
4119
4134
  ref(node);
@@ -4148,7 +4163,7 @@ function SubmitButton({
4148
4163
  if (busy) button.setAttribute("aria-busy", "true");
4149
4164
  else button.removeAttribute("aria-busy");
4150
4165
  }, [busy]);
4151
- return /* @__PURE__ */ jsx49(
4166
+ return /* @__PURE__ */ jsx54(
4152
4167
  Button,
4153
4168
  {
4154
4169
  ref: setButtonRef,
@@ -4157,8 +4172,8 @@ function SubmitButton({
4157
4172
  isDisabled: busy || isDisabled,
4158
4173
  "aria-busy": busy || void 0,
4159
4174
  ...props,
4160
- children: busy ? /* @__PURE__ */ jsxs26(Fragment10, { children: [
4161
- /* @__PURE__ */ jsx49(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 motion-safe:animate-spin" }),
4175
+ children: busy ? /* @__PURE__ */ jsxs27(Fragment10, { children: [
4176
+ /* @__PURE__ */ jsx54(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 motion-safe:animate-spin" }),
4162
4177
  label
4163
4178
  ] }) : children
4164
4179
  }
@@ -4168,7 +4183,7 @@ function SubmitButton({
4168
4183
  // src/ui/switch/switch.tsx
4169
4184
  import { useEffect as useEffect6, useRef as useRef8 } from "react";
4170
4185
  import { Switch as AriaSwitch } from "react-aria-components";
4171
- import { Fragment as Fragment11, jsx as jsx50, jsxs as jsxs27 } from "react/jsx-runtime";
4186
+ import { Fragment as Fragment11, jsx as jsx55, jsxs as jsxs28 } from "react/jsx-runtime";
4172
4187
  var switchSizes = {
4173
4188
  sm: {
4174
4189
  control: "h-4 w-[1.875rem] p-0.5",
@@ -4225,7 +4240,7 @@ function Switch({
4225
4240
  ownerDocument.addEventListener("keydown", handleDirectionalKey);
4226
4241
  return () => ownerDocument.removeEventListener("keydown", handleDirectionalKey);
4227
4242
  }, [isDisabled, isReadOnly, resolvedInputRef]);
4228
- return /* @__PURE__ */ jsx50(
4243
+ return /* @__PURE__ */ jsx55(
4229
4244
  AriaSwitch,
4230
4245
  {
4231
4246
  "data-slot": "switch",
@@ -4242,8 +4257,8 @@ function Switch({
4242
4257
  children: (state) => {
4243
4258
  const isThumbPressed = state.isPressed;
4244
4259
  const thumbOffset = state.isSelected ? isThumbPressed ? styles.activeSelectedOffset : styles.selectedOffset : "0";
4245
- return /* @__PURE__ */ jsxs27(Fragment11, { children: [
4246
- /* @__PURE__ */ jsx50(
4260
+ return /* @__PURE__ */ jsxs28(Fragment11, { children: [
4261
+ /* @__PURE__ */ jsx55(
4247
4262
  "span",
4248
4263
  {
4249
4264
  "aria-hidden": "true",
@@ -4257,7 +4272,7 @@ function Switch({
4257
4272
  "group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50",
4258
4273
  styles.control
4259
4274
  ),
4260
- children: /* @__PURE__ */ jsx50(
4275
+ children: /* @__PURE__ */ jsx55(
4261
4276
  "span",
4262
4277
  {
4263
4278
  "data-slot": "switch-thumb",
@@ -4277,9 +4292,9 @@ function Switch({
4277
4292
  )
4278
4293
  }
4279
4294
  ),
4280
- children || description ? /* @__PURE__ */ jsxs27("span", { className: "grid gap-0.5 leading-tight", children: [
4281
- children ? /* @__PURE__ */ jsx50("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
4282
- description ? /* @__PURE__ */ jsx50(
4295
+ children || description ? /* @__PURE__ */ jsxs28("span", { className: "grid gap-0.5 leading-tight", children: [
4296
+ children ? /* @__PURE__ */ jsx55("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
4297
+ description ? /* @__PURE__ */ jsx55(
4283
4298
  "span",
4284
4299
  {
4285
4300
  "data-slot": "switch-description",
@@ -4295,9 +4310,9 @@ function Switch({
4295
4310
  }
4296
4311
 
4297
4312
  // src/ui/table/table.tsx
4298
- import { jsx as jsx51 } from "react/jsx-runtime";
4313
+ import { jsx as jsx56 } from "react/jsx-runtime";
4299
4314
  function Table({ className, ...props }) {
4300
- return /* @__PURE__ */ jsx51("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx51(
4315
+ return /* @__PURE__ */ jsx56("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx56(
4301
4316
  "table",
4302
4317
  {
4303
4318
  "data-slot": "table",
@@ -4307,10 +4322,10 @@ function Table({ className, ...props }) {
4307
4322
  ) });
4308
4323
  }
4309
4324
  function TableHeader({ className, ...props }) {
4310
- return /* @__PURE__ */ jsx51("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
4325
+ return /* @__PURE__ */ jsx56("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
4311
4326
  }
4312
4327
  function TableBody({ className, ...props }) {
4313
- return /* @__PURE__ */ jsx51(
4328
+ return /* @__PURE__ */ jsx56(
4314
4329
  "tbody",
4315
4330
  {
4316
4331
  "data-slot": "table-body",
@@ -4320,7 +4335,7 @@ function TableBody({ className, ...props }) {
4320
4335
  );
4321
4336
  }
4322
4337
  function TableRow({ className, ...props }) {
4323
- return /* @__PURE__ */ jsx51(
4338
+ return /* @__PURE__ */ jsx56(
4324
4339
  "tr",
4325
4340
  {
4326
4341
  "data-slot": "table-row",
@@ -4333,7 +4348,7 @@ function TableRow({ className, ...props }) {
4333
4348
  );
4334
4349
  }
4335
4350
  function TableHead({ className, ...props }) {
4336
- return /* @__PURE__ */ jsx51(
4351
+ return /* @__PURE__ */ jsx56(
4337
4352
  "th",
4338
4353
  {
4339
4354
  "data-slot": "table-head",
@@ -4346,7 +4361,7 @@ function TableHead({ className, ...props }) {
4346
4361
  );
4347
4362
  }
4348
4363
  function TableCell({ className, ...props }) {
4349
- return /* @__PURE__ */ jsx51(
4364
+ return /* @__PURE__ */ jsx56(
4350
4365
  "td",
4351
4366
  {
4352
4367
  "data-slot": "table-cell",
@@ -4356,7 +4371,7 @@ function TableCell({ className, ...props }) {
4356
4371
  );
4357
4372
  }
4358
4373
  function TableCaption({ className, ...props }) {
4359
- return /* @__PURE__ */ jsx51(
4374
+ return /* @__PURE__ */ jsx56(
4360
4375
  "caption",
4361
4376
  {
4362
4377
  "data-slot": "table-caption",
@@ -4366,7 +4381,7 @@ function TableCaption({ className, ...props }) {
4366
4381
  );
4367
4382
  }
4368
4383
  function TableFooter({ className, ...props }) {
4369
- return /* @__PURE__ */ jsx51(
4384
+ return /* @__PURE__ */ jsx56(
4370
4385
  "tfoot",
4371
4386
  {
4372
4387
  "data-slot": "table-footer",
@@ -4379,7 +4394,7 @@ function TableFooter({ className, ...props }) {
4379
4394
  );
4380
4395
  }
4381
4396
  function TableToolbar({ className, ...props }) {
4382
- return /* @__PURE__ */ jsx51(
4397
+ return /* @__PURE__ */ jsx56(
4383
4398
  "div",
4384
4399
  {
4385
4400
  "data-slot": "table-toolbar",
@@ -4393,7 +4408,7 @@ function TableEmpty({
4393
4408
  className,
4394
4409
  children = "No hay resultados."
4395
4410
  }) {
4396
- return /* @__PURE__ */ jsx51(TableRow, { "data-slot": "table-empty", children: /* @__PURE__ */ jsx51(
4411
+ return /* @__PURE__ */ jsx56(TableRow, { "data-slot": "table-empty", children: /* @__PURE__ */ jsx56(
4397
4412
  TableCell,
4398
4413
  {
4399
4414
  colSpan,
@@ -4407,7 +4422,7 @@ function TableLoading({
4407
4422
  className,
4408
4423
  children = "Cargando\u2026"
4409
4424
  }) {
4410
- return /* @__PURE__ */ jsx51(TableRow, { "data-slot": "table-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx51(
4425
+ return /* @__PURE__ */ jsx56(TableRow, { "data-slot": "table-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx56(
4411
4426
  TableCell,
4412
4427
  {
4413
4428
  colSpan,
@@ -4426,9 +4441,9 @@ import {
4426
4441
  Tabs as AriaTabs,
4427
4442
  composeRenderProps as composeRenderProps2
4428
4443
  } from "react-aria-components";
4429
- import { jsx as jsx52 } from "react/jsx-runtime";
4444
+ import { jsx as jsx57 } from "react/jsx-runtime";
4430
4445
  function Tabs({ className, ...props }) {
4431
- return /* @__PURE__ */ jsx52(
4446
+ return /* @__PURE__ */ jsx57(
4432
4447
  AriaTabs,
4433
4448
  {
4434
4449
  "data-slot": "tabs",
@@ -4438,7 +4453,7 @@ function Tabs({ className, ...props }) {
4438
4453
  );
4439
4454
  }
4440
4455
  function TabsList({ className, ...props }) {
4441
- return /* @__PURE__ */ jsx52(
4456
+ return /* @__PURE__ */ jsx57(
4442
4457
  AriaTabList,
4443
4458
  {
4444
4459
  "data-slot": "tabs-list",
@@ -4454,7 +4469,7 @@ function TabsList({ className, ...props }) {
4454
4469
  );
4455
4470
  }
4456
4471
  function TabsTrigger({ className, ...props }) {
4457
- return /* @__PURE__ */ jsx52(
4472
+ return /* @__PURE__ */ jsx57(
4458
4473
  AriaTab,
4459
4474
  {
4460
4475
  "data-slot": "tabs-trigger",
@@ -4470,10 +4485,10 @@ function TabsTrigger({ className, ...props }) {
4470
4485
  );
4471
4486
  }
4472
4487
  function TabsPanels({ className, ...props }) {
4473
- return /* @__PURE__ */ jsx52(AriaTabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
4488
+ return /* @__PURE__ */ jsx57(AriaTabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
4474
4489
  }
4475
4490
  function TabsContent({ className, ...props }) {
4476
- return /* @__PURE__ */ jsx52(
4491
+ return /* @__PURE__ */ jsx57(
4477
4492
  AriaTabPanel,
4478
4493
  {
4479
4494
  "data-slot": "tabs-content",
@@ -4537,15 +4552,15 @@ function useToast() {
4537
4552
  }
4538
4553
 
4539
4554
  // src/ui/toast/toast.tsx
4540
- import { Fragment as Fragment12, jsx as jsx53, jsxs as jsxs28 } from "react/jsx-runtime";
4555
+ import { Fragment as Fragment12, jsx as jsx58, jsxs as jsxs29 } from "react/jsx-runtime";
4541
4556
  function ToastProvider({ children }) {
4542
- return /* @__PURE__ */ jsxs28(Fragment12, { children: [
4557
+ return /* @__PURE__ */ jsxs29(Fragment12, { children: [
4543
4558
  children,
4544
- /* @__PURE__ */ jsx53(Toaster, {})
4559
+ /* @__PURE__ */ jsx58(Toaster, {})
4545
4560
  ] });
4546
4561
  }
4547
4562
  function Toaster({ position }) {
4548
- return /* @__PURE__ */ jsx53(SileoToaster, { position, options: { fill: "var(--ui-secondary)" } });
4563
+ return /* @__PURE__ */ jsx58(SileoToaster, { position, options: { fill: "var(--ui-secondary)" } });
4549
4564
  }
4550
4565
  function ToastViewport({
4551
4566
  position,
@@ -4554,7 +4569,7 @@ function ToastViewport({
4554
4569
  }) {
4555
4570
  void className;
4556
4571
  if (visiblePosition && visiblePosition !== position) return null;
4557
- return /* @__PURE__ */ jsx53(Toaster, { position });
4572
+ return /* @__PURE__ */ jsx58(Toaster, { position });
4558
4573
  }
4559
4574
  function Toast({
4560
4575
  id,
@@ -4579,9 +4594,9 @@ function Toast({
4579
4594
  }
4580
4595
 
4581
4596
  // src/ui/toolbar/toolbar.tsx
4582
- import { jsx as jsx54 } from "react/jsx-runtime";
4597
+ import { jsx as jsx59 } from "react/jsx-runtime";
4583
4598
  function Toolbar({ className, ...props }) {
4584
- return /* @__PURE__ */ jsx54(
4599
+ return /* @__PURE__ */ jsx59(
4585
4600
  "div",
4586
4601
  {
4587
4602
  role: "toolbar",
@@ -4592,7 +4607,7 @@ function Toolbar({ className, ...props }) {
4592
4607
  );
4593
4608
  }
4594
4609
  function ToolbarGroup({ className, ...props }) {
4595
- return /* @__PURE__ */ jsx54(
4610
+ return /* @__PURE__ */ jsx59(
4596
4611
  "div",
4597
4612
  {
4598
4613
  "data-slot": "toolbar-group",
@@ -4602,7 +4617,7 @@ function ToolbarGroup({ className, ...props }) {
4602
4617
  );
4603
4618
  }
4604
4619
  function ToolbarSpacer({ className, ...props }) {
4605
- return /* @__PURE__ */ jsx54("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
4620
+ return /* @__PURE__ */ jsx59("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
4606
4621
  }
4607
4622
  export {
4608
4623
  Accordion,