@motor-hero/ui-kit 0.40.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -46,6 +46,7 @@ __export(index_exports, {
46
46
  FormDialog: () => FormDialog,
47
47
  FormDialogLayout: () => FormDialogLayout,
48
48
  FormField: () => FormField,
49
+ HighlightPill: () => HighlightPill,
49
50
  MobileCardList: () => MobileCardList,
50
51
  ModeToggle: () => ModeToggle,
51
52
  MultiCombobox: () => MultiCombobox,
@@ -1055,6 +1056,7 @@ var MASK_REPLACEMENT = { _: /\d/ };
1055
1056
  var DATE_FORMAT = "dd/MM/yyyy";
1056
1057
  var TIME_FORMAT = "HH:mm";
1057
1058
  var DATE_VALUE_FORMAT = "yyyy-MM-dd";
1059
+ var DATETIME_VALUE_FORMAT = "yyyy-MM-dd'T'HH:mm";
1058
1060
  function pad(n) {
1059
1061
  return String(n).padStart(2, "0");
1060
1062
  }
@@ -1070,8 +1072,8 @@ function dateOnlyToDate(value) {
1070
1072
  }
1071
1073
  function dateTimeToDate(value) {
1072
1074
  if (!value) return void 0;
1073
- const parsed = new Date(value);
1074
- return Number.isNaN(parsed.getTime()) ? void 0 : parsed;
1075
+ const parsed = (0, import_date_fns.parse)(value, DATETIME_VALUE_FORMAT, /* @__PURE__ */ new Date());
1076
+ return (0, import_date_fns.isValid)(parsed) ? parsed : void 0;
1075
1077
  }
1076
1078
  function displayFor(value, withTime) {
1077
1079
  const date = withTime ? dateTimeToDate(value) : dateOnlyToDate(value);
@@ -1166,7 +1168,7 @@ function DatePickerImpl({
1166
1168
  if (!time) return;
1167
1169
  const combined = new Date(date);
1168
1170
  combined.setHours(time.getHours(), time.getMinutes(), 0, 0);
1169
- onChange(combined.toISOString());
1171
+ onChange((0, import_date_fns.format)(combined, DATETIME_VALUE_FORMAT));
1170
1172
  setOpen(false);
1171
1173
  };
1172
1174
  const handleCalendarSelect = (date) => {
@@ -1583,9 +1585,34 @@ function FormField({ label, htmlFor, error, required, children, className }) {
1583
1585
  ] });
1584
1586
  }
1585
1587
 
1588
+ // src/components/highlight-pill.tsx
1589
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1590
+ function HighlightPill({
1591
+ backgroundColor,
1592
+ textColor,
1593
+ className,
1594
+ children
1595
+ }) {
1596
+ const style = {
1597
+ backgroundColor: backgroundColor ?? "var(--status-neutral-surface, #f3f4f6)",
1598
+ color: textColor ?? "var(--status-neutral-text, #374151)"
1599
+ };
1600
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1601
+ "span",
1602
+ {
1603
+ style,
1604
+ className: cn(
1605
+ "inline-flex items-center rounded-md px-2 py-0.5 text-xs font-medium",
1606
+ className
1607
+ ),
1608
+ children
1609
+ }
1610
+ );
1611
+ }
1612
+
1586
1613
  // src/components/mobile-card-list.tsx
1587
1614
  var import_react5 = require("react");
1588
- var import_jsx_runtime17 = require("react/jsx-runtime");
1615
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1589
1616
  var SCROLL_THRESHOLD = 8;
1590
1617
  function MobileCardList({
1591
1618
  data,
@@ -1616,26 +1643,26 @@ function MobileCardList({
1616
1643
  }
1617
1644
  };
1618
1645
  if (isLoading) {
1619
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-3", children: [
1620
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex justify-between", children: [
1621
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1622
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1646
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "space-y-3", children: [
1647
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex justify-between", children: [
1648
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1649
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1623
1650
  ] }),
1624
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1625
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex justify-between", children: [
1626
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1627
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1651
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1652
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex justify-between", children: [
1653
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1654
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1628
1655
  ] })
1629
1656
  ] }) }, i)) });
1630
1657
  }
1631
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1658
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1632
1659
  "div",
1633
1660
  {
1634
1661
  className: `space-y-3 ${className ?? ""}`,
1635
1662
  onTouchStart,
1636
1663
  onTouchMove,
1637
1664
  onClickCapture,
1638
- children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1665
+ children: data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1639
1666
  "div",
1640
1667
  {
1641
1668
  className: "rounded-xl border p-4 transition-all duration-150 hover:border-foreground/20 active:scale-[0.99]",
@@ -1680,7 +1707,7 @@ function applyCompanyTheme(root, companyTheme, mode) {
1680
1707
  }
1681
1708
 
1682
1709
  // src/components/theme-provider.tsx
1683
- var import_jsx_runtime18 = require("react/jsx-runtime");
1710
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1684
1711
  var initialState = {
1685
1712
  theme: "system",
1686
1713
  setTheme: () => null
@@ -1719,7 +1746,7 @@ function ThemeProvider({
1719
1746
  setTheme(theme2);
1720
1747
  }
1721
1748
  };
1722
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ThemeProviderContext.Provider, { ...props, value, children });
1749
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ThemeProviderContext.Provider, { ...props, value, children });
1723
1750
  }
1724
1751
  function useTheme() {
1725
1752
  const context = (0, import_react6.useContext)(ThemeProviderContext);
@@ -1730,57 +1757,57 @@ function useTheme() {
1730
1757
  }
1731
1758
 
1732
1759
  // src/components/mode-toggle.tsx
1733
- var import_jsx_runtime19 = require("react/jsx-runtime");
1760
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1734
1761
  function ModeToggle() {
1735
1762
  const { setTheme } = useTheme();
1736
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenu2.Root, { children: [
1737
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1763
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DropdownMenu2.Root, { children: [
1764
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1738
1765
  "button",
1739
1766
  {
1740
1767
  type: "button",
1741
1768
  className: "relative inline-flex h-9 w-9 items-center justify-center rounded-md border border-input bg-background text-sm font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1742
1769
  "aria-label": "Alternar tema",
1743
1770
  children: [
1744
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1745
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1771
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1772
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1746
1773
  ]
1747
1774
  }
1748
1775
  ) }),
1749
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DropdownMenu2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1776
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownMenu2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1750
1777
  DropdownMenu2.Content,
1751
1778
  {
1752
1779
  align: "end",
1753
1780
  className: "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
1754
1781
  children: [
1755
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1782
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1756
1783
  DropdownMenu2.Item,
1757
1784
  {
1758
1785
  className: "flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent",
1759
1786
  onClick: () => setTheme("light"),
1760
1787
  children: [
1761
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Sun, { className: "h-4 w-4" }),
1788
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Sun, { className: "h-4 w-4" }),
1762
1789
  " Claro"
1763
1790
  ]
1764
1791
  }
1765
1792
  ),
1766
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1793
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1767
1794
  DropdownMenu2.Item,
1768
1795
  {
1769
1796
  className: "flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent",
1770
1797
  onClick: () => setTheme("dark"),
1771
1798
  children: [
1772
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Moon, { className: "h-4 w-4" }),
1799
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Moon, { className: "h-4 w-4" }),
1773
1800
  " Escuro"
1774
1801
  ]
1775
1802
  }
1776
1803
  ),
1777
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1804
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1778
1805
  DropdownMenu2.Item,
1779
1806
  {
1780
1807
  className: "flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent",
1781
1808
  onClick: () => setTheme("system"),
1782
1809
  children: [
1783
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Monitor, { className: "h-4 w-4" }),
1810
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.Monitor, { className: "h-4 w-4" }),
1784
1811
  " Sistema"
1785
1812
  ]
1786
1813
  }
@@ -1797,7 +1824,7 @@ var import_cmdk2 = require("cmdk");
1797
1824
  var import_lucide_react10 = require("lucide-react");
1798
1825
  var React8 = __toESM(require("react"), 1);
1799
1826
  var import_vaul5 = require("vaul");
1800
- var import_jsx_runtime20 = require("react/jsx-runtime");
1827
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1801
1828
  function MultiCombobox({
1802
1829
  options,
1803
1830
  value,
@@ -1838,7 +1865,7 @@ function MultiCombobox({
1838
1865
  const removeValue = (optionValue) => {
1839
1866
  onChange(value.filter((v) => v !== optionValue));
1840
1867
  };
1841
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1868
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1842
1869
  "div",
1843
1870
  {
1844
1871
  id,
@@ -1860,13 +1887,13 @@ function MultiCombobox({
1860
1887
  className
1861
1888
  ),
1862
1889
  children: [
1863
- selected.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1890
+ selected.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1864
1891
  "span",
1865
1892
  {
1866
1893
  className: "inline-flex items-center gap-1 rounded bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground",
1867
1894
  children: [
1868
1895
  option.label,
1869
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1896
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1870
1897
  "button",
1871
1898
  {
1872
1899
  type: "button",
@@ -1878,26 +1905,26 @@ function MultiCombobox({
1878
1905
  },
1879
1906
  onPointerDown: (event) => event.stopPropagation(),
1880
1907
  className: "rounded-sm opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1881
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react10.X, { className: "h-3 w-3" })
1908
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.X, { className: "h-3 w-3" })
1882
1909
  }
1883
1910
  )
1884
1911
  ]
1885
1912
  },
1886
1913
  option.value
1887
1914
  )),
1888
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react10.ChevronsUpDown, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1915
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.ChevronsUpDown, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1889
1916
  ]
1890
1917
  }
1891
1918
  );
1892
- const command = /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1919
+ const command = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1893
1920
  import_cmdk2.Command,
1894
1921
  {
1895
1922
  shouldFilter: !isServer,
1896
1923
  className: "flex h-full w-full flex-col overflow-hidden",
1897
1924
  children: [
1898
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center border-b px-3", children: [
1899
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react10.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1900
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1925
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center border-b px-3", children: [
1926
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1927
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1901
1928
  import_cmdk2.Command.Input,
1902
1929
  {
1903
1930
  placeholder: searchPlaceholder,
@@ -1906,14 +1933,14 @@ function MultiCombobox({
1906
1933
  }
1907
1934
  )
1908
1935
  ] }),
1909
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1936
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1910
1937
  import_cmdk2.Command.List,
1911
1938
  {
1912
1939
  ref: listRef,
1913
1940
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
1914
1941
  children: [
1915
- !isServer && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_cmdk2.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1916
- options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1942
+ !isServer && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_cmdk2.Command.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1943
+ options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1917
1944
  import_cmdk2.Command.Item,
1918
1945
  {
1919
1946
  value: isServer ? option.value : option.label,
@@ -1921,7 +1948,7 @@ function MultiCombobox({
1921
1948
  onSelect: () => toggleValue(option.value),
1922
1949
  className: "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2.5 text-sm outline-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 sm:py-1.5",
1923
1950
  children: [
1924
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1951
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1925
1952
  import_lucide_react10.Check,
1926
1953
  {
1927
1954
  className: cn(
@@ -1930,14 +1957,14 @@ function MultiCombobox({
1930
1957
  )
1931
1958
  }
1932
1959
  ),
1933
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "truncate", children: option.label })
1960
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "truncate", children: option.label })
1934
1961
  ]
1935
1962
  },
1936
1963
  option.value
1937
1964
  )),
1938
- isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1939
- isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react10.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1940
- isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1965
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1966
+ isServer && loading && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react10.Loader2, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1967
+ isServer && hasMore && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1941
1968
  ]
1942
1969
  }
1943
1970
  )
@@ -1945,9 +1972,9 @@ function MultiCombobox({
1945
1972
  }
1946
1973
  );
1947
1974
  if (isDesktop) {
1948
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(PopoverPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1949
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1950
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1975
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(PopoverPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1976
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1977
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1951
1978
  PopoverPrimitive5.Content,
1952
1979
  {
1953
1980
  align: "start",
@@ -1959,13 +1986,13 @@ function MultiCombobox({
1959
1986
  ) })
1960
1987
  ] });
1961
1988
  }
1962
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_vaul5.Drawer.Root, { open, onOpenChange: setOpen, children: [
1963
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_vaul5.Drawer.Trigger, { asChild: true, disabled, children: trigger }),
1964
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_vaul5.Drawer.Portal, { children: [
1965
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_vaul5.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1966
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_vaul5.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
1967
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_vaul5.Drawer.Title, { className: "sr-only", children: placeholder }),
1968
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1989
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_vaul5.Drawer.Root, { open, onOpenChange: setOpen, children: [
1990
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_vaul5.Drawer.Trigger, { asChild: true, disabled, children: trigger }),
1991
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_vaul5.Drawer.Portal, { children: [
1992
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_vaul5.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1993
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_vaul5.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 mt-24 flex max-h-[85vh] flex-col rounded-t-2xl border bg-popover text-popover-foreground outline-none", children: [
1994
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_vaul5.Drawer.Title, { className: "sr-only", children: placeholder }),
1995
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1969
1996
  command
1970
1997
  ] })
1971
1998
  ] })
@@ -1973,25 +2000,25 @@ function MultiCombobox({
1973
2000
  }
1974
2001
 
1975
2002
  // src/components/page-header.tsx
1976
- var import_jsx_runtime21 = require("react/jsx-runtime");
2003
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1977
2004
  function PageHeader({ title, description, action, className }) {
1978
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2005
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1979
2006
  "div",
1980
2007
  {
1981
2008
  className: `flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between ${className ?? ""}`,
1982
2009
  children: [
1983
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "min-w-0", children: [
1984
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
1985
- description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "text-sm text-muted-foreground", children: description })
2010
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "min-w-0", children: [
2011
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
2012
+ description && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "text-sm text-muted-foreground", children: description })
1986
2013
  ] }),
1987
- action && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "shrink-0", children: action })
2014
+ action && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "shrink-0", children: action })
1988
2015
  ]
1989
2016
  }
1990
2017
  );
1991
2018
  }
1992
2019
 
1993
2020
  // src/components/pagination.tsx
1994
- var import_jsx_runtime22 = require("react/jsx-runtime");
2021
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1995
2022
  var navButtonClass2 = "inline-flex h-8 items-center justify-center rounded-md border border-input bg-background px-3 text-xs font-medium shadow-sm transition-colors hover:bg-accent hover:text-accent-foreground cursor-pointer disabled:pointer-events-none disabled:opacity-50";
1996
2023
  function Pagination({
1997
2024
  page,
@@ -2005,26 +2032,26 @@ function Pagination({
2005
2032
  pageSizeOptions,
2006
2033
  className
2007
2034
  }) {
2008
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2035
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2009
2036
  "div",
2010
2037
  {
2011
2038
  className: `flex items-center ${showPageSizeSelector ? "justify-between" : "justify-end"} gap-4 ${className ?? ""}`,
2012
2039
  children: [
2013
- showPageSizeSelector && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2", children: [
2014
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
2015
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2040
+ showPageSizeSelector && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
2041
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
2042
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2016
2043
  "select",
2017
2044
  {
2018
2045
  id: "pagination-page-size",
2019
2046
  value: pageSize,
2020
2047
  onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
2021
2048
  className: "h-8 rounded-md border border-input bg-background px-2 text-xs font-medium shadow-sm transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring cursor-pointer",
2022
- children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("option", { value: size, children: size }, size))
2049
+ children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("option", { value: size, children: size }, size))
2023
2050
  }
2024
2051
  )
2025
2052
  ] }),
2026
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-4", children: [
2027
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2053
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-4", children: [
2054
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2028
2055
  "button",
2029
2056
  {
2030
2057
  type: "button",
@@ -2034,12 +2061,12 @@ function Pagination({
2034
2061
  children: "Anterior"
2035
2062
  }
2036
2063
  ),
2037
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
2064
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "text-sm text-muted-foreground", children: [
2038
2065
  "P\xE1gina ",
2039
2066
  page,
2040
2067
  totalPages ? ` de ${totalPages}` : ""
2041
2068
  ] }),
2042
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2069
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2043
2070
  "button",
2044
2071
  {
2045
2072
  type: "button",
@@ -2058,11 +2085,11 @@ function Pagination({
2058
2085
  // src/components/password-input.tsx
2059
2086
  var import_lucide_react11 = require("lucide-react");
2060
2087
  var React9 = __toESM(require("react"), 1);
2061
- var import_jsx_runtime23 = require("react/jsx-runtime");
2088
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2062
2089
  var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props }, ref) => {
2063
2090
  const [visible, setVisible] = React9.useState(false);
2064
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `relative ${containerClassName ?? ""}`, children: [
2065
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2091
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `relative ${containerClassName ?? ""}`, children: [
2092
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2066
2093
  "input",
2067
2094
  {
2068
2095
  ref,
@@ -2071,7 +2098,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
2071
2098
  ...props
2072
2099
  }
2073
2100
  ),
2074
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2101
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2075
2102
  "button",
2076
2103
  {
2077
2104
  type: "button",
@@ -2079,7 +2106,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
2079
2106
  "aria-label": visible ? "Ocultar senha" : "Mostrar senha",
2080
2107
  tabIndex: -1,
2081
2108
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-foreground",
2082
- children: visible ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react11.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react11.Eye, { className: "h-4 w-4" })
2109
+ children: visible ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Eye, { className: "h-4 w-4" })
2083
2110
  }
2084
2111
  )
2085
2112
  ] });
@@ -2087,7 +2114,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
2087
2114
  PasswordInput.displayName = "PasswordInput";
2088
2115
 
2089
2116
  // src/components/progress-bar.tsx
2090
- var import_jsx_runtime24 = require("react/jsx-runtime");
2117
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2091
2118
  var sizeClasses3 = {
2092
2119
  sm: "h-1.5",
2093
2120
  md: "h-2"
@@ -2101,16 +2128,16 @@ function ProgressBar({
2101
2128
  indicatorClassName
2102
2129
  }) {
2103
2130
  const clamped = Math.min(100, Math.max(0, value));
2104
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `space-y-1.5 ${className ?? ""}`, children: [
2105
- (label || valueLabel) && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-baseline justify-between gap-2", children: [
2106
- label && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-sm text-muted-foreground", children: label }),
2107
- valueLabel && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-sm font-semibold", children: valueLabel })
2131
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `space-y-1.5 ${className ?? ""}`, children: [
2132
+ (label || valueLabel) && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-baseline justify-between gap-2", children: [
2133
+ label && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-sm text-muted-foreground", children: label }),
2134
+ valueLabel && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-sm font-semibold", children: valueLabel })
2108
2135
  ] }),
2109
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2136
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2110
2137
  "div",
2111
2138
  {
2112
2139
  className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses3[size]}`,
2113
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2140
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2114
2141
  "div",
2115
2142
  {
2116
2143
  className: `h-full rounded-full transition-all duration-300 ${indicatorClassName ?? "bg-primary"}`,
@@ -2123,7 +2150,7 @@ function ProgressBar({
2123
2150
  }
2124
2151
 
2125
2152
  // src/components/responsive-data-view.tsx
2126
- var import_jsx_runtime25 = require("react/jsx-runtime");
2153
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2127
2154
  function ResponsiveDataView({
2128
2155
  table,
2129
2156
  cards,
@@ -2137,7 +2164,7 @@ function ResponsiveDataView({
2137
2164
  pagination
2138
2165
  }) {
2139
2166
  if (!isLoading && !isBusy && isEmpty) {
2140
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "rounded-md border", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2167
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "rounded-md border", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2141
2168
  EmptyState,
2142
2169
  {
2143
2170
  icon: emptyIcon,
@@ -2148,8 +2175,8 @@ function ResponsiveDataView({
2148
2175
  ) });
2149
2176
  }
2150
2177
  const busyClass = isBusy && "pointer-events-none opacity-50";
2151
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "space-y-4", children: [
2152
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2178
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "space-y-4", children: [
2179
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2153
2180
  "div",
2154
2181
  {
2155
2182
  "aria-busy": isBusy,
@@ -2160,7 +2187,7 @@ function ResponsiveDataView({
2160
2187
  children: table
2161
2188
  }
2162
2189
  ),
2163
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "aria-busy": isBusy, className: cn("transition-opacity md:hidden", busyClass), children: cards }),
2190
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { "aria-busy": isBusy, className: cn("transition-opacity md:hidden", busyClass), children: cards }),
2164
2191
  pagination
2165
2192
  ] });
2166
2193
  }
@@ -2170,7 +2197,7 @@ var DropdownMenu3 = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
2170
2197
  var import_lucide_react12 = require("lucide-react");
2171
2198
  var import_react7 = require("react");
2172
2199
  var import_vaul6 = require("vaul");
2173
- var import_jsx_runtime26 = require("react/jsx-runtime");
2200
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2174
2201
  var triggerClass = "inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";
2175
2202
  var itemClass2 = "flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent focus:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
2176
2203
  var sheetItemClass2 = "flex w-full cursor-pointer select-none items-center gap-3 rounded-md px-3 py-3 text-base outline-none transition-colors hover:bg-accent active:bg-accent disabled:pointer-events-none disabled:opacity-50";
@@ -2184,20 +2211,20 @@ function RowActionsMenu({
2184
2211
  const isDesktop = useIsDesktop();
2185
2212
  const [open, setOpen] = (0, import_react7.useState)(false);
2186
2213
  if (actions.length === 0) return null;
2187
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2214
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2188
2215
  "button",
2189
2216
  {
2190
2217
  type: "button",
2191
2218
  disabled,
2192
2219
  "aria-label": label,
2193
2220
  className: triggerClass,
2194
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react12.MoreVertical, { className: "h-4 w-4" })
2221
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.MoreVertical, { className: "h-4 w-4" })
2195
2222
  }
2196
2223
  );
2197
2224
  if (isDesktop) {
2198
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
2199
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2200
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2225
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
2226
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2227
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2201
2228
  DropdownMenu3.Content,
2202
2229
  {
2203
2230
  align,
@@ -2209,8 +2236,8 @@ function RowActionsMenu({
2209
2236
  action.destructive && "text-destructive focus:bg-destructive/10"
2210
2237
  );
2211
2238
  if (action.children?.length) {
2212
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(DropdownMenu3.Sub, { children: [
2213
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2239
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(DropdownMenu3.Sub, { children: [
2240
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2214
2241
  DropdownMenu3.SubTrigger,
2215
2242
  {
2216
2243
  className: cls,
@@ -2218,16 +2245,16 @@ function RowActionsMenu({
2218
2245
  children: [
2219
2246
  action.icon,
2220
2247
  action.label,
2221
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react12.ChevronRight, { className: "ml-auto h-4 w-4 text-muted-foreground" })
2248
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.ChevronRight, { className: "ml-auto h-4 w-4 text-muted-foreground" })
2222
2249
  ]
2223
2250
  }
2224
2251
  ),
2225
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2252
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(DropdownMenu3.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2226
2253
  DropdownMenu3.SubContent,
2227
2254
  {
2228
2255
  sideOffset: 4,
2229
2256
  className: "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
2230
- children: action.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2257
+ children: action.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2231
2258
  DropdownMenu3.Item,
2232
2259
  {
2233
2260
  className: cn(
@@ -2247,7 +2274,7 @@ function RowActionsMenu({
2247
2274
  ) })
2248
2275
  ] }, action.label);
2249
2276
  }
2250
- return action.href ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2277
+ return action.href ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2251
2278
  DropdownMenu3.Item,
2252
2279
  {
2253
2280
  asChild: true,
@@ -2255,14 +2282,14 @@ function RowActionsMenu({
2255
2282
  children: renderLink({
2256
2283
  href: action.href,
2257
2284
  className: cls,
2258
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
2285
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
2259
2286
  action.icon,
2260
2287
  action.label
2261
2288
  ] })
2262
2289
  })
2263
2290
  },
2264
2291
  action.label
2265
- ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2292
+ ) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2266
2293
  DropdownMenu3.Item,
2267
2294
  {
2268
2295
  className: cls,
@@ -2280,30 +2307,30 @@ function RowActionsMenu({
2280
2307
  ) })
2281
2308
  ] });
2282
2309
  }
2283
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul6.Drawer.Root, { open, onOpenChange: setOpen, children: [
2284
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul6.Drawer.Trigger, { asChild: true, children: trigger }),
2285
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul6.Drawer.Portal, { children: [
2286
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul6.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2287
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_vaul6.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
2288
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_vaul6.Drawer.Title, { className: "sr-only", children: label }),
2289
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2310
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul6.Drawer.Root, { open, onOpenChange: setOpen, children: [
2311
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul6.Drawer.Trigger, { asChild: true, children: trigger }),
2312
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul6.Drawer.Portal, { children: [
2313
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul6.Drawer.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2314
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_vaul6.Drawer.Content, { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-2xl border bg-popover p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] text-popover-foreground outline-none", children: [
2315
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_vaul6.Drawer.Title, { className: "sr-only", children: label }),
2316
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2290
2317
  actions.map((action) => {
2291
2318
  const cls = cn(
2292
2319
  sheetItemClass2,
2293
2320
  action.destructive && "text-destructive"
2294
2321
  );
2295
- const inner = /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
2322
+ const inner = /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
2296
2323
  action.icon,
2297
2324
  action.label
2298
2325
  ] });
2299
2326
  if (action.children?.length) {
2300
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { children: [
2301
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "mx-3 my-1 h-px bg-border" }),
2302
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-3 px-3 pb-1 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: [
2327
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
2328
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mx-3 my-1 h-px bg-border" }),
2329
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-3 px-3 pb-1 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: [
2303
2330
  action.icon,
2304
2331
  action.label
2305
2332
  ] }),
2306
- action.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2333
+ action.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2307
2334
  "button",
2308
2335
  {
2309
2336
  type: "button",
@@ -2323,10 +2350,10 @@ function RowActionsMenu({
2323
2350
  },
2324
2351
  child.label
2325
2352
  )),
2326
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "mx-3 my-1 h-px bg-border" })
2353
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mx-3 my-1 h-px bg-border" })
2327
2354
  ] }, action.label);
2328
2355
  }
2329
- return action.href ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2356
+ return action.href ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2330
2357
  "span",
2331
2358
  {
2332
2359
  onClick: () => setOpen(false),
@@ -2338,7 +2365,7 @@ function RowActionsMenu({
2338
2365
  })
2339
2366
  },
2340
2367
  action.label
2341
- ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2368
+ ) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2342
2369
  "button",
2343
2370
  {
2344
2371
  type: "button",
@@ -2360,11 +2387,11 @@ function RowActionsMenu({
2360
2387
 
2361
2388
  // src/components/search-input.tsx
2362
2389
  var React10 = __toESM(require("react"), 1);
2363
- var import_jsx_runtime27 = require("react/jsx-runtime");
2390
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2364
2391
  var SearchInput = React10.forwardRef(
2365
2392
  ({ containerClassName, className, ...props }, ref) => {
2366
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: cn("relative flex-1", containerClassName), children: [
2367
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2393
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("relative flex-1", containerClassName), children: [
2394
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2368
2395
  "svg",
2369
2396
  {
2370
2397
  xmlns: "http://www.w3.org/2000/svg",
@@ -2379,12 +2406,12 @@ var SearchInput = React10.forwardRef(
2379
2406
  "aria-hidden": "true",
2380
2407
  className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",
2381
2408
  children: [
2382
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2383
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { d: "m21 21-4.3-4.3" })
2409
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2410
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("path", { d: "m21 21-4.3-4.3" })
2384
2411
  ]
2385
2412
  }
2386
2413
  ),
2387
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2414
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2388
2415
  "input",
2389
2416
  {
2390
2417
  ref,
@@ -2402,30 +2429,30 @@ var SearchInput = React10.forwardRef(
2402
2429
  SearchInput.displayName = "SearchInput";
2403
2430
 
2404
2431
  // src/components/stat-card.tsx
2405
- var import_jsx_runtime28 = require("react/jsx-runtime");
2432
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2406
2433
  function StatCard({ label, value, detail, icon, isLoading }) {
2407
2434
  if (isLoading) {
2408
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2409
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
2410
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2411
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2435
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2436
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
2437
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2438
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2412
2439
  ] }),
2413
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2414
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2440
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2441
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2415
2442
  ] });
2416
2443
  }
2417
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2418
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
2419
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2420
- icon && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-muted-foreground", children: icon })
2444
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2445
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center justify-between pb-2", children: [
2446
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2447
+ icon && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-muted-foreground", children: icon })
2421
2448
  ] }),
2422
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "text-2xl font-bold", children: value }),
2423
- detail && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-xs text-muted-foreground", children: detail })
2449
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "text-2xl font-bold", children: value }),
2450
+ detail && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-xs text-muted-foreground", children: detail })
2424
2451
  ] });
2425
2452
  }
2426
2453
 
2427
2454
  // src/components/status-badge.tsx
2428
- var import_jsx_runtime29 = require("react/jsx-runtime");
2455
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2429
2456
  var variantClasses = {
2430
2457
  neutral: {
2431
2458
  badge: "bg-[var(--status-neutral-surface,#f3f4f6)] text-[var(--status-neutral-text,#374151)]",
@@ -2455,12 +2482,12 @@ function StatusBadge({
2455
2482
  children
2456
2483
  }) {
2457
2484
  const classes = variantClasses[variant];
2458
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2485
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2459
2486
  "span",
2460
2487
  {
2461
2488
  className: `inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-xs font-medium ${classes.badge} ${className ?? ""}`,
2462
2489
  children: [
2463
- dot && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2490
+ dot && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2464
2491
  "span",
2465
2492
  {
2466
2493
  className: `inline-block h-1.5 w-1.5 shrink-0 rounded-full ${classes.dot}`
@@ -2473,36 +2500,36 @@ function StatusBadge({
2473
2500
  }
2474
2501
 
2475
2502
  // src/components/status-dot.tsx
2476
- var import_jsx_runtime30 = require("react/jsx-runtime");
2503
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2477
2504
  function StatusDot({ active, label, className }) {
2478
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: `inline-flex items-center gap-2 ${className ?? ""}`, children: [
2479
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2505
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: `inline-flex items-center gap-2 ${className ?? ""}`, children: [
2506
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2480
2507
  "span",
2481
2508
  {
2482
2509
  className: `h-2 w-2 rounded-full ${active ? "bg-green-500" : "bg-red-500"}`
2483
2510
  }
2484
2511
  ),
2485
- label && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: label })
2512
+ label && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: label })
2486
2513
  ] });
2487
2514
  }
2488
2515
 
2489
2516
  // src/components/table-skeleton.tsx
2490
- var import_jsx_runtime31 = require("react/jsx-runtime");
2517
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2491
2518
  function TableSkeleton({ rows = 5, columns = 4 }) {
2492
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children: Array.from({ length: rows }).map((_, i) => (
2519
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, { children: Array.from({ length: rows }).map((_, i) => (
2493
2520
  // p-2/h-4 espelha o TableCell real. Com p-4/h-5 a linha do skeleton
2494
2521
  // ficava ~16px mais alta que a linha de dados, e a tabela encolhia
2495
2522
  // visivelmente quando a resposta chegava.
2496
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("td", { className: "p-2 align-middle first:pl-4 last:pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)
2523
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("td", { className: "p-2 align-middle first:pl-4 last:pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)
2497
2524
  )) });
2498
2525
  }
2499
2526
 
2500
2527
  // src/components/toaster.tsx
2501
2528
  var import_sonner = require("sonner");
2502
- var import_jsx_runtime32 = require("react/jsx-runtime");
2529
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2503
2530
  function Toaster(props) {
2504
2531
  const { theme = "system" } = useTheme();
2505
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2532
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2506
2533
  import_sonner.Toaster,
2507
2534
  {
2508
2535
  theme,
@@ -2629,6 +2656,7 @@ function extractApiError(err, fallbackMessage = "Ocorreu um erro inesperado.") {
2629
2656
  FormDialog,
2630
2657
  FormDialogLayout,
2631
2658
  FormField,
2659
+ HighlightPill,
2632
2660
  MobileCardList,
2633
2661
  ModeToggle,
2634
2662
  MultiCombobox,