@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.js CHANGED
@@ -978,6 +978,7 @@ var MASK_REPLACEMENT = { _: /\d/ };
978
978
  var DATE_FORMAT = "dd/MM/yyyy";
979
979
  var TIME_FORMAT = "HH:mm";
980
980
  var DATE_VALUE_FORMAT = "yyyy-MM-dd";
981
+ var DATETIME_VALUE_FORMAT = "yyyy-MM-dd'T'HH:mm";
981
982
  function pad(n) {
982
983
  return String(n).padStart(2, "0");
983
984
  }
@@ -993,8 +994,8 @@ function dateOnlyToDate(value) {
993
994
  }
994
995
  function dateTimeToDate(value) {
995
996
  if (!value) return void 0;
996
- const parsed = new Date(value);
997
- return Number.isNaN(parsed.getTime()) ? void 0 : parsed;
997
+ const parsed = parse(value, DATETIME_VALUE_FORMAT, /* @__PURE__ */ new Date());
998
+ return isValid(parsed) ? parsed : void 0;
998
999
  }
999
1000
  function displayFor(value, withTime) {
1000
1001
  const date = withTime ? dateTimeToDate(value) : dateOnlyToDate(value);
@@ -1089,7 +1090,7 @@ function DatePickerImpl({
1089
1090
  if (!time) return;
1090
1091
  const combined = new Date(date);
1091
1092
  combined.setHours(time.getHours(), time.getMinutes(), 0, 0);
1092
- onChange(combined.toISOString());
1093
+ onChange(format(combined, DATETIME_VALUE_FORMAT));
1093
1094
  setOpen(false);
1094
1095
  };
1095
1096
  const handleCalendarSelect = (date) => {
@@ -1506,9 +1507,34 @@ function FormField({ label, htmlFor, error, required, children, className }) {
1506
1507
  ] });
1507
1508
  }
1508
1509
 
1510
+ // src/components/highlight-pill.tsx
1511
+ import { jsx as jsx17 } from "react/jsx-runtime";
1512
+ function HighlightPill({
1513
+ backgroundColor,
1514
+ textColor,
1515
+ className,
1516
+ children
1517
+ }) {
1518
+ const style = {
1519
+ backgroundColor: backgroundColor ?? "var(--status-neutral-surface, #f3f4f6)",
1520
+ color: textColor ?? "var(--status-neutral-text, #374151)"
1521
+ };
1522
+ return /* @__PURE__ */ jsx17(
1523
+ "span",
1524
+ {
1525
+ style,
1526
+ className: cn(
1527
+ "inline-flex items-center rounded-md px-2 py-0.5 text-xs font-medium",
1528
+ className
1529
+ ),
1530
+ children
1531
+ }
1532
+ );
1533
+ }
1534
+
1509
1535
  // src/components/mobile-card-list.tsx
1510
1536
  import { useRef as useRef3 } from "react";
1511
- import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
1537
+ import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
1512
1538
  var SCROLL_THRESHOLD = 8;
1513
1539
  function MobileCardList({
1514
1540
  data,
@@ -1539,26 +1565,26 @@ function MobileCardList({
1539
1565
  }
1540
1566
  };
1541
1567
  if (isLoading) {
1542
- return /* @__PURE__ */ jsx17("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx17("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
1568
+ return /* @__PURE__ */ jsx18("div", { className: `space-y-3 ${className ?? ""}`, children: Array.from({ length: loadingCount }).map((_, i) => /* @__PURE__ */ jsx18("div", { className: "rounded-xl border p-4", children: /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
1543
1569
  /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
1544
- /* @__PURE__ */ jsx17("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1545
- /* @__PURE__ */ jsx17("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1570
+ /* @__PURE__ */ jsx18("div", { className: "h-5 w-32 animate-pulse rounded bg-muted" }),
1571
+ /* @__PURE__ */ jsx18("div", { className: "h-5 w-16 animate-pulse rounded bg-muted" })
1546
1572
  ] }),
1547
- /* @__PURE__ */ jsx17("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1573
+ /* @__PURE__ */ jsx18("div", { className: "h-4 w-48 animate-pulse rounded bg-muted" }),
1548
1574
  /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
1549
- /* @__PURE__ */ jsx17("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1550
- /* @__PURE__ */ jsx17("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1575
+ /* @__PURE__ */ jsx18("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
1576
+ /* @__PURE__ */ jsx18("div", { className: "h-4 w-20 animate-pulse rounded bg-muted" })
1551
1577
  ] })
1552
1578
  ] }) }, i)) });
1553
1579
  }
1554
- return /* @__PURE__ */ jsx17(
1580
+ return /* @__PURE__ */ jsx18(
1555
1581
  "div",
1556
1582
  {
1557
1583
  className: `space-y-3 ${className ?? ""}`,
1558
1584
  onTouchStart,
1559
1585
  onTouchMove,
1560
1586
  onClickCapture,
1561
- children: data.map((item, index) => /* @__PURE__ */ jsx17(
1587
+ children: data.map((item, index) => /* @__PURE__ */ jsx18(
1562
1588
  "div",
1563
1589
  {
1564
1590
  className: "rounded-xl border p-4 transition-all duration-150 hover:border-foreground/20 active:scale-[0.99]",
@@ -1603,7 +1629,7 @@ function applyCompanyTheme(root, companyTheme, mode) {
1603
1629
  }
1604
1630
 
1605
1631
  // src/components/theme-provider.tsx
1606
- import { jsx as jsx18 } from "react/jsx-runtime";
1632
+ import { jsx as jsx19 } from "react/jsx-runtime";
1607
1633
  var initialState = {
1608
1634
  theme: "system",
1609
1635
  setTheme: () => null
@@ -1642,7 +1668,7 @@ function ThemeProvider({
1642
1668
  setTheme(theme2);
1643
1669
  }
1644
1670
  };
1645
- return /* @__PURE__ */ jsx18(ThemeProviderContext.Provider, { ...props, value, children });
1671
+ return /* @__PURE__ */ jsx19(ThemeProviderContext.Provider, { ...props, value, children });
1646
1672
  }
1647
1673
  function useTheme() {
1648
1674
  const context = useContext(ThemeProviderContext);
@@ -1653,23 +1679,23 @@ function useTheme() {
1653
1679
  }
1654
1680
 
1655
1681
  // src/components/mode-toggle.tsx
1656
- import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
1682
+ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
1657
1683
  function ModeToggle() {
1658
1684
  const { setTheme } = useTheme();
1659
1685
  return /* @__PURE__ */ jsxs16(DropdownMenu2.Root, { children: [
1660
- /* @__PURE__ */ jsx19(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
1686
+ /* @__PURE__ */ jsx20(DropdownMenu2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs16(
1661
1687
  "button",
1662
1688
  {
1663
1689
  type: "button",
1664
1690
  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",
1665
1691
  "aria-label": "Alternar tema",
1666
1692
  children: [
1667
- /* @__PURE__ */ jsx19(Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1668
- /* @__PURE__ */ jsx19(Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1693
+ /* @__PURE__ */ jsx20(Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
1694
+ /* @__PURE__ */ jsx20(Moon, { className: "absolute inset-0 m-auto h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
1669
1695
  ]
1670
1696
  }
1671
1697
  ) }),
1672
- /* @__PURE__ */ jsx19(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs16(
1698
+ /* @__PURE__ */ jsx20(DropdownMenu2.Portal, { children: /* @__PURE__ */ jsxs16(
1673
1699
  DropdownMenu2.Content,
1674
1700
  {
1675
1701
  align: "end",
@@ -1681,7 +1707,7 @@ function ModeToggle() {
1681
1707
  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",
1682
1708
  onClick: () => setTheme("light"),
1683
1709
  children: [
1684
- /* @__PURE__ */ jsx19(Sun, { className: "h-4 w-4" }),
1710
+ /* @__PURE__ */ jsx20(Sun, { className: "h-4 w-4" }),
1685
1711
  " Claro"
1686
1712
  ]
1687
1713
  }
@@ -1692,7 +1718,7 @@ function ModeToggle() {
1692
1718
  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",
1693
1719
  onClick: () => setTheme("dark"),
1694
1720
  children: [
1695
- /* @__PURE__ */ jsx19(Moon, { className: "h-4 w-4" }),
1721
+ /* @__PURE__ */ jsx20(Moon, { className: "h-4 w-4" }),
1696
1722
  " Escuro"
1697
1723
  ]
1698
1724
  }
@@ -1703,7 +1729,7 @@ function ModeToggle() {
1703
1729
  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",
1704
1730
  onClick: () => setTheme("system"),
1705
1731
  children: [
1706
- /* @__PURE__ */ jsx19(Monitor, { className: "h-4 w-4" }),
1732
+ /* @__PURE__ */ jsx20(Monitor, { className: "h-4 w-4" }),
1707
1733
  " Sistema"
1708
1734
  ]
1709
1735
  }
@@ -1720,7 +1746,7 @@ import { Command as CommandPrimitive2 } from "cmdk";
1720
1746
  import { Check as Check2, ChevronsUpDown as ChevronsUpDown3, Loader2 as Loader22, Search as Search2, X as X4 } from "lucide-react";
1721
1747
  import * as React8 from "react";
1722
1748
  import { Drawer as DrawerPrimitive5 } from "vaul";
1723
- import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
1749
+ import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
1724
1750
  function MultiCombobox({
1725
1751
  options,
1726
1752
  value,
@@ -1783,13 +1809,13 @@ function MultiCombobox({
1783
1809
  className
1784
1810
  ),
1785
1811
  children: [
1786
- selected.length === 0 ? /* @__PURE__ */ jsx20("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ jsxs17(
1812
+ selected.length === 0 ? /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground", children: placeholder }) : selected.map((option) => /* @__PURE__ */ jsxs17(
1787
1813
  "span",
1788
1814
  {
1789
1815
  className: "inline-flex items-center gap-1 rounded bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground",
1790
1816
  children: [
1791
1817
  option.label,
1792
- /* @__PURE__ */ jsx20(
1818
+ /* @__PURE__ */ jsx21(
1793
1819
  "button",
1794
1820
  {
1795
1821
  type: "button",
@@ -1801,14 +1827,14 @@ function MultiCombobox({
1801
1827
  },
1802
1828
  onPointerDown: (event) => event.stopPropagation(),
1803
1829
  className: "rounded-sm opacity-60 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1804
- children: /* @__PURE__ */ jsx20(X4, { className: "h-3 w-3" })
1830
+ children: /* @__PURE__ */ jsx21(X4, { className: "h-3 w-3" })
1805
1831
  }
1806
1832
  )
1807
1833
  ]
1808
1834
  },
1809
1835
  option.value
1810
1836
  )),
1811
- /* @__PURE__ */ jsx20(ChevronsUpDown3, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1837
+ /* @__PURE__ */ jsx21(ChevronsUpDown3, { className: "ml-auto h-4 w-4 shrink-0 opacity-50" })
1812
1838
  ]
1813
1839
  }
1814
1840
  );
@@ -1819,8 +1845,8 @@ function MultiCombobox({
1819
1845
  className: "flex h-full w-full flex-col overflow-hidden",
1820
1846
  children: [
1821
1847
  /* @__PURE__ */ jsxs17("div", { className: "flex items-center border-b px-3", children: [
1822
- /* @__PURE__ */ jsx20(Search2, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1823
- /* @__PURE__ */ jsx20(
1848
+ /* @__PURE__ */ jsx21(Search2, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1849
+ /* @__PURE__ */ jsx21(
1824
1850
  CommandPrimitive2.Input,
1825
1851
  {
1826
1852
  placeholder: searchPlaceholder,
@@ -1835,7 +1861,7 @@ function MultiCombobox({
1835
1861
  ref: listRef,
1836
1862
  className: "max-h-[50vh] overflow-y-auto overflow-x-hidden p-1 sm:max-h-60",
1837
1863
  children: [
1838
- !isServer && /* @__PURE__ */ jsx20(CommandPrimitive2.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1864
+ !isServer && /* @__PURE__ */ jsx21(CommandPrimitive2.Empty, { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1839
1865
  options.map((option) => /* @__PURE__ */ jsxs17(
1840
1866
  CommandPrimitive2.Item,
1841
1867
  {
@@ -1844,7 +1870,7 @@ function MultiCombobox({
1844
1870
  onSelect: () => toggleValue(option.value),
1845
1871
  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",
1846
1872
  children: [
1847
- /* @__PURE__ */ jsx20(
1873
+ /* @__PURE__ */ jsx21(
1848
1874
  Check2,
1849
1875
  {
1850
1876
  className: cn(
@@ -1853,14 +1879,14 @@ function MultiCombobox({
1853
1879
  )
1854
1880
  }
1855
1881
  ),
1856
- /* @__PURE__ */ jsx20("span", { className: "truncate", children: option.label })
1882
+ /* @__PURE__ */ jsx21("span", { className: "truncate", children: option.label })
1857
1883
  ]
1858
1884
  },
1859
1885
  option.value
1860
1886
  )),
1861
- isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx20("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1862
- isServer && loading && /* @__PURE__ */ jsx20("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx20(Loader22, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1863
- isServer && hasMore && /* @__PURE__ */ jsx20("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1887
+ isServer && !loading && options.length === 0 && /* @__PURE__ */ jsx21("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyMessage }),
1888
+ isServer && loading && /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ jsx21(Loader22, { className: "h-4 w-4 animate-spin text-muted-foreground" }) }),
1889
+ isServer && hasMore && /* @__PURE__ */ jsx21("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1" })
1864
1890
  ]
1865
1891
  }
1866
1892
  )
@@ -1869,8 +1895,8 @@ function MultiCombobox({
1869
1895
  );
1870
1896
  if (isDesktop) {
1871
1897
  return /* @__PURE__ */ jsxs17(PopoverPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1872
- /* @__PURE__ */ jsx20(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1873
- /* @__PURE__ */ jsx20(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ jsx20(
1898
+ /* @__PURE__ */ jsx21(PopoverPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1899
+ /* @__PURE__ */ jsx21(PopoverPrimitive5.Portal, { children: /* @__PURE__ */ jsx21(
1874
1900
  PopoverPrimitive5.Content,
1875
1901
  {
1876
1902
  align: "start",
@@ -1883,12 +1909,12 @@ function MultiCombobox({
1883
1909
  ] });
1884
1910
  }
1885
1911
  return /* @__PURE__ */ jsxs17(DrawerPrimitive5.Root, { open, onOpenChange: setOpen, children: [
1886
- /* @__PURE__ */ jsx20(DrawerPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1912
+ /* @__PURE__ */ jsx21(DrawerPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
1887
1913
  /* @__PURE__ */ jsxs17(DrawerPrimitive5.Portal, { children: [
1888
- /* @__PURE__ */ jsx20(DrawerPrimitive5.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1914
+ /* @__PURE__ */ jsx21(DrawerPrimitive5.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
1889
1915
  /* @__PURE__ */ jsxs17(DrawerPrimitive5.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: [
1890
- /* @__PURE__ */ jsx20(DrawerPrimitive5.Title, { className: "sr-only", children: placeholder }),
1891
- /* @__PURE__ */ jsx20("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1916
+ /* @__PURE__ */ jsx21(DrawerPrimitive5.Title, { className: "sr-only", children: placeholder }),
1917
+ /* @__PURE__ */ jsx21("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
1892
1918
  command
1893
1919
  ] })
1894
1920
  ] })
@@ -1896,7 +1922,7 @@ function MultiCombobox({
1896
1922
  }
1897
1923
 
1898
1924
  // src/components/page-header.tsx
1899
- import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
1925
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
1900
1926
  function PageHeader({ title, description, action, className }) {
1901
1927
  return /* @__PURE__ */ jsxs18(
1902
1928
  "div",
@@ -1904,17 +1930,17 @@ function PageHeader({ title, description, action, className }) {
1904
1930
  className: `flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between ${className ?? ""}`,
1905
1931
  children: [
1906
1932
  /* @__PURE__ */ jsxs18("div", { className: "min-w-0", children: [
1907
- /* @__PURE__ */ jsx21("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
1908
- description && /* @__PURE__ */ jsx21("p", { className: "text-sm text-muted-foreground", children: description })
1933
+ /* @__PURE__ */ jsx22("h1", { className: "truncate text-2xl font-semibold tracking-tight", children: title }),
1934
+ description && /* @__PURE__ */ jsx22("p", { className: "text-sm text-muted-foreground", children: description })
1909
1935
  ] }),
1910
- action && /* @__PURE__ */ jsx21("div", { className: "shrink-0", children: action })
1936
+ action && /* @__PURE__ */ jsx22("div", { className: "shrink-0", children: action })
1911
1937
  ]
1912
1938
  }
1913
1939
  );
1914
1940
  }
1915
1941
 
1916
1942
  // src/components/pagination.tsx
1917
- import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
1943
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
1918
1944
  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";
1919
1945
  function Pagination({
1920
1946
  page,
@@ -1934,20 +1960,20 @@ function Pagination({
1934
1960
  className: `flex items-center ${showPageSizeSelector ? "justify-between" : "justify-end"} gap-4 ${className ?? ""}`,
1935
1961
  children: [
1936
1962
  showPageSizeSelector && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
1937
- /* @__PURE__ */ jsx22("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
1938
- /* @__PURE__ */ jsx22(
1963
+ /* @__PURE__ */ jsx23("label", { htmlFor: "pagination-page-size", className: "text-sm text-muted-foreground", children: "Itens por p\xE1gina" }),
1964
+ /* @__PURE__ */ jsx23(
1939
1965
  "select",
1940
1966
  {
1941
1967
  id: "pagination-page-size",
1942
1968
  value: pageSize,
1943
1969
  onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
1944
1970
  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",
1945
- children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ jsx22("option", { value: size, children: size }, size))
1971
+ children: (pageSizeOptions ?? []).map((size) => /* @__PURE__ */ jsx23("option", { value: size, children: size }, size))
1946
1972
  }
1947
1973
  )
1948
1974
  ] }),
1949
1975
  /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-4", children: [
1950
- /* @__PURE__ */ jsx22(
1976
+ /* @__PURE__ */ jsx23(
1951
1977
  "button",
1952
1978
  {
1953
1979
  type: "button",
@@ -1962,7 +1988,7 @@ function Pagination({
1962
1988
  page,
1963
1989
  totalPages ? ` de ${totalPages}` : ""
1964
1990
  ] }),
1965
- /* @__PURE__ */ jsx22(
1991
+ /* @__PURE__ */ jsx23(
1966
1992
  "button",
1967
1993
  {
1968
1994
  type: "button",
@@ -1981,11 +2007,11 @@ function Pagination({
1981
2007
  // src/components/password-input.tsx
1982
2008
  import { Eye, EyeOff } from "lucide-react";
1983
2009
  import * as React9 from "react";
1984
- import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
2010
+ import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
1985
2011
  var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props }, ref) => {
1986
2012
  const [visible, setVisible] = React9.useState(false);
1987
2013
  return /* @__PURE__ */ jsxs20("div", { className: `relative ${containerClassName ?? ""}`, children: [
1988
- /* @__PURE__ */ jsx23(
2014
+ /* @__PURE__ */ jsx24(
1989
2015
  "input",
1990
2016
  {
1991
2017
  ref,
@@ -1994,7 +2020,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
1994
2020
  ...props
1995
2021
  }
1996
2022
  ),
1997
- /* @__PURE__ */ jsx23(
2023
+ /* @__PURE__ */ jsx24(
1998
2024
  "button",
1999
2025
  {
2000
2026
  type: "button",
@@ -2002,7 +2028,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
2002
2028
  "aria-label": visible ? "Ocultar senha" : "Mostrar senha",
2003
2029
  tabIndex: -1,
2004
2030
  className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground transition-colors hover:text-foreground",
2005
- children: visible ? /* @__PURE__ */ jsx23(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx23(Eye, { className: "h-4 w-4" })
2031
+ children: visible ? /* @__PURE__ */ jsx24(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx24(Eye, { className: "h-4 w-4" })
2006
2032
  }
2007
2033
  )
2008
2034
  ] });
@@ -2010,7 +2036,7 @@ var PasswordInput = React9.forwardRef(({ containerClassName, className, ...props
2010
2036
  PasswordInput.displayName = "PasswordInput";
2011
2037
 
2012
2038
  // src/components/progress-bar.tsx
2013
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
2039
+ import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
2014
2040
  var sizeClasses3 = {
2015
2041
  sm: "h-1.5",
2016
2042
  md: "h-2"
@@ -2026,14 +2052,14 @@ function ProgressBar({
2026
2052
  const clamped = Math.min(100, Math.max(0, value));
2027
2053
  return /* @__PURE__ */ jsxs21("div", { className: `space-y-1.5 ${className ?? ""}`, children: [
2028
2054
  (label || valueLabel) && /* @__PURE__ */ jsxs21("div", { className: "flex items-baseline justify-between gap-2", children: [
2029
- label && /* @__PURE__ */ jsx24("span", { className: "text-sm text-muted-foreground", children: label }),
2030
- valueLabel && /* @__PURE__ */ jsx24("span", { className: "text-sm font-semibold", children: valueLabel })
2055
+ label && /* @__PURE__ */ jsx25("span", { className: "text-sm text-muted-foreground", children: label }),
2056
+ valueLabel && /* @__PURE__ */ jsx25("span", { className: "text-sm font-semibold", children: valueLabel })
2031
2057
  ] }),
2032
- /* @__PURE__ */ jsx24(
2058
+ /* @__PURE__ */ jsx25(
2033
2059
  "div",
2034
2060
  {
2035
2061
  className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses3[size]}`,
2036
- children: /* @__PURE__ */ jsx24(
2062
+ children: /* @__PURE__ */ jsx25(
2037
2063
  "div",
2038
2064
  {
2039
2065
  className: `h-full rounded-full transition-all duration-300 ${indicatorClassName ?? "bg-primary"}`,
@@ -2046,7 +2072,7 @@ function ProgressBar({
2046
2072
  }
2047
2073
 
2048
2074
  // src/components/responsive-data-view.tsx
2049
- import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
2075
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
2050
2076
  function ResponsiveDataView({
2051
2077
  table,
2052
2078
  cards,
@@ -2060,7 +2086,7 @@ function ResponsiveDataView({
2060
2086
  pagination
2061
2087
  }) {
2062
2088
  if (!isLoading && !isBusy && isEmpty) {
2063
- return /* @__PURE__ */ jsx25("div", { className: "rounded-md border", children: /* @__PURE__ */ jsx25(
2089
+ return /* @__PURE__ */ jsx26("div", { className: "rounded-md border", children: /* @__PURE__ */ jsx26(
2064
2090
  EmptyState,
2065
2091
  {
2066
2092
  icon: emptyIcon,
@@ -2072,7 +2098,7 @@ function ResponsiveDataView({
2072
2098
  }
2073
2099
  const busyClass = isBusy && "pointer-events-none opacity-50";
2074
2100
  return /* @__PURE__ */ jsxs22("div", { className: "space-y-4", children: [
2075
- /* @__PURE__ */ jsx25(
2101
+ /* @__PURE__ */ jsx26(
2076
2102
  "div",
2077
2103
  {
2078
2104
  "aria-busy": isBusy,
@@ -2083,7 +2109,7 @@ function ResponsiveDataView({
2083
2109
  children: table
2084
2110
  }
2085
2111
  ),
2086
- /* @__PURE__ */ jsx25("div", { "aria-busy": isBusy, className: cn("transition-opacity md:hidden", busyClass), children: cards }),
2112
+ /* @__PURE__ */ jsx26("div", { "aria-busy": isBusy, className: cn("transition-opacity md:hidden", busyClass), children: cards }),
2087
2113
  pagination
2088
2114
  ] });
2089
2115
  }
@@ -2093,7 +2119,7 @@ import * as DropdownMenu3 from "@radix-ui/react-dropdown-menu";
2093
2119
  import { ChevronRight as ChevronRight3, MoreVertical } from "lucide-react";
2094
2120
  import { useState as useState11 } from "react";
2095
2121
  import { Drawer as DrawerPrimitive6 } from "vaul";
2096
- import { Fragment as Fragment6, jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
2122
+ import { Fragment as Fragment6, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
2097
2123
  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";
2098
2124
  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";
2099
2125
  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";
@@ -2107,20 +2133,20 @@ function RowActionsMenu({
2107
2133
  const isDesktop = useIsDesktop();
2108
2134
  const [open, setOpen] = useState11(false);
2109
2135
  if (actions.length === 0) return null;
2110
- const trigger = /* @__PURE__ */ jsx26(
2136
+ const trigger = /* @__PURE__ */ jsx27(
2111
2137
  "button",
2112
2138
  {
2113
2139
  type: "button",
2114
2140
  disabled,
2115
2141
  "aria-label": label,
2116
2142
  className: triggerClass,
2117
- children: /* @__PURE__ */ jsx26(MoreVertical, { className: "h-4 w-4" })
2143
+ children: /* @__PURE__ */ jsx27(MoreVertical, { className: "h-4 w-4" })
2118
2144
  }
2119
2145
  );
2120
2146
  if (isDesktop) {
2121
2147
  return /* @__PURE__ */ jsxs23(DropdownMenu3.Root, { open, onOpenChange: setOpen, modal: false, children: [
2122
- /* @__PURE__ */ jsx26(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2123
- /* @__PURE__ */ jsx26(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx26(
2148
+ /* @__PURE__ */ jsx27(DropdownMenu3.Trigger, { asChild: true, children: trigger }),
2149
+ /* @__PURE__ */ jsx27(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx27(
2124
2150
  DropdownMenu3.Content,
2125
2151
  {
2126
2152
  align,
@@ -2141,11 +2167,11 @@ function RowActionsMenu({
2141
2167
  children: [
2142
2168
  action.icon,
2143
2169
  action.label,
2144
- /* @__PURE__ */ jsx26(ChevronRight3, { className: "ml-auto h-4 w-4 text-muted-foreground" })
2170
+ /* @__PURE__ */ jsx27(ChevronRight3, { className: "ml-auto h-4 w-4 text-muted-foreground" })
2145
2171
  ]
2146
2172
  }
2147
2173
  ),
2148
- /* @__PURE__ */ jsx26(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx26(
2174
+ /* @__PURE__ */ jsx27(DropdownMenu3.Portal, { children: /* @__PURE__ */ jsx27(
2149
2175
  DropdownMenu3.SubContent,
2150
2176
  {
2151
2177
  sideOffset: 4,
@@ -2170,7 +2196,7 @@ function RowActionsMenu({
2170
2196
  ) })
2171
2197
  ] }, action.label);
2172
2198
  }
2173
- return action.href ? /* @__PURE__ */ jsx26(
2199
+ return action.href ? /* @__PURE__ */ jsx27(
2174
2200
  DropdownMenu3.Item,
2175
2201
  {
2176
2202
  asChild: true,
@@ -2204,12 +2230,12 @@ function RowActionsMenu({
2204
2230
  ] });
2205
2231
  }
2206
2232
  return /* @__PURE__ */ jsxs23(DrawerPrimitive6.Root, { open, onOpenChange: setOpen, children: [
2207
- /* @__PURE__ */ jsx26(DrawerPrimitive6.Trigger, { asChild: true, children: trigger }),
2233
+ /* @__PURE__ */ jsx27(DrawerPrimitive6.Trigger, { asChild: true, children: trigger }),
2208
2234
  /* @__PURE__ */ jsxs23(DrawerPrimitive6.Portal, { children: [
2209
- /* @__PURE__ */ jsx26(DrawerPrimitive6.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2235
+ /* @__PURE__ */ jsx27(DrawerPrimitive6.Overlay, { className: "fixed inset-0 z-50 bg-black/80" }),
2210
2236
  /* @__PURE__ */ jsxs23(DrawerPrimitive6.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: [
2211
- /* @__PURE__ */ jsx26(DrawerPrimitive6.Title, { className: "sr-only", children: label }),
2212
- /* @__PURE__ */ jsx26("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2237
+ /* @__PURE__ */ jsx27(DrawerPrimitive6.Title, { className: "sr-only", children: label }),
2238
+ /* @__PURE__ */ jsx27("div", { className: "mx-auto my-3 h-1.5 w-12 shrink-0 rounded-full bg-muted" }),
2213
2239
  actions.map((action) => {
2214
2240
  const cls = cn(
2215
2241
  sheetItemClass2,
@@ -2221,7 +2247,7 @@ function RowActionsMenu({
2221
2247
  ] });
2222
2248
  if (action.children?.length) {
2223
2249
  return /* @__PURE__ */ jsxs23("div", { children: [
2224
- /* @__PURE__ */ jsx26("div", { className: "mx-3 my-1 h-px bg-border" }),
2250
+ /* @__PURE__ */ jsx27("div", { className: "mx-3 my-1 h-px bg-border" }),
2225
2251
  /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3 px-3 pb-1 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: [
2226
2252
  action.icon,
2227
2253
  action.label
@@ -2246,10 +2272,10 @@ function RowActionsMenu({
2246
2272
  },
2247
2273
  child.label
2248
2274
  )),
2249
- /* @__PURE__ */ jsx26("div", { className: "mx-3 my-1 h-px bg-border" })
2275
+ /* @__PURE__ */ jsx27("div", { className: "mx-3 my-1 h-px bg-border" })
2250
2276
  ] }, action.label);
2251
2277
  }
2252
- return action.href ? /* @__PURE__ */ jsx26(
2278
+ return action.href ? /* @__PURE__ */ jsx27(
2253
2279
  "span",
2254
2280
  {
2255
2281
  onClick: () => setOpen(false),
@@ -2261,7 +2287,7 @@ function RowActionsMenu({
2261
2287
  })
2262
2288
  },
2263
2289
  action.label
2264
- ) : /* @__PURE__ */ jsx26(
2290
+ ) : /* @__PURE__ */ jsx27(
2265
2291
  "button",
2266
2292
  {
2267
2293
  type: "button",
@@ -2283,7 +2309,7 @@ function RowActionsMenu({
2283
2309
 
2284
2310
  // src/components/search-input.tsx
2285
2311
  import * as React10 from "react";
2286
- import { jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
2312
+ import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
2287
2313
  var SearchInput = React10.forwardRef(
2288
2314
  ({ containerClassName, className, ...props }, ref) => {
2289
2315
  return /* @__PURE__ */ jsxs24("div", { className: cn("relative flex-1", containerClassName), children: [
@@ -2302,12 +2328,12 @@ var SearchInput = React10.forwardRef(
2302
2328
  "aria-hidden": "true",
2303
2329
  className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",
2304
2330
  children: [
2305
- /* @__PURE__ */ jsx27("circle", { cx: "11", cy: "11", r: "8" }),
2306
- /* @__PURE__ */ jsx27("path", { d: "m21 21-4.3-4.3" })
2331
+ /* @__PURE__ */ jsx28("circle", { cx: "11", cy: "11", r: "8" }),
2332
+ /* @__PURE__ */ jsx28("path", { d: "m21 21-4.3-4.3" })
2307
2333
  ]
2308
2334
  }
2309
2335
  ),
2310
- /* @__PURE__ */ jsx27(
2336
+ /* @__PURE__ */ jsx28(
2311
2337
  "input",
2312
2338
  {
2313
2339
  ref,
@@ -2325,30 +2351,30 @@ var SearchInput = React10.forwardRef(
2325
2351
  SearchInput.displayName = "SearchInput";
2326
2352
 
2327
2353
  // src/components/stat-card.tsx
2328
- import { jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
2354
+ import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
2329
2355
  function StatCard({ label, value, detail, icon, isLoading }) {
2330
2356
  if (isLoading) {
2331
2357
  return /* @__PURE__ */ jsxs25("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2332
2358
  /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between pb-2", children: [
2333
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2334
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2359
+ /* @__PURE__ */ jsx29("div", { className: "h-4 w-24 animate-pulse rounded bg-muted" }),
2360
+ /* @__PURE__ */ jsx29("div", { className: "h-4 w-4 animate-pulse rounded bg-muted" })
2335
2361
  ] }),
2336
- /* @__PURE__ */ jsx28("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2337
- /* @__PURE__ */ jsx28("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2362
+ /* @__PURE__ */ jsx29("div", { className: "mt-2 h-7 w-16 animate-pulse rounded bg-muted" }),
2363
+ /* @__PURE__ */ jsx29("div", { className: "mt-1 h-4 w-20 animate-pulse rounded bg-muted" })
2338
2364
  ] });
2339
2365
  }
2340
2366
  return /* @__PURE__ */ jsxs25("div", { className: "rounded-lg border bg-card p-6 shadow-sm", children: [
2341
2367
  /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between pb-2", children: [
2342
- /* @__PURE__ */ jsx28("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2343
- icon && /* @__PURE__ */ jsx28("span", { className: "text-muted-foreground", children: icon })
2368
+ /* @__PURE__ */ jsx29("span", { className: "text-sm font-medium text-muted-foreground", children: label }),
2369
+ icon && /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground", children: icon })
2344
2370
  ] }),
2345
- /* @__PURE__ */ jsx28("div", { className: "text-2xl font-bold", children: value }),
2346
- detail && /* @__PURE__ */ jsx28("p", { className: "text-xs text-muted-foreground", children: detail })
2371
+ /* @__PURE__ */ jsx29("div", { className: "text-2xl font-bold", children: value }),
2372
+ detail && /* @__PURE__ */ jsx29("p", { className: "text-xs text-muted-foreground", children: detail })
2347
2373
  ] });
2348
2374
  }
2349
2375
 
2350
2376
  // src/components/status-badge.tsx
2351
- import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
2377
+ import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
2352
2378
  var variantClasses = {
2353
2379
  neutral: {
2354
2380
  badge: "bg-[var(--status-neutral-surface,#f3f4f6)] text-[var(--status-neutral-text,#374151)]",
@@ -2383,7 +2409,7 @@ function StatusBadge({
2383
2409
  {
2384
2410
  className: `inline-flex items-center gap-1.5 rounded-md px-2 py-0.5 text-xs font-medium ${classes.badge} ${className ?? ""}`,
2385
2411
  children: [
2386
- dot && /* @__PURE__ */ jsx29(
2412
+ dot && /* @__PURE__ */ jsx30(
2387
2413
  "span",
2388
2414
  {
2389
2415
  className: `inline-block h-1.5 w-1.5 shrink-0 rounded-full ${classes.dot}`
@@ -2396,36 +2422,36 @@ function StatusBadge({
2396
2422
  }
2397
2423
 
2398
2424
  // src/components/status-dot.tsx
2399
- import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
2425
+ import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
2400
2426
  function StatusDot({ active, label, className }) {
2401
2427
  return /* @__PURE__ */ jsxs27("span", { className: `inline-flex items-center gap-2 ${className ?? ""}`, children: [
2402
- /* @__PURE__ */ jsx30(
2428
+ /* @__PURE__ */ jsx31(
2403
2429
  "span",
2404
2430
  {
2405
2431
  className: `h-2 w-2 rounded-full ${active ? "bg-green-500" : "bg-red-500"}`
2406
2432
  }
2407
2433
  ),
2408
- label && /* @__PURE__ */ jsx30("span", { children: label })
2434
+ label && /* @__PURE__ */ jsx31("span", { children: label })
2409
2435
  ] });
2410
2436
  }
2411
2437
 
2412
2438
  // src/components/table-skeleton.tsx
2413
- import { Fragment as Fragment7, jsx as jsx31 } from "react/jsx-runtime";
2439
+ import { Fragment as Fragment7, jsx as jsx32 } from "react/jsx-runtime";
2414
2440
  function TableSkeleton({ rows = 5, columns = 4 }) {
2415
- return /* @__PURE__ */ jsx31(Fragment7, { children: Array.from({ length: rows }).map((_, i) => (
2441
+ return /* @__PURE__ */ jsx32(Fragment7, { children: Array.from({ length: rows }).map((_, i) => (
2416
2442
  // p-2/h-4 espelha o TableCell real. Com p-4/h-5 a linha do skeleton
2417
2443
  // ficava ~16px mais alta que a linha de dados, e a tabela encolhia
2418
2444
  // visivelmente quando a resposta chegava.
2419
- /* @__PURE__ */ jsx31("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx31("td", { className: "p-2 align-middle first:pl-4 last:pr-4", children: /* @__PURE__ */ jsx31("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)
2445
+ /* @__PURE__ */ jsx32("tr", { className: "border-b transition-colors", children: Array.from({ length: columns }).map((_2, j) => /* @__PURE__ */ jsx32("td", { className: "p-2 align-middle first:pl-4 last:pr-4", children: /* @__PURE__ */ jsx32("div", { className: "h-4 w-full animate-pulse rounded bg-muted" }) }, j)) }, i)
2420
2446
  )) });
2421
2447
  }
2422
2448
 
2423
2449
  // src/components/toaster.tsx
2424
2450
  import { Toaster as Sonner } from "sonner";
2425
- import { jsx as jsx32 } from "react/jsx-runtime";
2451
+ import { jsx as jsx33 } from "react/jsx-runtime";
2426
2452
  function Toaster(props) {
2427
2453
  const { theme = "system" } = useTheme();
2428
- return /* @__PURE__ */ jsx32(
2454
+ return /* @__PURE__ */ jsx33(
2429
2455
  Sonner,
2430
2456
  {
2431
2457
  theme,
@@ -2551,6 +2577,7 @@ export {
2551
2577
  FormDialog,
2552
2578
  FormDialogLayout,
2553
2579
  FormField,
2580
+ HighlightPill,
2554
2581
  MobileCardList,
2555
2582
  ModeToggle,
2556
2583
  MultiCombobox,