@motor-hero/ui-kit 0.42.0 → 0.43.1

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