@motor-hero/ui-kit 0.42.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/components/highlight-pill.d.ts +18 -0
- package/dist/components/highlight-pill.d.ts.map +1 -0
- package/dist/index.cjs +173 -146
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +126 -100
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/highlight-pill.tsx +43 -0
- package/src/index.ts +2 -0
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
|
|
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__ */
|
|
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__ */
|
|
1546
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1551
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
1669
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1824
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1863
|
-
isServer && loading && /* @__PURE__ */
|
|
1864
|
-
isServer && hasMore && /* @__PURE__ */
|
|
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__ */
|
|
1874
|
-
/* @__PURE__ */
|
|
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__ */
|
|
1912
|
+
/* @__PURE__ */ jsx21(DrawerPrimitive5.Trigger, { asChild: true, disabled, children: trigger }),
|
|
1888
1913
|
/* @__PURE__ */ jsxs17(DrawerPrimitive5.Portal, { children: [
|
|
1889
|
-
/* @__PURE__ */
|
|
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__ */
|
|
1892
|
-
/* @__PURE__ */
|
|
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
|
|
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__ */
|
|
1909
|
-
description && /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
1939
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
2031
|
-
valueLabel && /* @__PURE__ */
|
|
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__ */
|
|
2058
|
+
/* @__PURE__ */ jsx25(
|
|
2034
2059
|
"div",
|
|
2035
2060
|
{
|
|
2036
2061
|
className: `w-full overflow-hidden rounded-full bg-muted ${sizeClasses3[size]}`,
|
|
2037
|
-
children: /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
2124
|
-
/* @__PURE__ */
|
|
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__ */
|
|
2170
|
+
/* @__PURE__ */ jsx27(ChevronRight3, { className: "ml-auto h-4 w-4 text-muted-foreground" })
|
|
2146
2171
|
]
|
|
2147
2172
|
}
|
|
2148
2173
|
),
|
|
2149
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
2233
|
+
/* @__PURE__ */ jsx27(DrawerPrimitive6.Trigger, { asChild: true, children: trigger }),
|
|
2209
2234
|
/* @__PURE__ */ jsxs23(DrawerPrimitive6.Portal, { children: [
|
|
2210
|
-
/* @__PURE__ */
|
|
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__ */
|
|
2213
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
2275
|
+
/* @__PURE__ */ jsx27("div", { className: "mx-3 my-1 h-px bg-border" })
|
|
2251
2276
|
] }, action.label);
|
|
2252
2277
|
}
|
|
2253
|
-
return action.href ? /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
2307
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
2335
|
-
/* @__PURE__ */
|
|
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__ */
|
|
2338
|
-
/* @__PURE__ */
|
|
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__ */
|
|
2344
|
-
icon && /* @__PURE__ */
|
|
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__ */
|
|
2347
|
-
detail && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
|
2439
|
+
import { Fragment as Fragment7, jsx as jsx32 } from "react/jsx-runtime";
|
|
2415
2440
|
function TableSkeleton({ rows = 5, columns = 4 }) {
|
|
2416
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
2451
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
2427
2452
|
function Toaster(props) {
|
|
2428
2453
|
const { theme = "system" } = useTheme();
|
|
2429
|
-
return /* @__PURE__ */
|
|
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,
|