@prediktif/ui 0.1.21 → 0.1.23
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.d.mts +52 -1
- package/dist/index.d.ts +52 -1
- package/dist/index.js +1007 -341
- package/dist/index.mjs +979 -311
- package/package.json +5 -2
package/dist/index.mjs
CHANGED
|
@@ -1472,6 +1472,147 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1472
1472
|
] });
|
|
1473
1473
|
});
|
|
1474
1474
|
|
|
1475
|
+
// src/components/composed/columns/avatar-user.tsx
|
|
1476
|
+
import { memo as memo2 } from "react";
|
|
1477
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1478
|
+
function getInitials(name) {
|
|
1479
|
+
if (name) {
|
|
1480
|
+
return name.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
|
|
1481
|
+
}
|
|
1482
|
+
return "U";
|
|
1483
|
+
}
|
|
1484
|
+
var AvatarUser = memo2(function AvatarUser2({
|
|
1485
|
+
name,
|
|
1486
|
+
image
|
|
1487
|
+
}) {
|
|
1488
|
+
return /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
1489
|
+
/* @__PURE__ */ jsxs8(Avatar, { size: "sm", children: [
|
|
1490
|
+
/* @__PURE__ */ jsx13(AvatarImage, { src: image != null ? image : void 0, alt: name != null ? name : void 0 }),
|
|
1491
|
+
/* @__PURE__ */ jsx13(AvatarFallback, { children: getInitials(name) })
|
|
1492
|
+
] }),
|
|
1493
|
+
/* @__PURE__ */ jsx13("p", { className: "text-xs font-medium", children: name })
|
|
1494
|
+
] });
|
|
1495
|
+
});
|
|
1496
|
+
|
|
1497
|
+
// src/components/composed/columns/email-label.tsx
|
|
1498
|
+
import { memo as memo3 } from "react";
|
|
1499
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1500
|
+
var EmailLabel = memo3(function EmailLabel2({ email }) {
|
|
1501
|
+
return /* @__PURE__ */ jsx14("span", { className: "text-xs font-mono", children: email });
|
|
1502
|
+
});
|
|
1503
|
+
|
|
1504
|
+
// src/components/composed/columns/email-verified.tsx
|
|
1505
|
+
import { BadgeCheck } from "lucide-react";
|
|
1506
|
+
import { memo as memo4 } from "react";
|
|
1507
|
+
|
|
1508
|
+
// src/components/ui/badge.tsx
|
|
1509
|
+
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1510
|
+
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1511
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
1512
|
+
import { cn as cn12 } from "cn";
|
|
1513
|
+
var badgeVariants = cva3(
|
|
1514
|
+
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",
|
|
1515
|
+
{
|
|
1516
|
+
variants: {
|
|
1517
|
+
variant: {
|
|
1518
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
1519
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
1520
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
1521
|
+
outline: "border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
1522
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
1523
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
1524
|
+
}
|
|
1525
|
+
},
|
|
1526
|
+
defaultVariants: {
|
|
1527
|
+
variant: "default"
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
);
|
|
1531
|
+
function Badge(_a) {
|
|
1532
|
+
var _b = _a, {
|
|
1533
|
+
className,
|
|
1534
|
+
variant = "default",
|
|
1535
|
+
render
|
|
1536
|
+
} = _b, props = __objRest(_b, [
|
|
1537
|
+
"className",
|
|
1538
|
+
"variant",
|
|
1539
|
+
"render"
|
|
1540
|
+
]);
|
|
1541
|
+
return useRender3({
|
|
1542
|
+
defaultTagName: "span",
|
|
1543
|
+
props: mergeProps3(
|
|
1544
|
+
{
|
|
1545
|
+
className: cn12(badgeVariants({ variant }), className)
|
|
1546
|
+
},
|
|
1547
|
+
props
|
|
1548
|
+
),
|
|
1549
|
+
render,
|
|
1550
|
+
state: {
|
|
1551
|
+
slot: "badge",
|
|
1552
|
+
variant
|
|
1553
|
+
}
|
|
1554
|
+
});
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
// src/components/composed/columns/email-verified.tsx
|
|
1558
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1559
|
+
var EmailVerified = memo4(function EmailVerified2({
|
|
1560
|
+
verified
|
|
1561
|
+
}) {
|
|
1562
|
+
return verified ? /* @__PURE__ */ jsxs9(Badge, { variant: "default", children: [
|
|
1563
|
+
/* @__PURE__ */ jsx15(BadgeCheck, { "data-icon": "inline-start" }),
|
|
1564
|
+
"Verified"
|
|
1565
|
+
] }) : /* @__PURE__ */ jsxs9(Badge, { variant: "destructive", children: [
|
|
1566
|
+
/* @__PURE__ */ jsx15(BadgeCheck, { "data-icon": "inline-start" }),
|
|
1567
|
+
"Unverified"
|
|
1568
|
+
] });
|
|
1569
|
+
});
|
|
1570
|
+
|
|
1571
|
+
// src/components/composed/columns/joined-label.tsx
|
|
1572
|
+
import { memo as memo5 } from "react";
|
|
1573
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
1574
|
+
var JoinedLabel = memo5(function JoinedLabel2({
|
|
1575
|
+
joined,
|
|
1576
|
+
locale = "id-ID"
|
|
1577
|
+
}) {
|
|
1578
|
+
if (!joined) return null;
|
|
1579
|
+
const date = typeof joined === "string" ? new Date(joined) : joined;
|
|
1580
|
+
if (Number.isNaN(date.getTime())) return null;
|
|
1581
|
+
return /* @__PURE__ */ jsx16("span", { className: "text-xs font-mono", children: new Intl.DateTimeFormat(locale, {
|
|
1582
|
+
day: "numeric",
|
|
1583
|
+
month: "long",
|
|
1584
|
+
year: "numeric"
|
|
1585
|
+
}).format(date) });
|
|
1586
|
+
});
|
|
1587
|
+
|
|
1588
|
+
// src/components/composed/columns/user-role.tsx
|
|
1589
|
+
import { UserIcon, UserStarIcon } from "lucide-react";
|
|
1590
|
+
import { memo as memo6 } from "react";
|
|
1591
|
+
import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1592
|
+
var UserRole = memo6(function UserRole2({ role }) {
|
|
1593
|
+
const isAdmin = role === "admin";
|
|
1594
|
+
return /* @__PURE__ */ jsxs10(Badge, { variant: "outline", className: "capitalize", children: [
|
|
1595
|
+
isAdmin ? /* @__PURE__ */ jsx17(UserStarIcon, { "data-icon": "inline-start" }) : /* @__PURE__ */ jsx17(UserIcon, { "data-icon": "inline-start" }),
|
|
1596
|
+
role
|
|
1597
|
+
] });
|
|
1598
|
+
});
|
|
1599
|
+
|
|
1600
|
+
// src/components/composed/columns/user-status.tsx
|
|
1601
|
+
import { BadgeCheck as BadgeCheck2 } from "lucide-react";
|
|
1602
|
+
import { memo as memo7 } from "react";
|
|
1603
|
+
import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1604
|
+
var UserStatus = memo7(function UserStatus2({
|
|
1605
|
+
status
|
|
1606
|
+
}) {
|
|
1607
|
+
return status ? /* @__PURE__ */ jsxs11(Badge, { variant: "destructive", children: [
|
|
1608
|
+
/* @__PURE__ */ jsx18(BadgeCheck2, { "data-icon": "inline-start" }),
|
|
1609
|
+
"Inactive"
|
|
1610
|
+
] }) : /* @__PURE__ */ jsxs11(Badge, { variant: "default", children: [
|
|
1611
|
+
/* @__PURE__ */ jsx18(BadgeCheck2, { "data-icon": "inline-start" }),
|
|
1612
|
+
"Active"
|
|
1613
|
+
] });
|
|
1614
|
+
});
|
|
1615
|
+
|
|
1475
1616
|
// src/components/composed/data-table/data-table.tsx
|
|
1476
1617
|
import {
|
|
1477
1618
|
flexRender as flexRender3,
|
|
@@ -1482,19 +1623,19 @@ import { useRouter as useRouter2 } from "next/navigation";
|
|
|
1482
1623
|
import { useMemo as useMemo3, useState as useState5 } from "react";
|
|
1483
1624
|
|
|
1484
1625
|
// src/components/composed/state-empty.tsx
|
|
1485
|
-
import { memo as
|
|
1626
|
+
import { memo as memo8 } from "react";
|
|
1486
1627
|
|
|
1487
1628
|
// src/components/ui/empty.tsx
|
|
1488
|
-
import { cva as
|
|
1489
|
-
import { cn as
|
|
1490
|
-
import { jsx as
|
|
1629
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
1630
|
+
import { cn as cn13 } from "cn";
|
|
1631
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1491
1632
|
function Empty(_a) {
|
|
1492
1633
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1493
|
-
return /* @__PURE__ */
|
|
1634
|
+
return /* @__PURE__ */ jsx19(
|
|
1494
1635
|
"div",
|
|
1495
1636
|
__spreadValues({
|
|
1496
1637
|
"data-slot": "empty",
|
|
1497
|
-
className:
|
|
1638
|
+
className: cn13(
|
|
1498
1639
|
"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",
|
|
1499
1640
|
className
|
|
1500
1641
|
)
|
|
@@ -1503,15 +1644,15 @@ function Empty(_a) {
|
|
|
1503
1644
|
}
|
|
1504
1645
|
function EmptyHeader(_a) {
|
|
1505
1646
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1506
|
-
return /* @__PURE__ */
|
|
1647
|
+
return /* @__PURE__ */ jsx19(
|
|
1507
1648
|
"div",
|
|
1508
1649
|
__spreadValues({
|
|
1509
1650
|
"data-slot": "empty-header",
|
|
1510
|
-
className:
|
|
1651
|
+
className: cn13("flex max-w-sm flex-col items-center gap-1", className)
|
|
1511
1652
|
}, props)
|
|
1512
1653
|
);
|
|
1513
1654
|
}
|
|
1514
|
-
var emptyMediaVariants =
|
|
1655
|
+
var emptyMediaVariants = cva4(
|
|
1515
1656
|
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
1516
1657
|
{
|
|
1517
1658
|
variants: {
|
|
@@ -1533,22 +1674,22 @@ function EmptyMedia(_a) {
|
|
|
1533
1674
|
"className",
|
|
1534
1675
|
"variant"
|
|
1535
1676
|
]);
|
|
1536
|
-
return /* @__PURE__ */
|
|
1677
|
+
return /* @__PURE__ */ jsx19(
|
|
1537
1678
|
"div",
|
|
1538
1679
|
__spreadValues({
|
|
1539
1680
|
"data-slot": "empty-icon",
|
|
1540
1681
|
"data-variant": variant,
|
|
1541
|
-
className:
|
|
1682
|
+
className: cn13(emptyMediaVariants({ variant, className }))
|
|
1542
1683
|
}, props)
|
|
1543
1684
|
);
|
|
1544
1685
|
}
|
|
1545
1686
|
function EmptyTitle(_a) {
|
|
1546
1687
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1547
|
-
return /* @__PURE__ */
|
|
1688
|
+
return /* @__PURE__ */ jsx19(
|
|
1548
1689
|
"div",
|
|
1549
1690
|
__spreadValues({
|
|
1550
1691
|
"data-slot": "empty-title",
|
|
1551
|
-
className:
|
|
1692
|
+
className: cn13(
|
|
1552
1693
|
"font-heading text-sm font-medium tracking-tight",
|
|
1553
1694
|
className
|
|
1554
1695
|
)
|
|
@@ -1557,11 +1698,11 @@ function EmptyTitle(_a) {
|
|
|
1557
1698
|
}
|
|
1558
1699
|
function EmptyDescription(_a) {
|
|
1559
1700
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1560
|
-
return /* @__PURE__ */
|
|
1701
|
+
return /* @__PURE__ */ jsx19(
|
|
1561
1702
|
"div",
|
|
1562
1703
|
__spreadValues({
|
|
1563
1704
|
"data-slot": "empty-description",
|
|
1564
|
-
className:
|
|
1705
|
+
className: cn13(
|
|
1565
1706
|
"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
1566
1707
|
className
|
|
1567
1708
|
)
|
|
@@ -1570,11 +1711,11 @@ function EmptyDescription(_a) {
|
|
|
1570
1711
|
}
|
|
1571
1712
|
function EmptyContent(_a) {
|
|
1572
1713
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1573
|
-
return /* @__PURE__ */
|
|
1714
|
+
return /* @__PURE__ */ jsx19(
|
|
1574
1715
|
"div",
|
|
1575
1716
|
__spreadValues({
|
|
1576
1717
|
"data-slot": "empty-content",
|
|
1577
|
-
className:
|
|
1718
|
+
className: cn13(
|
|
1578
1719
|
"flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance",
|
|
1579
1720
|
className
|
|
1580
1721
|
)
|
|
@@ -1583,18 +1724,18 @@ function EmptyContent(_a) {
|
|
|
1583
1724
|
}
|
|
1584
1725
|
|
|
1585
1726
|
// src/lib/utils.ts
|
|
1586
|
-
import { cn as
|
|
1727
|
+
import { cn as cn14 } from "cn";
|
|
1587
1728
|
|
|
1588
1729
|
// src/components/composed/state-empty.tsx
|
|
1589
|
-
import { jsx as
|
|
1730
|
+
import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1590
1731
|
function renderStateIcon(icon) {
|
|
1591
1732
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
1592
1733
|
const IconComp = icon;
|
|
1593
|
-
return /* @__PURE__ */
|
|
1734
|
+
return /* @__PURE__ */ jsx20(IconComp, {});
|
|
1594
1735
|
}
|
|
1595
1736
|
return icon;
|
|
1596
1737
|
}
|
|
1597
|
-
var StateEmpty =
|
|
1738
|
+
var StateEmpty = memo8(function StateEmpty2({
|
|
1598
1739
|
icon,
|
|
1599
1740
|
title,
|
|
1600
1741
|
description,
|
|
@@ -1607,17 +1748,17 @@ var StateEmpty = memo2(function StateEmpty2({
|
|
|
1607
1748
|
const actionHandler = isFunctionAction ? render : onClick;
|
|
1608
1749
|
const buttonRender = isFunctionAction ? void 0 : render;
|
|
1609
1750
|
const hasAction = Boolean(buttonText || render || onClick);
|
|
1610
|
-
return /* @__PURE__ */
|
|
1751
|
+
return /* @__PURE__ */ jsxs12(
|
|
1611
1752
|
Empty,
|
|
1612
1753
|
{
|
|
1613
|
-
className:
|
|
1754
|
+
className: cn14("w-full", state === "outline" && "border border-dashed"),
|
|
1614
1755
|
children: [
|
|
1615
|
-
/* @__PURE__ */
|
|
1616
|
-
/* @__PURE__ */
|
|
1617
|
-
/* @__PURE__ */
|
|
1618
|
-
/* @__PURE__ */
|
|
1756
|
+
/* @__PURE__ */ jsxs12(EmptyHeader, { children: [
|
|
1757
|
+
/* @__PURE__ */ jsx20(EmptyMedia, { variant: "icon", children: renderStateIcon(icon) }),
|
|
1758
|
+
/* @__PURE__ */ jsx20(EmptyTitle, { children: title }),
|
|
1759
|
+
/* @__PURE__ */ jsx20(EmptyDescription, { children: description })
|
|
1619
1760
|
] }),
|
|
1620
|
-
hasAction && /* @__PURE__ */
|
|
1761
|
+
hasAction && /* @__PURE__ */ jsx20(EmptyContent, { children: /* @__PURE__ */ jsx20(
|
|
1621
1762
|
Button,
|
|
1622
1763
|
{
|
|
1623
1764
|
variant: "outline",
|
|
@@ -1634,20 +1775,20 @@ var StateEmpty = memo2(function StateEmpty2({
|
|
|
1634
1775
|
});
|
|
1635
1776
|
|
|
1636
1777
|
// src/components/ui/table.tsx
|
|
1637
|
-
import { cn as
|
|
1638
|
-
import { jsx as
|
|
1778
|
+
import { cn as cn15 } from "cn";
|
|
1779
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1639
1780
|
function Table(_a) {
|
|
1640
1781
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1641
|
-
return /* @__PURE__ */
|
|
1782
|
+
return /* @__PURE__ */ jsx21(
|
|
1642
1783
|
"div",
|
|
1643
1784
|
{
|
|
1644
1785
|
"data-slot": "table-container",
|
|
1645
1786
|
className: "relative w-full overflow-x-auto",
|
|
1646
|
-
children: /* @__PURE__ */
|
|
1787
|
+
children: /* @__PURE__ */ jsx21(
|
|
1647
1788
|
"table",
|
|
1648
1789
|
__spreadValues({
|
|
1649
1790
|
"data-slot": "table",
|
|
1650
|
-
className:
|
|
1791
|
+
className: cn15("w-full caption-bottom text-xs", className)
|
|
1651
1792
|
}, props)
|
|
1652
1793
|
)
|
|
1653
1794
|
}
|
|
@@ -1655,31 +1796,31 @@ function Table(_a) {
|
|
|
1655
1796
|
}
|
|
1656
1797
|
function TableHeader(_a) {
|
|
1657
1798
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1658
|
-
return /* @__PURE__ */
|
|
1799
|
+
return /* @__PURE__ */ jsx21(
|
|
1659
1800
|
"thead",
|
|
1660
1801
|
__spreadValues({
|
|
1661
1802
|
"data-slot": "table-header",
|
|
1662
|
-
className:
|
|
1803
|
+
className: cn15("[&_tr]:border-b", className)
|
|
1663
1804
|
}, props)
|
|
1664
1805
|
);
|
|
1665
1806
|
}
|
|
1666
1807
|
function TableBody(_a) {
|
|
1667
1808
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1668
|
-
return /* @__PURE__ */
|
|
1809
|
+
return /* @__PURE__ */ jsx21(
|
|
1669
1810
|
"tbody",
|
|
1670
1811
|
__spreadValues({
|
|
1671
1812
|
"data-slot": "table-body",
|
|
1672
|
-
className:
|
|
1813
|
+
className: cn15("[&_tr:last-child]:border-0", className)
|
|
1673
1814
|
}, props)
|
|
1674
1815
|
);
|
|
1675
1816
|
}
|
|
1676
1817
|
function TableRow(_a) {
|
|
1677
1818
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1678
|
-
return /* @__PURE__ */
|
|
1819
|
+
return /* @__PURE__ */ jsx21(
|
|
1679
1820
|
"tr",
|
|
1680
1821
|
__spreadValues({
|
|
1681
1822
|
"data-slot": "table-row",
|
|
1682
|
-
className:
|
|
1823
|
+
className: cn15(
|
|
1683
1824
|
"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",
|
|
1684
1825
|
className
|
|
1685
1826
|
)
|
|
@@ -1688,11 +1829,11 @@ function TableRow(_a) {
|
|
|
1688
1829
|
}
|
|
1689
1830
|
function TableHead(_a) {
|
|
1690
1831
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1691
|
-
return /* @__PURE__ */
|
|
1832
|
+
return /* @__PURE__ */ jsx21(
|
|
1692
1833
|
"th",
|
|
1693
1834
|
__spreadValues({
|
|
1694
1835
|
"data-slot": "table-head",
|
|
1695
|
-
className:
|
|
1836
|
+
className: cn15(
|
|
1696
1837
|
"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
|
|
1697
1838
|
className
|
|
1698
1839
|
)
|
|
@@ -1701,11 +1842,11 @@ function TableHead(_a) {
|
|
|
1701
1842
|
}
|
|
1702
1843
|
function TableCell(_a) {
|
|
1703
1844
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1704
|
-
return /* @__PURE__ */
|
|
1845
|
+
return /* @__PURE__ */ jsx21(
|
|
1705
1846
|
"td",
|
|
1706
1847
|
__spreadValues({
|
|
1707
1848
|
"data-slot": "table-cell",
|
|
1708
|
-
className:
|
|
1849
|
+
className: cn15(
|
|
1709
1850
|
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
|
|
1710
1851
|
className
|
|
1711
1852
|
)
|
|
@@ -1758,19 +1899,19 @@ import {
|
|
|
1758
1899
|
flexRender
|
|
1759
1900
|
} from "@tanstack/react-table";
|
|
1760
1901
|
import { SearchXIcon } from "lucide-react";
|
|
1761
|
-
import { jsx as
|
|
1902
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1762
1903
|
function DataTableContentBody({
|
|
1763
1904
|
table,
|
|
1764
1905
|
columns
|
|
1765
1906
|
}) {
|
|
1766
1907
|
const rows = table.getRowModel().rows;
|
|
1767
1908
|
if (rows == null ? void 0 : rows.length) {
|
|
1768
|
-
return /* @__PURE__ */
|
|
1909
|
+
return /* @__PURE__ */ jsx22(TableBody, { children: rows.map((row) => /* @__PURE__ */ jsx22(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx22(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) });
|
|
1769
1910
|
}
|
|
1770
|
-
return /* @__PURE__ */
|
|
1911
|
+
return /* @__PURE__ */ jsx22(TableBody, { children: /* @__PURE__ */ jsx22(TableRow, { children: /* @__PURE__ */ jsx22(TableCell, { colSpan: columns.length, className: "h-48 text-center", children: /* @__PURE__ */ jsx22(
|
|
1771
1912
|
StateEmpty,
|
|
1772
1913
|
{
|
|
1773
|
-
icon: /* @__PURE__ */
|
|
1914
|
+
icon: /* @__PURE__ */ jsx22(SearchXIcon, {}),
|
|
1774
1915
|
title: "No matching results",
|
|
1775
1916
|
description: "No records matched your search query or filter criteria.",
|
|
1776
1917
|
buttonText: "Clear search & filters",
|
|
@@ -1784,18 +1925,18 @@ function DataTableContentBody({
|
|
|
1784
1925
|
|
|
1785
1926
|
// src/components/composed/data-table/table-content-header.tsx
|
|
1786
1927
|
import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
1787
|
-
import { jsx as
|
|
1928
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1788
1929
|
function DataTableContentHeader({
|
|
1789
1930
|
table
|
|
1790
1931
|
}) {
|
|
1791
|
-
return /* @__PURE__ */
|
|
1932
|
+
return /* @__PURE__ */ jsx23(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx23(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx23(TableHead, { children: header.isPlaceholder ? null : flexRender2(
|
|
1792
1933
|
header.column.columnDef.header,
|
|
1793
1934
|
header.getContext()
|
|
1794
1935
|
) }, header.id)) }, headerGroup.id)) });
|
|
1795
1936
|
}
|
|
1796
1937
|
|
|
1797
1938
|
// src/components/composed/data-table/table-footer-entries.tsx
|
|
1798
|
-
import { jsx as
|
|
1939
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1799
1940
|
function DataTableFooterEntries({
|
|
1800
1941
|
table
|
|
1801
1942
|
}) {
|
|
@@ -1806,17 +1947,17 @@ function DataTableFooterEntries({
|
|
|
1806
1947
|
const totalRows = table.getFilteredRowModel().rows.length;
|
|
1807
1948
|
const startRow = totalRows === 0 ? 0 : pageIndex * pageSize + 1;
|
|
1808
1949
|
const endRow = Math.min((pageIndex + 1) * pageSize, totalRows);
|
|
1809
|
-
return /* @__PURE__ */
|
|
1950
|
+
return /* @__PURE__ */ jsxs13("div", { className: "flex-1 text-xs text-muted-foreground", children: [
|
|
1810
1951
|
"Showing",
|
|
1811
1952
|
" ",
|
|
1812
|
-
/* @__PURE__ */
|
|
1953
|
+
/* @__PURE__ */ jsxs13("span", { className: "font-medium text-foreground", children: [
|
|
1813
1954
|
startRow,
|
|
1814
1955
|
"-",
|
|
1815
1956
|
endRow
|
|
1816
1957
|
] }),
|
|
1817
1958
|
" ",
|
|
1818
1959
|
"of ",
|
|
1819
|
-
/* @__PURE__ */
|
|
1960
|
+
/* @__PURE__ */ jsx24("span", { className: "font-medium text-foreground", children: totalRows }),
|
|
1820
1961
|
" ",
|
|
1821
1962
|
"entries."
|
|
1822
1963
|
] });
|
|
@@ -1829,106 +1970,106 @@ import {
|
|
|
1829
1970
|
ChevronsLeftIcon,
|
|
1830
1971
|
ChevronsRightIcon
|
|
1831
1972
|
} from "lucide-react";
|
|
1832
|
-
import { jsx as
|
|
1973
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1833
1974
|
function DataTableFooterPagination({
|
|
1834
1975
|
table
|
|
1835
1976
|
}) {
|
|
1836
|
-
return /* @__PURE__ */
|
|
1837
|
-
/* @__PURE__ */
|
|
1838
|
-
/* @__PURE__ */
|
|
1977
|
+
return /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-1", children: [
|
|
1978
|
+
/* @__PURE__ */ jsxs14(Tooltip, { children: [
|
|
1979
|
+
/* @__PURE__ */ jsx25(
|
|
1839
1980
|
TooltipTrigger,
|
|
1840
1981
|
{
|
|
1841
|
-
render: /* @__PURE__ */
|
|
1982
|
+
render: /* @__PURE__ */ jsx25(
|
|
1842
1983
|
Button,
|
|
1843
1984
|
{
|
|
1844
1985
|
variant: "outline",
|
|
1845
1986
|
size: "icon-xs",
|
|
1846
1987
|
onClick: () => table.firstPage(),
|
|
1847
1988
|
disabled: !table.getCanPreviousPage(),
|
|
1848
|
-
children: /* @__PURE__ */
|
|
1989
|
+
children: /* @__PURE__ */ jsx25(ChevronsLeftIcon, {})
|
|
1849
1990
|
}
|
|
1850
1991
|
)
|
|
1851
1992
|
}
|
|
1852
1993
|
),
|
|
1853
|
-
/* @__PURE__ */
|
|
1994
|
+
/* @__PURE__ */ jsx25(TooltipContent, { children: "Go to first page" })
|
|
1854
1995
|
] }),
|
|
1855
|
-
/* @__PURE__ */
|
|
1856
|
-
/* @__PURE__ */
|
|
1996
|
+
/* @__PURE__ */ jsxs14(Tooltip, { children: [
|
|
1997
|
+
/* @__PURE__ */ jsx25(
|
|
1857
1998
|
TooltipTrigger,
|
|
1858
1999
|
{
|
|
1859
|
-
render: /* @__PURE__ */
|
|
2000
|
+
render: /* @__PURE__ */ jsx25(
|
|
1860
2001
|
Button,
|
|
1861
2002
|
{
|
|
1862
2003
|
variant: "outline",
|
|
1863
2004
|
size: "icon-xs",
|
|
1864
2005
|
onClick: () => table.previousPage(),
|
|
1865
2006
|
disabled: !table.getCanPreviousPage(),
|
|
1866
|
-
children: /* @__PURE__ */
|
|
2007
|
+
children: /* @__PURE__ */ jsx25(ChevronLeftIcon, {})
|
|
1867
2008
|
}
|
|
1868
2009
|
)
|
|
1869
2010
|
}
|
|
1870
2011
|
),
|
|
1871
|
-
/* @__PURE__ */
|
|
2012
|
+
/* @__PURE__ */ jsx25(TooltipContent, { children: "Go to previous page" })
|
|
1872
2013
|
] }),
|
|
1873
|
-
/* @__PURE__ */
|
|
1874
|
-
/* @__PURE__ */
|
|
2014
|
+
/* @__PURE__ */ jsxs14(Tooltip, { children: [
|
|
2015
|
+
/* @__PURE__ */ jsx25(
|
|
1875
2016
|
TooltipTrigger,
|
|
1876
2017
|
{
|
|
1877
|
-
render: /* @__PURE__ */
|
|
2018
|
+
render: /* @__PURE__ */ jsx25(
|
|
1878
2019
|
Button,
|
|
1879
2020
|
{
|
|
1880
2021
|
variant: "outline",
|
|
1881
2022
|
size: "icon-xs",
|
|
1882
2023
|
onClick: () => table.nextPage(),
|
|
1883
2024
|
disabled: !table.getCanNextPage(),
|
|
1884
|
-
children: /* @__PURE__ */
|
|
2025
|
+
children: /* @__PURE__ */ jsx25(ChevronRightIcon3, {})
|
|
1885
2026
|
}
|
|
1886
2027
|
)
|
|
1887
2028
|
}
|
|
1888
2029
|
),
|
|
1889
|
-
/* @__PURE__ */
|
|
2030
|
+
/* @__PURE__ */ jsx25(TooltipContent, { children: "Go to next page" })
|
|
1890
2031
|
] }),
|
|
1891
|
-
/* @__PURE__ */
|
|
1892
|
-
/* @__PURE__ */
|
|
2032
|
+
/* @__PURE__ */ jsxs14(Tooltip, { children: [
|
|
2033
|
+
/* @__PURE__ */ jsx25(
|
|
1893
2034
|
TooltipTrigger,
|
|
1894
2035
|
{
|
|
1895
|
-
render: /* @__PURE__ */
|
|
2036
|
+
render: /* @__PURE__ */ jsx25(
|
|
1896
2037
|
Button,
|
|
1897
2038
|
{
|
|
1898
2039
|
variant: "outline",
|
|
1899
2040
|
size: "icon-xs",
|
|
1900
2041
|
onClick: () => table.lastPage(),
|
|
1901
2042
|
disabled: !table.getCanNextPage(),
|
|
1902
|
-
children: /* @__PURE__ */
|
|
2043
|
+
children: /* @__PURE__ */ jsx25(ChevronsRightIcon, {})
|
|
1903
2044
|
}
|
|
1904
2045
|
)
|
|
1905
2046
|
}
|
|
1906
2047
|
),
|
|
1907
|
-
/* @__PURE__ */
|
|
2048
|
+
/* @__PURE__ */ jsx25(TooltipContent, { children: "Go to last page" })
|
|
1908
2049
|
] })
|
|
1909
2050
|
] });
|
|
1910
2051
|
}
|
|
1911
2052
|
|
|
1912
2053
|
// src/components/composed/data-table/table-header-add.tsx
|
|
1913
2054
|
import { PlusIcon } from "lucide-react";
|
|
1914
|
-
import { Fragment, jsx as
|
|
2055
|
+
import { Fragment, jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1915
2056
|
function DataTableHeaderAdd({
|
|
1916
2057
|
onAdd,
|
|
1917
2058
|
addLabel
|
|
1918
2059
|
}) {
|
|
1919
|
-
return /* @__PURE__ */
|
|
1920
|
-
/* @__PURE__ */
|
|
1921
|
-
/* @__PURE__ */
|
|
2060
|
+
return /* @__PURE__ */ jsxs15(Fragment, { children: [
|
|
2061
|
+
/* @__PURE__ */ jsxs15(Tooltip, { children: [
|
|
2062
|
+
/* @__PURE__ */ jsx26(
|
|
1922
2063
|
TooltipTrigger,
|
|
1923
2064
|
{
|
|
1924
2065
|
className: "flex sm:hidden",
|
|
1925
|
-
render: /* @__PURE__ */
|
|
2066
|
+
render: /* @__PURE__ */ jsx26(Button, { variant: "default", size: "icon", onClick: onAdd, children: /* @__PURE__ */ jsx26(PlusIcon, {}) })
|
|
1926
2067
|
}
|
|
1927
2068
|
),
|
|
1928
|
-
/* @__PURE__ */
|
|
2069
|
+
/* @__PURE__ */ jsx26(TooltipContent, { children: addLabel != null ? addLabel : "Add" })
|
|
1929
2070
|
] }),
|
|
1930
|
-
/* @__PURE__ */
|
|
1931
|
-
/* @__PURE__ */
|
|
2071
|
+
/* @__PURE__ */ jsxs15(Button, { variant: "default", onClick: onAdd, className: "hidden sm:flex", children: [
|
|
2072
|
+
/* @__PURE__ */ jsx26(PlusIcon, {}),
|
|
1932
2073
|
addLabel != null ? addLabel : "Add"
|
|
1933
2074
|
] })
|
|
1934
2075
|
] });
|
|
@@ -2081,7 +2222,7 @@ function printTable(headers, rows, title = "Data Export") {
|
|
|
2081
2222
|
}
|
|
2082
2223
|
|
|
2083
2224
|
// src/components/composed/data-table/table-header-download.tsx
|
|
2084
|
-
import { jsx as
|
|
2225
|
+
import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2085
2226
|
function getTableExportData(table) {
|
|
2086
2227
|
const columns = table.getAllColumns().filter(
|
|
2087
2228
|
(col) => typeof col.accessorFn !== "undefined" && col.getIsVisible()
|
|
@@ -2124,25 +2265,25 @@ function DataTableHeaderDownload({
|
|
|
2124
2265
|
exportFilename,
|
|
2125
2266
|
onDownload
|
|
2126
2267
|
}) {
|
|
2127
|
-
return /* @__PURE__ */
|
|
2128
|
-
/* @__PURE__ */
|
|
2129
|
-
/* @__PURE__ */
|
|
2268
|
+
return /* @__PURE__ */ jsxs16(DropdownMenu, { children: [
|
|
2269
|
+
/* @__PURE__ */ jsxs16(Tooltip, { children: [
|
|
2270
|
+
/* @__PURE__ */ jsx27(
|
|
2130
2271
|
DropdownMenuTrigger,
|
|
2131
2272
|
{
|
|
2132
|
-
render: /* @__PURE__ */
|
|
2273
|
+
render: /* @__PURE__ */ jsx27(
|
|
2133
2274
|
TooltipTrigger,
|
|
2134
2275
|
{
|
|
2135
|
-
render: /* @__PURE__ */
|
|
2276
|
+
render: /* @__PURE__ */ jsx27(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx27(DownloadIcon, {}) })
|
|
2136
2277
|
}
|
|
2137
2278
|
)
|
|
2138
2279
|
}
|
|
2139
2280
|
),
|
|
2140
|
-
/* @__PURE__ */
|
|
2281
|
+
/* @__PURE__ */ jsx27(TooltipContent, { children: "Download options" })
|
|
2141
2282
|
] }),
|
|
2142
|
-
/* @__PURE__ */
|
|
2143
|
-
/* @__PURE__ */
|
|
2144
|
-
/* @__PURE__ */
|
|
2145
|
-
/* @__PURE__ */
|
|
2283
|
+
/* @__PURE__ */ jsx27(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs16(DropdownMenuGroup, { children: [
|
|
2284
|
+
/* @__PURE__ */ jsx27(DropdownMenuLabel, { children: "Download data" }),
|
|
2285
|
+
/* @__PURE__ */ jsx27(DropdownMenuSeparator, {}),
|
|
2286
|
+
/* @__PURE__ */ jsxs16(
|
|
2146
2287
|
DropdownMenuItem,
|
|
2147
2288
|
{
|
|
2148
2289
|
className: "hover:cursor-pointer",
|
|
@@ -2152,12 +2293,12 @@ function DataTableHeaderDownload({
|
|
|
2152
2293
|
onDownload == null ? void 0 : onDownload();
|
|
2153
2294
|
},
|
|
2154
2295
|
children: [
|
|
2155
|
-
/* @__PURE__ */
|
|
2296
|
+
/* @__PURE__ */ jsx27(FileTextIcon, {}),
|
|
2156
2297
|
"Download PDF"
|
|
2157
2298
|
]
|
|
2158
2299
|
}
|
|
2159
2300
|
),
|
|
2160
|
-
/* @__PURE__ */
|
|
2301
|
+
/* @__PURE__ */ jsxs16(
|
|
2161
2302
|
DropdownMenuItem,
|
|
2162
2303
|
{
|
|
2163
2304
|
className: "hover:cursor-pointer",
|
|
@@ -2167,12 +2308,12 @@ function DataTableHeaderDownload({
|
|
|
2167
2308
|
onDownload == null ? void 0 : onDownload();
|
|
2168
2309
|
},
|
|
2169
2310
|
children: [
|
|
2170
|
-
/* @__PURE__ */
|
|
2311
|
+
/* @__PURE__ */ jsx27(FileSpreadsheetIcon, {}),
|
|
2171
2312
|
"Download Excel"
|
|
2172
2313
|
]
|
|
2173
2314
|
}
|
|
2174
2315
|
),
|
|
2175
|
-
/* @__PURE__ */
|
|
2316
|
+
/* @__PURE__ */ jsxs16(
|
|
2176
2317
|
DropdownMenuItem,
|
|
2177
2318
|
{
|
|
2178
2319
|
className: "hover:cursor-pointer",
|
|
@@ -2182,13 +2323,13 @@ function DataTableHeaderDownload({
|
|
|
2182
2323
|
onDownload == null ? void 0 : onDownload();
|
|
2183
2324
|
},
|
|
2184
2325
|
children: [
|
|
2185
|
-
/* @__PURE__ */
|
|
2326
|
+
/* @__PURE__ */ jsx27(FileCodeIcon, {}),
|
|
2186
2327
|
"Download CSV"
|
|
2187
2328
|
]
|
|
2188
2329
|
}
|
|
2189
2330
|
),
|
|
2190
|
-
/* @__PURE__ */
|
|
2191
|
-
/* @__PURE__ */
|
|
2331
|
+
/* @__PURE__ */ jsx27(DropdownMenuSeparator, {}),
|
|
2332
|
+
/* @__PURE__ */ jsxs16(
|
|
2192
2333
|
DropdownMenuItem,
|
|
2193
2334
|
{
|
|
2194
2335
|
className: "hover:cursor-pointer",
|
|
@@ -2197,7 +2338,7 @@ function DataTableHeaderDownload({
|
|
|
2197
2338
|
printTable(headers, rows, exportFilename);
|
|
2198
2339
|
},
|
|
2199
2340
|
children: [
|
|
2200
|
-
/* @__PURE__ */
|
|
2341
|
+
/* @__PURE__ */ jsx27(PrinterIcon, {}),
|
|
2201
2342
|
"Print Table"
|
|
2202
2343
|
]
|
|
2203
2344
|
}
|
|
@@ -2212,7 +2353,7 @@ import { CalendarIcon, ListFilterIcon } from "lucide-react";
|
|
|
2212
2353
|
import { useMemo as useMemo2, useState as useState3 } from "react";
|
|
2213
2354
|
|
|
2214
2355
|
// src/components/ui/calendar.tsx
|
|
2215
|
-
import { cn as
|
|
2356
|
+
import { cn as cn16 } from "cn";
|
|
2216
2357
|
import {
|
|
2217
2358
|
ChevronDownIcon,
|
|
2218
2359
|
ChevronLeftIcon as ChevronLeftIcon2,
|
|
@@ -2223,7 +2364,7 @@ import {
|
|
|
2223
2364
|
DayPicker,
|
|
2224
2365
|
getDefaultClassNames
|
|
2225
2366
|
} from "react-day-picker";
|
|
2226
|
-
import { jsx as
|
|
2367
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2227
2368
|
function Calendar(_a) {
|
|
2228
2369
|
var _b = _a, {
|
|
2229
2370
|
className,
|
|
@@ -2245,11 +2386,11 @@ function Calendar(_a) {
|
|
|
2245
2386
|
"components"
|
|
2246
2387
|
]);
|
|
2247
2388
|
const defaultClassNames = getDefaultClassNames();
|
|
2248
|
-
return /* @__PURE__ */
|
|
2389
|
+
return /* @__PURE__ */ jsx28(
|
|
2249
2390
|
DayPicker,
|
|
2250
2391
|
__spreadValues({
|
|
2251
2392
|
showOutsideDays,
|
|
2252
|
-
className:
|
|
2393
|
+
className: cn16(
|
|
2253
2394
|
"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(6)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
|
|
2254
2395
|
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
2255
2396
|
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
@@ -2261,124 +2402,124 @@ function Calendar(_a) {
|
|
|
2261
2402
|
formatMonthDropdown: (date) => date.toLocaleString(locale == null ? void 0 : locale.code, { month: "short" })
|
|
2262
2403
|
}, formatters),
|
|
2263
2404
|
classNames: __spreadValues({
|
|
2264
|
-
root:
|
|
2265
|
-
months:
|
|
2405
|
+
root: cn16("w-fit", defaultClassNames.root),
|
|
2406
|
+
months: cn16(
|
|
2266
2407
|
"relative flex flex-col gap-4 md:flex-row",
|
|
2267
2408
|
defaultClassNames.months
|
|
2268
2409
|
),
|
|
2269
|
-
month:
|
|
2270
|
-
nav:
|
|
2410
|
+
month: cn16("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
2411
|
+
nav: cn16(
|
|
2271
2412
|
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
2272
2413
|
defaultClassNames.nav
|
|
2273
2414
|
),
|
|
2274
|
-
button_previous:
|
|
2415
|
+
button_previous: cn16(
|
|
2275
2416
|
buttonVariants({ variant: buttonVariant }),
|
|
2276
2417
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2277
2418
|
defaultClassNames.button_previous
|
|
2278
2419
|
),
|
|
2279
|
-
button_next:
|
|
2420
|
+
button_next: cn16(
|
|
2280
2421
|
buttonVariants({ variant: buttonVariant }),
|
|
2281
2422
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2282
2423
|
defaultClassNames.button_next
|
|
2283
2424
|
),
|
|
2284
|
-
month_caption:
|
|
2425
|
+
month_caption: cn16(
|
|
2285
2426
|
"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
2286
2427
|
defaultClassNames.month_caption
|
|
2287
2428
|
),
|
|
2288
|
-
dropdowns:
|
|
2429
|
+
dropdowns: cn16(
|
|
2289
2430
|
"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
2290
2431
|
defaultClassNames.dropdowns
|
|
2291
2432
|
),
|
|
2292
|
-
dropdown_root:
|
|
2433
|
+
dropdown_root: cn16(
|
|
2293
2434
|
"relative rounded-(--cell-radius)",
|
|
2294
2435
|
defaultClassNames.dropdown_root
|
|
2295
2436
|
),
|
|
2296
|
-
dropdown:
|
|
2437
|
+
dropdown: cn16(
|
|
2297
2438
|
"absolute inset-0 bg-popover opacity-0",
|
|
2298
2439
|
defaultClassNames.dropdown
|
|
2299
2440
|
),
|
|
2300
|
-
caption_label:
|
|
2441
|
+
caption_label: cn16(
|
|
2301
2442
|
"font-medium select-none",
|
|
2302
2443
|
captionLayout === "label" ? "text-sm" : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
|
|
2303
2444
|
defaultClassNames.caption_label
|
|
2304
2445
|
),
|
|
2305
|
-
month_grid:
|
|
2306
|
-
weekdays:
|
|
2307
|
-
weekday:
|
|
2446
|
+
month_grid: cn16("w-full border-collapse", defaultClassNames.month_grid),
|
|
2447
|
+
weekdays: cn16("flex", defaultClassNames.weekdays),
|
|
2448
|
+
weekday: cn16(
|
|
2308
2449
|
"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
2309
2450
|
defaultClassNames.weekday
|
|
2310
2451
|
),
|
|
2311
|
-
week:
|
|
2312
|
-
week_number_header:
|
|
2452
|
+
week: cn16("mt-2 flex w-full", defaultClassNames.week),
|
|
2453
|
+
week_number_header: cn16(
|
|
2313
2454
|
"w-(--cell-size) select-none",
|
|
2314
2455
|
defaultClassNames.week_number_header
|
|
2315
2456
|
),
|
|
2316
|
-
week_number:
|
|
2457
|
+
week_number: cn16(
|
|
2317
2458
|
"text-[0.8rem] text-muted-foreground select-none",
|
|
2318
2459
|
defaultClassNames.week_number
|
|
2319
2460
|
),
|
|
2320
|
-
day:
|
|
2461
|
+
day: cn16(
|
|
2321
2462
|
"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)",
|
|
2322
2463
|
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
|
|
2323
2464
|
defaultClassNames.day
|
|
2324
2465
|
),
|
|
2325
|
-
range_start:
|
|
2466
|
+
range_start: cn16(
|
|
2326
2467
|
"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted",
|
|
2327
2468
|
defaultClassNames.range_start
|
|
2328
2469
|
),
|
|
2329
|
-
range_middle:
|
|
2330
|
-
range_end:
|
|
2470
|
+
range_middle: cn16("rounded-none", defaultClassNames.range_middle),
|
|
2471
|
+
range_end: cn16(
|
|
2331
2472
|
"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted",
|
|
2332
2473
|
defaultClassNames.range_end
|
|
2333
2474
|
),
|
|
2334
|
-
today:
|
|
2475
|
+
today: cn16(
|
|
2335
2476
|
"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
|
|
2336
2477
|
defaultClassNames.today
|
|
2337
2478
|
),
|
|
2338
|
-
outside:
|
|
2479
|
+
outside: cn16(
|
|
2339
2480
|
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
2340
2481
|
defaultClassNames.outside
|
|
2341
2482
|
),
|
|
2342
|
-
disabled:
|
|
2483
|
+
disabled: cn16(
|
|
2343
2484
|
"text-muted-foreground opacity-50",
|
|
2344
2485
|
defaultClassNames.disabled
|
|
2345
2486
|
),
|
|
2346
|
-
hidden:
|
|
2487
|
+
hidden: cn16("invisible", defaultClassNames.hidden)
|
|
2347
2488
|
}, classNames),
|
|
2348
2489
|
components: __spreadValues({
|
|
2349
2490
|
Root: (_a2) => {
|
|
2350
2491
|
var _b2 = _a2, { className: className2, rootRef } = _b2, props2 = __objRest(_b2, ["className", "rootRef"]);
|
|
2351
|
-
return /* @__PURE__ */
|
|
2492
|
+
return /* @__PURE__ */ jsx28(
|
|
2352
2493
|
"div",
|
|
2353
2494
|
__spreadValues({
|
|
2354
2495
|
"data-slot": "calendar",
|
|
2355
2496
|
ref: rootRef,
|
|
2356
|
-
className:
|
|
2497
|
+
className: cn16(className2)
|
|
2357
2498
|
}, props2)
|
|
2358
2499
|
);
|
|
2359
2500
|
},
|
|
2360
2501
|
Chevron: (_c) => {
|
|
2361
2502
|
var _d = _c, { className: className2, orientation } = _d, props2 = __objRest(_d, ["className", "orientation"]);
|
|
2362
2503
|
if (orientation === "left") {
|
|
2363
|
-
return /* @__PURE__ */
|
|
2504
|
+
return /* @__PURE__ */ jsx28(ChevronLeftIcon2, __spreadValues({ className: cn16("size-4", className2) }, props2));
|
|
2364
2505
|
}
|
|
2365
2506
|
if (orientation === "right") {
|
|
2366
|
-
return /* @__PURE__ */
|
|
2507
|
+
return /* @__PURE__ */ jsx28(
|
|
2367
2508
|
ChevronRightIcon4,
|
|
2368
2509
|
__spreadValues({
|
|
2369
|
-
className:
|
|
2510
|
+
className: cn16("size-4", className2)
|
|
2370
2511
|
}, props2)
|
|
2371
2512
|
);
|
|
2372
2513
|
}
|
|
2373
|
-
return /* @__PURE__ */
|
|
2514
|
+
return /* @__PURE__ */ jsx28(ChevronDownIcon, __spreadValues({ className: cn16("size-4", className2) }, props2));
|
|
2374
2515
|
},
|
|
2375
2516
|
DayButton: (_e) => {
|
|
2376
2517
|
var props2 = __objRest(_e, []);
|
|
2377
|
-
return /* @__PURE__ */
|
|
2518
|
+
return /* @__PURE__ */ jsx28(CalendarDayButton, __spreadValues({ locale }, props2));
|
|
2378
2519
|
},
|
|
2379
2520
|
WeekNumber: (_f) => {
|
|
2380
2521
|
var _g = _f, { children } = _g, props2 = __objRest(_g, ["children"]);
|
|
2381
|
-
return /* @__PURE__ */
|
|
2522
|
+
return /* @__PURE__ */ jsx28("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ jsx28("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
2382
2523
|
}
|
|
2383
2524
|
}, components)
|
|
2384
2525
|
}, props)
|
|
@@ -2402,7 +2543,7 @@ function CalendarDayButton(_a) {
|
|
|
2402
2543
|
var _a2;
|
|
2403
2544
|
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
2404
2545
|
}, [modifiers.focused]);
|
|
2405
|
-
return /* @__PURE__ */
|
|
2546
|
+
return /* @__PURE__ */ jsx28(
|
|
2406
2547
|
Button,
|
|
2407
2548
|
__spreadValues({
|
|
2408
2549
|
variant: "ghost",
|
|
@@ -2412,7 +2553,7 @@ function CalendarDayButton(_a) {
|
|
|
2412
2553
|
"data-range-start": modifiers.range_start,
|
|
2413
2554
|
"data-range-end": modifiers.range_end,
|
|
2414
2555
|
"data-range-middle": modifiers.range_middle,
|
|
2415
|
-
className:
|
|
2556
|
+
className: cn16(
|
|
2416
2557
|
"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
2417
2558
|
defaultClassNames.day,
|
|
2418
2559
|
className
|
|
@@ -2423,15 +2564,15 @@ function CalendarDayButton(_a) {
|
|
|
2423
2564
|
|
|
2424
2565
|
// src/components/ui/popover.tsx
|
|
2425
2566
|
import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
|
|
2426
|
-
import { cn as
|
|
2427
|
-
import { jsx as
|
|
2567
|
+
import { cn as cn17 } from "cn";
|
|
2568
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
2428
2569
|
function Popover(_a) {
|
|
2429
2570
|
var props = __objRest(_a, []);
|
|
2430
|
-
return /* @__PURE__ */
|
|
2571
|
+
return /* @__PURE__ */ jsx29(PopoverPrimitive.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
2431
2572
|
}
|
|
2432
2573
|
function PopoverTrigger(_a) {
|
|
2433
2574
|
var props = __objRest(_a, []);
|
|
2434
|
-
return /* @__PURE__ */
|
|
2575
|
+
return /* @__PURE__ */ jsx29(PopoverPrimitive.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
2435
2576
|
}
|
|
2436
2577
|
function PopoverContent(_a) {
|
|
2437
2578
|
var _b = _a, {
|
|
@@ -2447,7 +2588,7 @@ function PopoverContent(_a) {
|
|
|
2447
2588
|
"side",
|
|
2448
2589
|
"sideOffset"
|
|
2449
2590
|
]);
|
|
2450
|
-
return /* @__PURE__ */
|
|
2591
|
+
return /* @__PURE__ */ jsx29(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
|
|
2451
2592
|
PopoverPrimitive.Positioner,
|
|
2452
2593
|
{
|
|
2453
2594
|
align,
|
|
@@ -2455,11 +2596,11 @@ function PopoverContent(_a) {
|
|
|
2455
2596
|
side,
|
|
2456
2597
|
sideOffset,
|
|
2457
2598
|
className: "isolate z-50",
|
|
2458
|
-
children: /* @__PURE__ */
|
|
2599
|
+
children: /* @__PURE__ */ jsx29(
|
|
2459
2600
|
PopoverPrimitive.Popup,
|
|
2460
2601
|
__spreadValues({
|
|
2461
2602
|
"data-slot": "popover-content",
|
|
2462
|
-
className:
|
|
2603
|
+
className: cn17(
|
|
2463
2604
|
"z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-lg bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
2464
2605
|
className
|
|
2465
2606
|
)
|
|
@@ -2471,17 +2612,17 @@ function PopoverContent(_a) {
|
|
|
2471
2612
|
|
|
2472
2613
|
// src/components/ui/select.tsx
|
|
2473
2614
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
2474
|
-
import { cn as
|
|
2615
|
+
import { cn as cn18 } from "cn";
|
|
2475
2616
|
import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon2, ChevronUpIcon } from "lucide-react";
|
|
2476
|
-
import { jsx as
|
|
2617
|
+
import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2477
2618
|
var Select = SelectPrimitive.Root;
|
|
2478
2619
|
function SelectValue(_a) {
|
|
2479
2620
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2480
|
-
return /* @__PURE__ */
|
|
2621
|
+
return /* @__PURE__ */ jsx30(
|
|
2481
2622
|
SelectPrimitive.Value,
|
|
2482
2623
|
__spreadValues({
|
|
2483
2624
|
"data-slot": "select-value",
|
|
2484
|
-
className:
|
|
2625
|
+
className: cn18("flex flex-1 text-left", className)
|
|
2485
2626
|
}, props)
|
|
2486
2627
|
);
|
|
2487
2628
|
}
|
|
@@ -2495,22 +2636,22 @@ function SelectTrigger(_a) {
|
|
|
2495
2636
|
"size",
|
|
2496
2637
|
"children"
|
|
2497
2638
|
]);
|
|
2498
|
-
return /* @__PURE__ */
|
|
2639
|
+
return /* @__PURE__ */ jsxs17(
|
|
2499
2640
|
SelectPrimitive.Trigger,
|
|
2500
2641
|
__spreadProps(__spreadValues({
|
|
2501
2642
|
"data-slot": "select-trigger",
|
|
2502
2643
|
"data-size": size,
|
|
2503
|
-
className:
|
|
2644
|
+
className: cn18(
|
|
2504
2645
|
"flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-input/20 px-2 py-1.5 text-xs/relaxed whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-7 data-[size=sm]:h-6 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2505
2646
|
className
|
|
2506
2647
|
)
|
|
2507
2648
|
}, props), {
|
|
2508
2649
|
children: [
|
|
2509
2650
|
children,
|
|
2510
|
-
/* @__PURE__ */
|
|
2651
|
+
/* @__PURE__ */ jsx30(
|
|
2511
2652
|
SelectPrimitive.Icon,
|
|
2512
2653
|
{
|
|
2513
|
-
render: /* @__PURE__ */
|
|
2654
|
+
render: /* @__PURE__ */ jsx30(ChevronDownIcon2, { className: "pointer-events-none size-3.5 text-muted-foreground" })
|
|
2514
2655
|
}
|
|
2515
2656
|
)
|
|
2516
2657
|
]
|
|
@@ -2535,7 +2676,7 @@ function SelectContent(_a) {
|
|
|
2535
2676
|
"alignOffset",
|
|
2536
2677
|
"alignItemWithTrigger"
|
|
2537
2678
|
]);
|
|
2538
|
-
return /* @__PURE__ */
|
|
2679
|
+
return /* @__PURE__ */ jsx30(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx30(
|
|
2539
2680
|
SelectPrimitive.Positioner,
|
|
2540
2681
|
{
|
|
2541
2682
|
side,
|
|
@@ -2544,20 +2685,20 @@ function SelectContent(_a) {
|
|
|
2544
2685
|
alignOffset,
|
|
2545
2686
|
alignItemWithTrigger,
|
|
2546
2687
|
className: "isolate z-50",
|
|
2547
|
-
children: /* @__PURE__ */
|
|
2688
|
+
children: /* @__PURE__ */ jsxs17(
|
|
2548
2689
|
SelectPrimitive.Popup,
|
|
2549
2690
|
__spreadProps(__spreadValues({
|
|
2550
2691
|
"data-slot": "select-content",
|
|
2551
2692
|
"data-align-trigger": alignItemWithTrigger,
|
|
2552
|
-
className:
|
|
2693
|
+
className: cn18(
|
|
2553
2694
|
"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
2554
2695
|
className
|
|
2555
2696
|
)
|
|
2556
2697
|
}, props), {
|
|
2557
2698
|
children: [
|
|
2558
|
-
/* @__PURE__ */
|
|
2559
|
-
/* @__PURE__ */
|
|
2560
|
-
/* @__PURE__ */
|
|
2699
|
+
/* @__PURE__ */ jsx30(SelectScrollUpButton, {}),
|
|
2700
|
+
/* @__PURE__ */ jsx30(SelectPrimitive.List, { children }),
|
|
2701
|
+
/* @__PURE__ */ jsx30(SelectScrollDownButton, {})
|
|
2561
2702
|
]
|
|
2562
2703
|
})
|
|
2563
2704
|
)
|
|
@@ -2572,22 +2713,22 @@ function SelectItem(_a) {
|
|
|
2572
2713
|
"className",
|
|
2573
2714
|
"children"
|
|
2574
2715
|
]);
|
|
2575
|
-
return /* @__PURE__ */
|
|
2716
|
+
return /* @__PURE__ */ jsxs17(
|
|
2576
2717
|
SelectPrimitive.Item,
|
|
2577
2718
|
__spreadProps(__spreadValues({
|
|
2578
2719
|
"data-slot": "select-item",
|
|
2579
|
-
className:
|
|
2720
|
+
className: cn18(
|
|
2580
2721
|
"relative flex min-h-7 w-full cursor-default items-center gap-2 rounded-md px-2 py-1 text-xs/relaxed outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
2581
2722
|
className
|
|
2582
2723
|
)
|
|
2583
2724
|
}, props), {
|
|
2584
2725
|
children: [
|
|
2585
|
-
/* @__PURE__ */
|
|
2586
|
-
/* @__PURE__ */
|
|
2726
|
+
/* @__PURE__ */ jsx30(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
2727
|
+
/* @__PURE__ */ jsx30(
|
|
2587
2728
|
SelectPrimitive.ItemIndicator,
|
|
2588
2729
|
{
|
|
2589
|
-
render: /* @__PURE__ */
|
|
2590
|
-
children: /* @__PURE__ */
|
|
2730
|
+
render: /* @__PURE__ */ jsx30("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center" }),
|
|
2731
|
+
children: /* @__PURE__ */ jsx30(CheckIcon2, { className: "pointer-events-none" })
|
|
2591
2732
|
}
|
|
2592
2733
|
)
|
|
2593
2734
|
]
|
|
@@ -2600,16 +2741,16 @@ function SelectScrollUpButton(_a) {
|
|
|
2600
2741
|
} = _b, props = __objRest(_b, [
|
|
2601
2742
|
"className"
|
|
2602
2743
|
]);
|
|
2603
|
-
return /* @__PURE__ */
|
|
2744
|
+
return /* @__PURE__ */ jsx30(
|
|
2604
2745
|
SelectPrimitive.ScrollUpArrow,
|
|
2605
2746
|
__spreadProps(__spreadValues({
|
|
2606
2747
|
"data-slot": "select-scroll-up-button",
|
|
2607
|
-
className:
|
|
2748
|
+
className: cn18(
|
|
2608
2749
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2609
2750
|
className
|
|
2610
2751
|
)
|
|
2611
2752
|
}, props), {
|
|
2612
|
-
children: /* @__PURE__ */
|
|
2753
|
+
children: /* @__PURE__ */ jsx30(ChevronUpIcon, {})
|
|
2613
2754
|
})
|
|
2614
2755
|
);
|
|
2615
2756
|
}
|
|
@@ -2619,22 +2760,22 @@ function SelectScrollDownButton(_a) {
|
|
|
2619
2760
|
} = _b, props = __objRest(_b, [
|
|
2620
2761
|
"className"
|
|
2621
2762
|
]);
|
|
2622
|
-
return /* @__PURE__ */
|
|
2763
|
+
return /* @__PURE__ */ jsx30(
|
|
2623
2764
|
SelectPrimitive.ScrollDownArrow,
|
|
2624
2765
|
__spreadProps(__spreadValues({
|
|
2625
2766
|
"data-slot": "select-scroll-down-button",
|
|
2626
|
-
className:
|
|
2767
|
+
className: cn18(
|
|
2627
2768
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2628
2769
|
className
|
|
2629
2770
|
)
|
|
2630
2771
|
}, props), {
|
|
2631
|
-
children: /* @__PURE__ */
|
|
2772
|
+
children: /* @__PURE__ */ jsx30(ChevronDownIcon2, {})
|
|
2632
2773
|
})
|
|
2633
2774
|
);
|
|
2634
2775
|
}
|
|
2635
2776
|
|
|
2636
2777
|
// src/components/composed/data-table/table-header-filter.tsx
|
|
2637
|
-
import { Fragment as Fragment2, jsx as
|
|
2778
|
+
import { Fragment as Fragment2, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2638
2779
|
function smartFilterFn(row, columnId, filterValue) {
|
|
2639
2780
|
var _a, _b, _c;
|
|
2640
2781
|
if (filterValue === void 0 || filterValue === null || filterValue === "" || filterValue === "all") {
|
|
@@ -2795,7 +2936,7 @@ function ColumnFilterInput({
|
|
|
2795
2936
|
}, [column, table, variant]);
|
|
2796
2937
|
if (variant === "boolean" || variant === "select") {
|
|
2797
2938
|
const currentValue = filterValue === void 0 || filterValue === null || filterValue === "" ? "all" : String(filterValue);
|
|
2798
|
-
return /* @__PURE__ */
|
|
2939
|
+
return /* @__PURE__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs18(
|
|
2799
2940
|
Select,
|
|
2800
2941
|
{
|
|
2801
2942
|
value: currentValue,
|
|
@@ -2807,13 +2948,13 @@ function ColumnFilterInput({
|
|
|
2807
2948
|
}
|
|
2808
2949
|
},
|
|
2809
2950
|
children: [
|
|
2810
|
-
/* @__PURE__ */
|
|
2951
|
+
/* @__PURE__ */ jsx31(
|
|
2811
2952
|
SelectTrigger,
|
|
2812
2953
|
{
|
|
2813
2954
|
className: "w-full",
|
|
2814
2955
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2815
2956
|
onPointerDown: (e) => e.stopPropagation(),
|
|
2816
|
-
children: /* @__PURE__ */
|
|
2957
|
+
children: /* @__PURE__ */ jsx31(
|
|
2817
2958
|
SelectValue,
|
|
2818
2959
|
{
|
|
2819
2960
|
placeholder: `Select ${headerText.toLowerCase()}...`,
|
|
@@ -2822,9 +2963,9 @@ function ColumnFilterInput({
|
|
|
2822
2963
|
)
|
|
2823
2964
|
}
|
|
2824
2965
|
),
|
|
2825
|
-
/* @__PURE__ */
|
|
2826
|
-
/* @__PURE__ */
|
|
2827
|
-
options.map((opt) => /* @__PURE__ */
|
|
2966
|
+
/* @__PURE__ */ jsxs18(SelectContent, { align: "start", children: [
|
|
2967
|
+
/* @__PURE__ */ jsx31(SelectItem, { value: "all", children: "All" }),
|
|
2968
|
+
options.map((opt) => /* @__PURE__ */ jsx31(
|
|
2828
2969
|
SelectItem,
|
|
2829
2970
|
{
|
|
2830
2971
|
value: opt.value,
|
|
@@ -2851,36 +2992,36 @@ function ColumnFilterInput({
|
|
|
2851
2992
|
}
|
|
2852
2993
|
}
|
|
2853
2994
|
const formattedDateLabel = dateObj ? format(dateObj, "yyyy-MM-dd") : "";
|
|
2854
|
-
return /* @__PURE__ */
|
|
2855
|
-
/* @__PURE__ */
|
|
2995
|
+
return /* @__PURE__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs18(Popover, { open: calendarOpen, onOpenChange: setCalendarOpen, children: [
|
|
2996
|
+
/* @__PURE__ */ jsx31(
|
|
2856
2997
|
PopoverTrigger,
|
|
2857
2998
|
{
|
|
2858
|
-
render: /* @__PURE__ */
|
|
2999
|
+
render: /* @__PURE__ */ jsxs18(
|
|
2859
3000
|
Button,
|
|
2860
3001
|
{
|
|
2861
3002
|
variant: "outline",
|
|
2862
|
-
className:
|
|
3003
|
+
className: cn14(
|
|
2863
3004
|
"w-full justify-start",
|
|
2864
3005
|
!formattedDateLabel && "text-muted-foreground"
|
|
2865
3006
|
),
|
|
2866
3007
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2867
3008
|
onPointerDown: (e) => e.stopPropagation(),
|
|
2868
3009
|
children: [
|
|
2869
|
-
/* @__PURE__ */
|
|
2870
|
-
/* @__PURE__ */
|
|
3010
|
+
/* @__PURE__ */ jsx31(CalendarIcon, { className: "mr-1 size-3 shrink-0" }),
|
|
3011
|
+
/* @__PURE__ */ jsx31("span", { className: "truncate", children: formattedDateLabel || `Pick ${headerText.toLowerCase()}...` })
|
|
2871
3012
|
]
|
|
2872
3013
|
}
|
|
2873
3014
|
)
|
|
2874
3015
|
}
|
|
2875
3016
|
),
|
|
2876
|
-
/* @__PURE__ */
|
|
3017
|
+
/* @__PURE__ */ jsx31(
|
|
2877
3018
|
PopoverContent,
|
|
2878
3019
|
{
|
|
2879
3020
|
className: "w-auto p-0",
|
|
2880
3021
|
align: "start",
|
|
2881
3022
|
onPointerDown: (e) => e.stopPropagation(),
|
|
2882
3023
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2883
|
-
children: /* @__PURE__ */
|
|
3024
|
+
children: /* @__PURE__ */ jsx31(
|
|
2884
3025
|
Calendar,
|
|
2885
3026
|
{
|
|
2886
3027
|
mode: "single",
|
|
@@ -2899,7 +3040,7 @@ function ColumnFilterInput({
|
|
|
2899
3040
|
)
|
|
2900
3041
|
] }) });
|
|
2901
3042
|
}
|
|
2902
|
-
return /* @__PURE__ */
|
|
3043
|
+
return /* @__PURE__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsx31(
|
|
2903
3044
|
Input,
|
|
2904
3045
|
{
|
|
2905
3046
|
id: `filter-${column.id}`,
|
|
@@ -2923,39 +3064,39 @@ function DataTableHeaderFilter({
|
|
|
2923
3064
|
[table]
|
|
2924
3065
|
);
|
|
2925
3066
|
if (filterableColumns.length === 0) return null;
|
|
2926
|
-
return /* @__PURE__ */
|
|
2927
|
-
/* @__PURE__ */
|
|
2928
|
-
/* @__PURE__ */
|
|
3067
|
+
return /* @__PURE__ */ jsxs18(DropdownMenu, { children: [
|
|
3068
|
+
/* @__PURE__ */ jsxs18(Tooltip, { children: [
|
|
3069
|
+
/* @__PURE__ */ jsx31(
|
|
2929
3070
|
DropdownMenuTrigger,
|
|
2930
3071
|
{
|
|
2931
|
-
render: /* @__PURE__ */
|
|
3072
|
+
render: /* @__PURE__ */ jsx31(
|
|
2932
3073
|
TooltipTrigger,
|
|
2933
3074
|
{
|
|
2934
|
-
render: /* @__PURE__ */
|
|
3075
|
+
render: /* @__PURE__ */ jsx31(
|
|
2935
3076
|
Button,
|
|
2936
3077
|
{
|
|
2937
3078
|
variant: columnFilters.length > 0 ? "secondary" : "outline",
|
|
2938
3079
|
size: "icon",
|
|
2939
|
-
children: /* @__PURE__ */
|
|
3080
|
+
children: /* @__PURE__ */ jsx31(ListFilterIcon, {})
|
|
2940
3081
|
}
|
|
2941
3082
|
)
|
|
2942
3083
|
}
|
|
2943
3084
|
)
|
|
2944
3085
|
}
|
|
2945
3086
|
),
|
|
2946
|
-
/* @__PURE__ */
|
|
3087
|
+
/* @__PURE__ */ jsx31(TooltipContent, { children: "Filter options" })
|
|
2947
3088
|
] }),
|
|
2948
|
-
/* @__PURE__ */
|
|
2949
|
-
/* @__PURE__ */
|
|
2950
|
-
/* @__PURE__ */
|
|
2951
|
-
/* @__PURE__ */
|
|
3089
|
+
/* @__PURE__ */ jsx31(DropdownMenuContent, { align: "end", className: "w-80", children: /* @__PURE__ */ jsxs18(DropdownMenuGroup, { children: [
|
|
3090
|
+
/* @__PURE__ */ jsx31(DropdownMenuLabel, { children: "Filter by column" }),
|
|
3091
|
+
/* @__PURE__ */ jsx31(DropdownMenuSeparator, {}),
|
|
3092
|
+
/* @__PURE__ */ jsx31("div", { className: "max-h-64 overflow-y-auto space-y-2.5 p-1", children: filterableColumns.map((column) => {
|
|
2952
3093
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
2953
|
-
return /* @__PURE__ */
|
|
3094
|
+
return /* @__PURE__ */ jsxs18(
|
|
2954
3095
|
"div",
|
|
2955
3096
|
{
|
|
2956
3097
|
className: "flex items-center justify-between px-1",
|
|
2957
3098
|
children: [
|
|
2958
|
-
/* @__PURE__ */
|
|
3099
|
+
/* @__PURE__ */ jsx31(
|
|
2959
3100
|
"label",
|
|
2960
3101
|
{
|
|
2961
3102
|
htmlFor: `filter-${column.id}`,
|
|
@@ -2963,7 +3104,7 @@ function DataTableHeaderFilter({
|
|
|
2963
3104
|
children: headerText
|
|
2964
3105
|
}
|
|
2965
3106
|
),
|
|
2966
|
-
/* @__PURE__ */
|
|
3107
|
+
/* @__PURE__ */ jsx31("div", { className: "flex-1", children: /* @__PURE__ */ jsx31(
|
|
2967
3108
|
ColumnFilterInput,
|
|
2968
3109
|
{
|
|
2969
3110
|
column,
|
|
@@ -2976,9 +3117,9 @@ function DataTableHeaderFilter({
|
|
|
2976
3117
|
column.id
|
|
2977
3118
|
);
|
|
2978
3119
|
}) }),
|
|
2979
|
-
columnFilters.length > 0 && /* @__PURE__ */
|
|
2980
|
-
/* @__PURE__ */
|
|
2981
|
-
/* @__PURE__ */
|
|
3120
|
+
columnFilters.length > 0 && /* @__PURE__ */ jsxs18(Fragment2, { children: [
|
|
3121
|
+
/* @__PURE__ */ jsx31(DropdownMenuSeparator, {}),
|
|
3122
|
+
/* @__PURE__ */ jsx31(
|
|
2982
3123
|
DropdownMenuItem,
|
|
2983
3124
|
{
|
|
2984
3125
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -2995,7 +3136,7 @@ function DataTableHeaderFilter({
|
|
|
2995
3136
|
import { RotateCwIcon } from "lucide-react";
|
|
2996
3137
|
import { useRouter } from "next/navigation";
|
|
2997
3138
|
import { useState as useState4 } from "react";
|
|
2998
|
-
import { jsx as
|
|
3139
|
+
import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2999
3140
|
function DataTableHeaderRefresh() {
|
|
3000
3141
|
const router = useRouter();
|
|
3001
3142
|
const [isRefreshing, setIsRefreshing] = useState4(false);
|
|
@@ -3006,21 +3147,21 @@ function DataTableHeaderRefresh() {
|
|
|
3006
3147
|
setIsRefreshing(false);
|
|
3007
3148
|
}, 750);
|
|
3008
3149
|
};
|
|
3009
|
-
return /* @__PURE__ */
|
|
3010
|
-
/* @__PURE__ */
|
|
3150
|
+
return /* @__PURE__ */ jsxs19(Tooltip, { children: [
|
|
3151
|
+
/* @__PURE__ */ jsx32(
|
|
3011
3152
|
TooltipTrigger,
|
|
3012
3153
|
{
|
|
3013
|
-
render: /* @__PURE__ */
|
|
3154
|
+
render: /* @__PURE__ */ jsx32(
|
|
3014
3155
|
Button,
|
|
3015
3156
|
{
|
|
3016
3157
|
variant: "outline",
|
|
3017
3158
|
size: "icon",
|
|
3018
3159
|
onClick: handleRefresh,
|
|
3019
3160
|
disabled: isRefreshing,
|
|
3020
|
-
children: /* @__PURE__ */
|
|
3161
|
+
children: /* @__PURE__ */ jsx32(
|
|
3021
3162
|
RotateCwIcon,
|
|
3022
3163
|
{
|
|
3023
|
-
className:
|
|
3164
|
+
className: cn14(
|
|
3024
3165
|
"transition-transform duration-750",
|
|
3025
3166
|
isRefreshing && "animate-spin"
|
|
3026
3167
|
)
|
|
@@ -3030,19 +3171,19 @@ function DataTableHeaderRefresh() {
|
|
|
3030
3171
|
)
|
|
3031
3172
|
}
|
|
3032
3173
|
),
|
|
3033
|
-
/* @__PURE__ */
|
|
3174
|
+
/* @__PURE__ */ jsx32(TooltipContent, { children: "Refresh data" })
|
|
3034
3175
|
] });
|
|
3035
3176
|
}
|
|
3036
3177
|
|
|
3037
3178
|
// src/components/composed/data-table/table-header-search.tsx
|
|
3038
3179
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
3039
|
-
import { jsx as
|
|
3180
|
+
import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3040
3181
|
function DataTableHeaderSearch({
|
|
3041
3182
|
value = "",
|
|
3042
3183
|
onChange
|
|
3043
3184
|
}) {
|
|
3044
|
-
return /* @__PURE__ */
|
|
3045
|
-
/* @__PURE__ */
|
|
3185
|
+
return /* @__PURE__ */ jsxs20("div", { className: "relative flex items-center max-w-sm w-full", children: [
|
|
3186
|
+
/* @__PURE__ */ jsx33(
|
|
3046
3187
|
Input,
|
|
3047
3188
|
{
|
|
3048
3189
|
placeholder: "Search...",
|
|
@@ -3051,14 +3192,14 @@ function DataTableHeaderSearch({
|
|
|
3051
3192
|
className: "pr-7"
|
|
3052
3193
|
}
|
|
3053
3194
|
),
|
|
3054
|
-
Boolean(value) && /* @__PURE__ */
|
|
3195
|
+
Boolean(value) && /* @__PURE__ */ jsx33(
|
|
3055
3196
|
"button",
|
|
3056
3197
|
{
|
|
3057
3198
|
type: "button",
|
|
3058
3199
|
onClick: () => onChange(""),
|
|
3059
3200
|
className: "absolute right-2 text-muted-foreground hover:text-foreground p-0.5 rounded cursor-pointer",
|
|
3060
3201
|
"aria-label": "Clear search text",
|
|
3061
|
-
children: /* @__PURE__ */
|
|
3202
|
+
children: /* @__PURE__ */ jsx33(XIcon2, { className: "size-3.5" })
|
|
3062
3203
|
}
|
|
3063
3204
|
)
|
|
3064
3205
|
] });
|
|
@@ -3066,41 +3207,41 @@ function DataTableHeaderSearch({
|
|
|
3066
3207
|
|
|
3067
3208
|
// src/components/composed/data-table/table-header-sort.tsx
|
|
3068
3209
|
import { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon } from "lucide-react";
|
|
3069
|
-
import { Fragment as Fragment3, jsx as
|
|
3210
|
+
import { Fragment as Fragment3, jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3070
3211
|
function DataTableHeaderSort({
|
|
3071
3212
|
table,
|
|
3072
3213
|
sorting
|
|
3073
3214
|
}) {
|
|
3074
3215
|
const sortableColumns = table.getAllColumns().filter((column) => column.getCanSort());
|
|
3075
|
-
return /* @__PURE__ */
|
|
3076
|
-
/* @__PURE__ */
|
|
3077
|
-
/* @__PURE__ */
|
|
3216
|
+
return /* @__PURE__ */ jsxs21(DropdownMenu, { children: [
|
|
3217
|
+
/* @__PURE__ */ jsxs21(Tooltip, { children: [
|
|
3218
|
+
/* @__PURE__ */ jsx34(
|
|
3078
3219
|
DropdownMenuTrigger,
|
|
3079
3220
|
{
|
|
3080
|
-
render: /* @__PURE__ */
|
|
3221
|
+
render: /* @__PURE__ */ jsx34(
|
|
3081
3222
|
TooltipTrigger,
|
|
3082
3223
|
{
|
|
3083
|
-
render: /* @__PURE__ */
|
|
3224
|
+
render: /* @__PURE__ */ jsx34(
|
|
3084
3225
|
Button,
|
|
3085
3226
|
{
|
|
3086
3227
|
variant: sorting.length > 0 ? "secondary" : "outline",
|
|
3087
3228
|
size: "icon",
|
|
3088
|
-
children: /* @__PURE__ */
|
|
3229
|
+
children: /* @__PURE__ */ jsx34(ArrowUpDownIcon, {})
|
|
3089
3230
|
}
|
|
3090
3231
|
)
|
|
3091
3232
|
}
|
|
3092
3233
|
)
|
|
3093
3234
|
}
|
|
3094
3235
|
),
|
|
3095
|
-
/* @__PURE__ */
|
|
3236
|
+
/* @__PURE__ */ jsx34(TooltipContent, { children: "Sort options" })
|
|
3096
3237
|
] }),
|
|
3097
|
-
/* @__PURE__ */
|
|
3098
|
-
/* @__PURE__ */
|
|
3099
|
-
/* @__PURE__ */
|
|
3238
|
+
/* @__PURE__ */ jsx34(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs21(DropdownMenuGroup, { children: [
|
|
3239
|
+
/* @__PURE__ */ jsx34(DropdownMenuLabel, { children: "Sort by column" }),
|
|
3240
|
+
/* @__PURE__ */ jsx34(DropdownMenuSeparator, {}),
|
|
3100
3241
|
sortableColumns.map((column) => {
|
|
3101
3242
|
const isSorted = column.getIsSorted();
|
|
3102
3243
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3103
|
-
return /* @__PURE__ */
|
|
3244
|
+
return /* @__PURE__ */ jsxs21(
|
|
3104
3245
|
DropdownMenuItem,
|
|
3105
3246
|
{
|
|
3106
3247
|
className: "flex items-center justify-between hover:cursor-pointer capitalize",
|
|
@@ -3115,16 +3256,16 @@ function DataTableHeaderSort({
|
|
|
3115
3256
|
},
|
|
3116
3257
|
children: [
|
|
3117
3258
|
headerText,
|
|
3118
|
-
isSorted === "asc" && /* @__PURE__ */
|
|
3119
|
-
isSorted === "desc" && /* @__PURE__ */
|
|
3259
|
+
isSorted === "asc" && /* @__PURE__ */ jsx34(ArrowUpIcon, { className: "size-3.5" }),
|
|
3260
|
+
isSorted === "desc" && /* @__PURE__ */ jsx34(ArrowDownIcon, { className: "size-3.5" })
|
|
3120
3261
|
]
|
|
3121
3262
|
},
|
|
3122
3263
|
column.id
|
|
3123
3264
|
);
|
|
3124
3265
|
}),
|
|
3125
|
-
sorting.length > 0 && /* @__PURE__ */
|
|
3126
|
-
/* @__PURE__ */
|
|
3127
|
-
/* @__PURE__ */
|
|
3266
|
+
sorting.length > 0 && /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
3267
|
+
/* @__PURE__ */ jsx34(DropdownMenuSeparator, {}),
|
|
3268
|
+
/* @__PURE__ */ jsx34(
|
|
3128
3269
|
DropdownMenuItem,
|
|
3129
3270
|
{
|
|
3130
3271
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -3139,33 +3280,33 @@ function DataTableHeaderSort({
|
|
|
3139
3280
|
|
|
3140
3281
|
// src/components/composed/data-table/table-header-toggle.tsx
|
|
3141
3282
|
import { Columns3CogIcon } from "lucide-react";
|
|
3142
|
-
import { jsx as
|
|
3283
|
+
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3143
3284
|
function DataTableHeaderToggle({
|
|
3144
3285
|
table
|
|
3145
3286
|
}) {
|
|
3146
|
-
return /* @__PURE__ */
|
|
3147
|
-
/* @__PURE__ */
|
|
3148
|
-
/* @__PURE__ */
|
|
3287
|
+
return /* @__PURE__ */ jsxs22(DropdownMenu, { children: [
|
|
3288
|
+
/* @__PURE__ */ jsxs22(Tooltip, { children: [
|
|
3289
|
+
/* @__PURE__ */ jsx35(
|
|
3149
3290
|
DropdownMenuTrigger,
|
|
3150
3291
|
{
|
|
3151
|
-
render: /* @__PURE__ */
|
|
3292
|
+
render: /* @__PURE__ */ jsx35(
|
|
3152
3293
|
TooltipTrigger,
|
|
3153
3294
|
{
|
|
3154
|
-
render: /* @__PURE__ */
|
|
3295
|
+
render: /* @__PURE__ */ jsx35(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx35(Columns3CogIcon, {}) })
|
|
3155
3296
|
}
|
|
3156
3297
|
)
|
|
3157
3298
|
}
|
|
3158
3299
|
),
|
|
3159
|
-
/* @__PURE__ */
|
|
3300
|
+
/* @__PURE__ */ jsx35(TooltipContent, { children: "Toggle columns" })
|
|
3160
3301
|
] }),
|
|
3161
|
-
/* @__PURE__ */
|
|
3162
|
-
/* @__PURE__ */
|
|
3163
|
-
/* @__PURE__ */
|
|
3302
|
+
/* @__PURE__ */ jsx35(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs22(DropdownMenuGroup, { children: [
|
|
3303
|
+
/* @__PURE__ */ jsx35(DropdownMenuLabel, { children: "Toggle columns" }),
|
|
3304
|
+
/* @__PURE__ */ jsx35(DropdownMenuSeparator, {}),
|
|
3164
3305
|
table.getAllColumns().filter(
|
|
3165
3306
|
(column) => typeof column.accessorFn !== "undefined" && column.getCanHide()
|
|
3166
3307
|
).map((column) => {
|
|
3167
3308
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3168
|
-
return /* @__PURE__ */
|
|
3309
|
+
return /* @__PURE__ */ jsx35(
|
|
3169
3310
|
DropdownMenuCheckboxItem,
|
|
3170
3311
|
{
|
|
3171
3312
|
className: "capitalize hover:cursor-pointer",
|
|
@@ -3183,7 +3324,7 @@ function DataTableHeaderToggle({
|
|
|
3183
3324
|
// src/components/composed/data-table/data-row-actions.tsx
|
|
3184
3325
|
import { MoreHorizontal } from "lucide-react";
|
|
3185
3326
|
import { Fragment as Fragment4 } from "react";
|
|
3186
|
-
import { Fragment as Fragment5, jsx as
|
|
3327
|
+
import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3187
3328
|
function RowActions({
|
|
3188
3329
|
label = "Actions",
|
|
3189
3330
|
items = [],
|
|
@@ -3197,50 +3338,50 @@ function RowActions({
|
|
|
3197
3338
|
if (visibleItems.length === 0) {
|
|
3198
3339
|
return null;
|
|
3199
3340
|
}
|
|
3200
|
-
return /* @__PURE__ */
|
|
3341
|
+
return /* @__PURE__ */ jsx36(
|
|
3201
3342
|
"div",
|
|
3202
3343
|
{
|
|
3203
|
-
className:
|
|
3204
|
-
children: /* @__PURE__ */
|
|
3205
|
-
/* @__PURE__ */
|
|
3344
|
+
className: cn14("flex items-center justify-end w-full", containerClassName),
|
|
3345
|
+
children: /* @__PURE__ */ jsxs23(DropdownMenu, { children: [
|
|
3346
|
+
/* @__PURE__ */ jsx36(
|
|
3206
3347
|
DropdownMenuTrigger,
|
|
3207
3348
|
{
|
|
3208
|
-
render: /* @__PURE__ */
|
|
3349
|
+
render: /* @__PURE__ */ jsx36(Button, { variant: "ghost", size: "icon-xs", "aria-label": triggerLabel, children: triggerIcon != null ? triggerIcon : /* @__PURE__ */ jsx36(MoreHorizontal, { className: "size-4" }) })
|
|
3209
3350
|
}
|
|
3210
3351
|
),
|
|
3211
|
-
/* @__PURE__ */
|
|
3352
|
+
/* @__PURE__ */ jsx36(
|
|
3212
3353
|
DropdownMenuContent,
|
|
3213
3354
|
{
|
|
3214
3355
|
align,
|
|
3215
|
-
className:
|
|
3216
|
-
children: /* @__PURE__ */
|
|
3217
|
-
label && /* @__PURE__ */
|
|
3218
|
-
/* @__PURE__ */
|
|
3219
|
-
/* @__PURE__ */
|
|
3356
|
+
className: cn14("w-40", contentClassName),
|
|
3357
|
+
children: /* @__PURE__ */ jsxs23(DropdownMenuGroup, { children: [
|
|
3358
|
+
label && /* @__PURE__ */ jsxs23(Fragment5, { children: [
|
|
3359
|
+
/* @__PURE__ */ jsx36(DropdownMenuLabel, { children: label }),
|
|
3360
|
+
/* @__PURE__ */ jsx36(DropdownMenuSeparator, {})
|
|
3220
3361
|
] }),
|
|
3221
3362
|
visibleItems.map((item, index) => {
|
|
3222
3363
|
var _a;
|
|
3223
3364
|
const itemKey = (_a = item.id) != null ? _a : `${item.label}-${index}`;
|
|
3224
3365
|
const isDestructive = item.variant === "destructive";
|
|
3225
|
-
return /* @__PURE__ */
|
|
3226
|
-
item.separatorBefore && /* @__PURE__ */
|
|
3227
|
-
/* @__PURE__ */
|
|
3366
|
+
return /* @__PURE__ */ jsxs23(Fragment4, { children: [
|
|
3367
|
+
item.separatorBefore && /* @__PURE__ */ jsx36(DropdownMenuSeparator, {}),
|
|
3368
|
+
/* @__PURE__ */ jsxs23(
|
|
3228
3369
|
DropdownMenuItem,
|
|
3229
3370
|
{
|
|
3230
3371
|
onClick: item.onClick,
|
|
3231
3372
|
disabled: item.disabled,
|
|
3232
|
-
className:
|
|
3373
|
+
className: cn14(
|
|
3233
3374
|
"hover:cursor-pointer flex items-center gap-2",
|
|
3234
3375
|
isDestructive && "text-destructive focus:text-destructive",
|
|
3235
3376
|
item.className
|
|
3236
3377
|
),
|
|
3237
3378
|
children: [
|
|
3238
|
-
item.icon && /* @__PURE__ */
|
|
3239
|
-
/* @__PURE__ */
|
|
3379
|
+
item.icon && /* @__PURE__ */ jsx36("span", { className: "size-4 shrink-0 flex items-center justify-center", children: item.icon }),
|
|
3380
|
+
/* @__PURE__ */ jsx36("span", { children: item.label })
|
|
3240
3381
|
]
|
|
3241
3382
|
}
|
|
3242
3383
|
),
|
|
3243
|
-
item.separatorAfter && /* @__PURE__ */
|
|
3384
|
+
item.separatorAfter && /* @__PURE__ */ jsx36(DropdownMenuSeparator, {})
|
|
3244
3385
|
] }, itemKey);
|
|
3245
3386
|
})
|
|
3246
3387
|
] })
|
|
@@ -3252,7 +3393,7 @@ function RowActions({
|
|
|
3252
3393
|
}
|
|
3253
3394
|
|
|
3254
3395
|
// src/components/composed/data-table/data-table.tsx
|
|
3255
|
-
import { jsx as
|
|
3396
|
+
import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3256
3397
|
function DataTable({
|
|
3257
3398
|
columns,
|
|
3258
3399
|
data,
|
|
@@ -3305,12 +3446,12 @@ function DataTable({
|
|
|
3305
3446
|
});
|
|
3306
3447
|
if (data.length === 0) {
|
|
3307
3448
|
const hasCreateAction = Boolean(renderCreateDialog);
|
|
3308
|
-
return /* @__PURE__ */
|
|
3309
|
-
/* @__PURE__ */
|
|
3449
|
+
return /* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
3450
|
+
/* @__PURE__ */ jsx37(
|
|
3310
3451
|
StateEmpty,
|
|
3311
3452
|
{
|
|
3312
3453
|
state: "outline",
|
|
3313
|
-
icon: /* @__PURE__ */
|
|
3454
|
+
icon: /* @__PURE__ */ jsx37(FolderOpenIcon, { className: "size-6 text-muted-foreground" }),
|
|
3314
3455
|
title: "No Data Available",
|
|
3315
3456
|
description: "There are currently no records to display. Create a new record to get started.",
|
|
3316
3457
|
buttonText: hasCreateAction ? addLabel != null ? addLabel : "Add Record" : "Refresh",
|
|
@@ -3320,26 +3461,26 @@ function DataTable({
|
|
|
3320
3461
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen)
|
|
3321
3462
|
] });
|
|
3322
3463
|
}
|
|
3323
|
-
return /* @__PURE__ */
|
|
3324
|
-
/* @__PURE__ */
|
|
3325
|
-
showSearchInput ? /* @__PURE__ */
|
|
3464
|
+
return /* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
3465
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex flex-row items-center justify-between gap-1", children: [
|
|
3466
|
+
showSearchInput ? /* @__PURE__ */ jsx37(
|
|
3326
3467
|
DataTableHeaderSearch,
|
|
3327
3468
|
{
|
|
3328
3469
|
value: globalFilter,
|
|
3329
3470
|
onChange: setGlobalFilter
|
|
3330
3471
|
}
|
|
3331
|
-
) : /* @__PURE__ */
|
|
3332
|
-
/* @__PURE__ */
|
|
3333
|
-
showRefreshButton && /* @__PURE__ */
|
|
3334
|
-
showSortButton && /* @__PURE__ */
|
|
3335
|
-
showFilterButton && /* @__PURE__ */
|
|
3472
|
+
) : /* @__PURE__ */ jsx37("div", {}),
|
|
3473
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex flex-row items-center gap-1", children: [
|
|
3474
|
+
showRefreshButton && /* @__PURE__ */ jsx37(DataTableHeaderRefresh, {}),
|
|
3475
|
+
showSortButton && /* @__PURE__ */ jsx37(DataTableHeaderSort, { table, sorting }),
|
|
3476
|
+
showFilterButton && /* @__PURE__ */ jsx37(
|
|
3336
3477
|
DataTableHeaderFilter,
|
|
3337
3478
|
{
|
|
3338
3479
|
table,
|
|
3339
3480
|
columnFilters
|
|
3340
3481
|
}
|
|
3341
3482
|
),
|
|
3342
|
-
showDownloadButton && /* @__PURE__ */
|
|
3483
|
+
showDownloadButton && /* @__PURE__ */ jsx37(
|
|
3343
3484
|
DataTableHeaderDownload,
|
|
3344
3485
|
{
|
|
3345
3486
|
table,
|
|
@@ -3347,8 +3488,8 @@ function DataTable({
|
|
|
3347
3488
|
onDownload
|
|
3348
3489
|
}
|
|
3349
3490
|
),
|
|
3350
|
-
showColumnToggleButton && /* @__PURE__ */
|
|
3351
|
-
showAddButton && renderCreateDialog && /* @__PURE__ */
|
|
3491
|
+
showColumnToggleButton && /* @__PURE__ */ jsx37(DataTableHeaderToggle, { table }),
|
|
3492
|
+
showAddButton && renderCreateDialog && /* @__PURE__ */ jsx37(
|
|
3352
3493
|
DataTableHeaderAdd,
|
|
3353
3494
|
{
|
|
3354
3495
|
onAdd: () => setCreateOpen(true),
|
|
@@ -3358,13 +3499,13 @@ function DataTable({
|
|
|
3358
3499
|
] })
|
|
3359
3500
|
] }),
|
|
3360
3501
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen),
|
|
3361
|
-
/* @__PURE__ */
|
|
3362
|
-
/* @__PURE__ */
|
|
3363
|
-
/* @__PURE__ */
|
|
3502
|
+
/* @__PURE__ */ jsx37("div", { className: "overflow-hidden rounded-md border [&_[data-slot=table-container]]:no-scrollbar", children: /* @__PURE__ */ jsxs24(Table, { children: [
|
|
3503
|
+
/* @__PURE__ */ jsx37(DataTableContentHeader, { table }),
|
|
3504
|
+
/* @__PURE__ */ jsx37(DataTableContentBody, { table, columns })
|
|
3364
3505
|
] }) }),
|
|
3365
|
-
/* @__PURE__ */
|
|
3366
|
-
/* @__PURE__ */
|
|
3367
|
-
/* @__PURE__ */
|
|
3506
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between px-2", children: [
|
|
3507
|
+
/* @__PURE__ */ jsx37(DataTableFooterEntries, { table }),
|
|
3508
|
+
/* @__PURE__ */ jsx37(DataTableFooterPagination, { table })
|
|
3368
3509
|
] })
|
|
3369
3510
|
] });
|
|
3370
3511
|
}
|
|
@@ -3372,13 +3513,13 @@ function DataTable({
|
|
|
3372
3513
|
// src/components/composed/header-tabs.tsx
|
|
3373
3514
|
import Link2 from "next/link";
|
|
3374
3515
|
import { usePathname as usePathname2 } from "next/navigation";
|
|
3375
|
-
import { memo as
|
|
3516
|
+
import { memo as memo9 } from "react";
|
|
3376
3517
|
|
|
3377
3518
|
// src/components/ui/tabs.tsx
|
|
3378
3519
|
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
3379
|
-
import { cva as
|
|
3380
|
-
import { cn as
|
|
3381
|
-
import { jsx as
|
|
3520
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
3521
|
+
import { cn as cn19 } from "cn";
|
|
3522
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
3382
3523
|
function Tabs(_a) {
|
|
3383
3524
|
var _b = _a, {
|
|
3384
3525
|
className,
|
|
@@ -3387,19 +3528,19 @@ function Tabs(_a) {
|
|
|
3387
3528
|
"className",
|
|
3388
3529
|
"orientation"
|
|
3389
3530
|
]);
|
|
3390
|
-
return /* @__PURE__ */
|
|
3531
|
+
return /* @__PURE__ */ jsx38(
|
|
3391
3532
|
TabsPrimitive.Root,
|
|
3392
3533
|
__spreadValues({
|
|
3393
3534
|
"data-slot": "tabs",
|
|
3394
3535
|
"data-orientation": orientation,
|
|
3395
|
-
className:
|
|
3536
|
+
className: cn19(
|
|
3396
3537
|
"group/tabs flex gap-2 data-horizontal:flex-col",
|
|
3397
3538
|
className
|
|
3398
3539
|
)
|
|
3399
3540
|
}, props)
|
|
3400
3541
|
);
|
|
3401
3542
|
}
|
|
3402
|
-
var tabsListVariants =
|
|
3543
|
+
var tabsListVariants = cva5(
|
|
3403
3544
|
"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",
|
|
3404
3545
|
{
|
|
3405
3546
|
variants: {
|
|
@@ -3421,22 +3562,22 @@ function TabsList(_a) {
|
|
|
3421
3562
|
"className",
|
|
3422
3563
|
"variant"
|
|
3423
3564
|
]);
|
|
3424
|
-
return /* @__PURE__ */
|
|
3565
|
+
return /* @__PURE__ */ jsx38(
|
|
3425
3566
|
TabsPrimitive.List,
|
|
3426
3567
|
__spreadValues({
|
|
3427
3568
|
"data-slot": "tabs-list",
|
|
3428
3569
|
"data-variant": variant,
|
|
3429
|
-
className:
|
|
3570
|
+
className: cn19(tabsListVariants({ variant }), className)
|
|
3430
3571
|
}, props)
|
|
3431
3572
|
);
|
|
3432
3573
|
}
|
|
3433
3574
|
function TabsTrigger(_a) {
|
|
3434
3575
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3435
|
-
return /* @__PURE__ */
|
|
3576
|
+
return /* @__PURE__ */ jsx38(
|
|
3436
3577
|
TabsPrimitive.Tab,
|
|
3437
3578
|
__spreadValues({
|
|
3438
3579
|
"data-slot": "tabs-trigger",
|
|
3439
|
-
className:
|
|
3580
|
+
className: cn19(
|
|
3440
3581
|
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
|
|
3441
3582
|
"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
|
|
3442
3583
|
"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
|
|
@@ -3448,16 +3589,16 @@ function TabsTrigger(_a) {
|
|
|
3448
3589
|
}
|
|
3449
3590
|
|
|
3450
3591
|
// src/components/composed/header-tabs.tsx
|
|
3451
|
-
import { jsx as
|
|
3592
|
+
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3452
3593
|
function renderTabIcon(icon) {
|
|
3453
3594
|
if (!icon) return null;
|
|
3454
3595
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
3455
3596
|
const IconComp = icon;
|
|
3456
|
-
return /* @__PURE__ */
|
|
3597
|
+
return /* @__PURE__ */ jsx39(IconComp, {});
|
|
3457
3598
|
}
|
|
3458
3599
|
return icon;
|
|
3459
3600
|
}
|
|
3460
|
-
var HeaderTabs =
|
|
3601
|
+
var HeaderTabs = memo9(function HeaderTabs2({
|
|
3461
3602
|
items,
|
|
3462
3603
|
value,
|
|
3463
3604
|
onValueChange,
|
|
@@ -3469,12 +3610,12 @@ var HeaderTabs = memo3(function HeaderTabs2({
|
|
|
3469
3610
|
(item) => item.url === pathname || pathname.endsWith(item.url) || pathname.split("/").includes(item.value)
|
|
3470
3611
|
) : void 0;
|
|
3471
3612
|
const activeTab = (_b = value != null ? value : matchedItem == null ? void 0 : matchedItem.value) != null ? _b : (_a = items[0]) == null ? void 0 : _a.value;
|
|
3472
|
-
return /* @__PURE__ */
|
|
3473
|
-
/* @__PURE__ */
|
|
3613
|
+
return /* @__PURE__ */ jsxs25(Tabs, { value: activeTab, onValueChange, className: "space-y-4", children: [
|
|
3614
|
+
/* @__PURE__ */ jsx39("div", { className: "w-full overflow-x-auto overflow-y-hidden border-b no-scrollbar", children: /* @__PURE__ */ jsx39(TabsList, { variant: "line", className: "inline-flex w-max justify-start", children: items.map(({ title, value: tabValue, url, icon }) => /* @__PURE__ */ jsxs25(
|
|
3474
3615
|
TabsTrigger,
|
|
3475
3616
|
{
|
|
3476
3617
|
nativeButton: false,
|
|
3477
|
-
render: /* @__PURE__ */
|
|
3618
|
+
render: /* @__PURE__ */ jsx39(Link2, { href: url }),
|
|
3478
3619
|
value: tabValue,
|
|
3479
3620
|
children: [
|
|
3480
3621
|
renderTabIcon(icon),
|
|
@@ -3488,23 +3629,542 @@ var HeaderTabs = memo3(function HeaderTabs2({
|
|
|
3488
3629
|
});
|
|
3489
3630
|
|
|
3490
3631
|
// src/components/composed/header-title.tsx
|
|
3491
|
-
import { memo as
|
|
3492
|
-
import { jsx as
|
|
3493
|
-
var HeaderTitle =
|
|
3632
|
+
import { memo as memo10 } from "react";
|
|
3633
|
+
import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3634
|
+
var HeaderTitle = memo10(function HeaderTitle2({
|
|
3494
3635
|
title,
|
|
3495
3636
|
subtitle,
|
|
3496
3637
|
children
|
|
3497
3638
|
}) {
|
|
3498
|
-
return /* @__PURE__ */
|
|
3499
|
-
/* @__PURE__ */
|
|
3500
|
-
/* @__PURE__ */
|
|
3501
|
-
/* @__PURE__ */
|
|
3639
|
+
return /* @__PURE__ */ jsxs26("div", { className: "w-full space-y-4", children: [
|
|
3640
|
+
/* @__PURE__ */ jsxs26("div", { children: [
|
|
3641
|
+
/* @__PURE__ */ jsx40("h1", { className: "font-semibold", children: title }),
|
|
3642
|
+
/* @__PURE__ */ jsx40("p", { className: "text-xs text-muted-foreground", children: subtitle })
|
|
3502
3643
|
] }),
|
|
3503
3644
|
children
|
|
3504
3645
|
] });
|
|
3505
3646
|
});
|
|
3647
|
+
|
|
3648
|
+
// src/components/composed/icons/google.tsx
|
|
3649
|
+
import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3650
|
+
function GoogleIcon(_a) {
|
|
3651
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3652
|
+
return /* @__PURE__ */ jsxs27(
|
|
3653
|
+
"svg",
|
|
3654
|
+
__spreadProps(__spreadValues({
|
|
3655
|
+
role: "img",
|
|
3656
|
+
viewBox: "0 0 24 24",
|
|
3657
|
+
"aria-label": "Google logo",
|
|
3658
|
+
className,
|
|
3659
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
3660
|
+
}, props), {
|
|
3661
|
+
children: [
|
|
3662
|
+
/* @__PURE__ */ jsx41(
|
|
3663
|
+
"path",
|
|
3664
|
+
{
|
|
3665
|
+
fill: "#4285F4",
|
|
3666
|
+
d: "M23.745 12.27c0-.7-.06-1.4-.19-2.07H12v4.51h6.6c-.29 1.52-1.14 2.82-2.4 3.68v3.05h3.88c2.27-2.09 3.665-5.17 3.665-9.17z"
|
|
3667
|
+
}
|
|
3668
|
+
),
|
|
3669
|
+
/* @__PURE__ */ jsx41(
|
|
3670
|
+
"path",
|
|
3671
|
+
{
|
|
3672
|
+
fill: "#34A853",
|
|
3673
|
+
d: "M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.88-3.05c-1.08.72-2.45 1.16-4.05 1.16-3.12 0-5.77-2.1-6.72-4.93H1.24v3.15C3.26 21.36 7.33 24 12 24z"
|
|
3674
|
+
}
|
|
3675
|
+
),
|
|
3676
|
+
/* @__PURE__ */ jsx41(
|
|
3677
|
+
"path",
|
|
3678
|
+
{
|
|
3679
|
+
fill: "#FBBC05",
|
|
3680
|
+
d: "M5.28 14.27c-.25-.72-.38-1.49-.38-2.27s.13-1.55.38-2.27V6.58H1.24C.45 8.16 0 9.97 0 12s.45 3.84 1.24 5.42l4.04-3.15z"
|
|
3681
|
+
}
|
|
3682
|
+
),
|
|
3683
|
+
/* @__PURE__ */ jsx41(
|
|
3684
|
+
"path",
|
|
3685
|
+
{
|
|
3686
|
+
fill: "#EA4335",
|
|
3687
|
+
d: "M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.33 0 3.26 2.64 1.24 6.58l4.04 3.15c.95-2.83 3.6-4.98 6.72-4.98z"
|
|
3688
|
+
}
|
|
3689
|
+
)
|
|
3690
|
+
]
|
|
3691
|
+
})
|
|
3692
|
+
);
|
|
3693
|
+
}
|
|
3694
|
+
|
|
3695
|
+
// src/components/composed/login-server.tsx
|
|
3696
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
3697
|
+
import { cn as cn24 } from "cn";
|
|
3698
|
+
import {
|
|
3699
|
+
GalleryVerticalEndIcon,
|
|
3700
|
+
LoaderCircleIcon,
|
|
3701
|
+
LogInIcon
|
|
3702
|
+
} from "lucide-react";
|
|
3703
|
+
import Link3 from "next/link";
|
|
3704
|
+
import { useState as useState6 } from "react";
|
|
3705
|
+
import { Controller, useForm } from "react-hook-form";
|
|
3706
|
+
import { z } from "zod";
|
|
3707
|
+
|
|
3708
|
+
// src/components/ui/card.tsx
|
|
3709
|
+
import { cn as cn20 } from "cn";
|
|
3710
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
3711
|
+
function Card(_a) {
|
|
3712
|
+
var _b = _a, {
|
|
3713
|
+
className,
|
|
3714
|
+
size = "default"
|
|
3715
|
+
} = _b, props = __objRest(_b, [
|
|
3716
|
+
"className",
|
|
3717
|
+
"size"
|
|
3718
|
+
]);
|
|
3719
|
+
return /* @__PURE__ */ jsx42(
|
|
3720
|
+
"div",
|
|
3721
|
+
__spreadValues({
|
|
3722
|
+
"data-slot": "card",
|
|
3723
|
+
"data-size": size,
|
|
3724
|
+
className: cn20(
|
|
3725
|
+
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-lg bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
|
|
3726
|
+
className
|
|
3727
|
+
)
|
|
3728
|
+
}, props)
|
|
3729
|
+
);
|
|
3730
|
+
}
|
|
3731
|
+
function CardHeader(_a) {
|
|
3732
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3733
|
+
return /* @__PURE__ */ jsx42(
|
|
3734
|
+
"div",
|
|
3735
|
+
__spreadValues({
|
|
3736
|
+
"data-slot": "card-header",
|
|
3737
|
+
className: cn20(
|
|
3738
|
+
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
|
|
3739
|
+
className
|
|
3740
|
+
)
|
|
3741
|
+
}, props)
|
|
3742
|
+
);
|
|
3743
|
+
}
|
|
3744
|
+
function CardTitle(_a) {
|
|
3745
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3746
|
+
return /* @__PURE__ */ jsx42(
|
|
3747
|
+
"div",
|
|
3748
|
+
__spreadValues({
|
|
3749
|
+
"data-slot": "card-title",
|
|
3750
|
+
className: cn20("font-heading text-sm font-medium", className)
|
|
3751
|
+
}, props)
|
|
3752
|
+
);
|
|
3753
|
+
}
|
|
3754
|
+
function CardDescription(_a) {
|
|
3755
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3756
|
+
return /* @__PURE__ */ jsx42(
|
|
3757
|
+
"div",
|
|
3758
|
+
__spreadValues({
|
|
3759
|
+
"data-slot": "card-description",
|
|
3760
|
+
className: cn20("text-xs/relaxed text-muted-foreground", className)
|
|
3761
|
+
}, props)
|
|
3762
|
+
);
|
|
3763
|
+
}
|
|
3764
|
+
function CardContent(_a) {
|
|
3765
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3766
|
+
return /* @__PURE__ */ jsx42(
|
|
3767
|
+
"div",
|
|
3768
|
+
__spreadValues({
|
|
3769
|
+
"data-slot": "card-content",
|
|
3770
|
+
className: cn20("px-(--card-spacing)", className)
|
|
3771
|
+
}, props)
|
|
3772
|
+
);
|
|
3773
|
+
}
|
|
3774
|
+
|
|
3775
|
+
// src/components/ui/field.tsx
|
|
3776
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
3777
|
+
import { cn as cn22 } from "cn";
|
|
3778
|
+
import { useMemo as useMemo4 } from "react";
|
|
3779
|
+
|
|
3780
|
+
// src/components/ui/label.tsx
|
|
3781
|
+
import { cn as cn21 } from "cn";
|
|
3782
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
3783
|
+
function Label(_a) {
|
|
3784
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3785
|
+
return /* @__PURE__ */ jsx43(
|
|
3786
|
+
"label",
|
|
3787
|
+
__spreadValues({
|
|
3788
|
+
"data-slot": "label",
|
|
3789
|
+
className: cn21(
|
|
3790
|
+
"flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
3791
|
+
className
|
|
3792
|
+
)
|
|
3793
|
+
}, props)
|
|
3794
|
+
);
|
|
3795
|
+
}
|
|
3796
|
+
|
|
3797
|
+
// src/components/ui/field.tsx
|
|
3798
|
+
import { jsx as jsx44, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3799
|
+
function FieldGroup(_a) {
|
|
3800
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3801
|
+
return /* @__PURE__ */ jsx44(
|
|
3802
|
+
"div",
|
|
3803
|
+
__spreadValues({
|
|
3804
|
+
"data-slot": "field-group",
|
|
3805
|
+
className: cn22(
|
|
3806
|
+
"group/field-group @container/field-group flex w-full flex-col gap-4 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
|
|
3807
|
+
className
|
|
3808
|
+
)
|
|
3809
|
+
}, props)
|
|
3810
|
+
);
|
|
3811
|
+
}
|
|
3812
|
+
var fieldVariants = cva6(
|
|
3813
|
+
"group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
|
|
3814
|
+
{
|
|
3815
|
+
variants: {
|
|
3816
|
+
orientation: {
|
|
3817
|
+
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
3818
|
+
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
3819
|
+
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
3820
|
+
}
|
|
3821
|
+
},
|
|
3822
|
+
defaultVariants: {
|
|
3823
|
+
orientation: "vertical"
|
|
3824
|
+
}
|
|
3825
|
+
}
|
|
3826
|
+
);
|
|
3827
|
+
function Field(_a) {
|
|
3828
|
+
var _b = _a, {
|
|
3829
|
+
className,
|
|
3830
|
+
orientation = "vertical"
|
|
3831
|
+
} = _b, props = __objRest(_b, [
|
|
3832
|
+
"className",
|
|
3833
|
+
"orientation"
|
|
3834
|
+
]);
|
|
3835
|
+
return /* @__PURE__ */ jsx44(
|
|
3836
|
+
"div",
|
|
3837
|
+
__spreadValues({
|
|
3838
|
+
role: "group",
|
|
3839
|
+
"data-slot": "field",
|
|
3840
|
+
"data-orientation": orientation,
|
|
3841
|
+
className: cn22(fieldVariants({ orientation }), className)
|
|
3842
|
+
}, props)
|
|
3843
|
+
);
|
|
3844
|
+
}
|
|
3845
|
+
function FieldLabel(_a) {
|
|
3846
|
+
var _b = _a, {
|
|
3847
|
+
className
|
|
3848
|
+
} = _b, props = __objRest(_b, [
|
|
3849
|
+
"className"
|
|
3850
|
+
]);
|
|
3851
|
+
return /* @__PURE__ */ jsx44(
|
|
3852
|
+
Label,
|
|
3853
|
+
__spreadValues({
|
|
3854
|
+
"data-slot": "field-label",
|
|
3855
|
+
className: cn22(
|
|
3856
|
+
"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-input/40 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-2 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/30 *:data-[slot=field]:p-2 dark:has-data-checked:bg-primary/10",
|
|
3857
|
+
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
|
|
3858
|
+
className
|
|
3859
|
+
)
|
|
3860
|
+
}, props)
|
|
3861
|
+
);
|
|
3862
|
+
}
|
|
3863
|
+
function FieldDescription(_a) {
|
|
3864
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3865
|
+
return /* @__PURE__ */ jsx44(
|
|
3866
|
+
"p",
|
|
3867
|
+
__spreadValues({
|
|
3868
|
+
"data-slot": "field-description",
|
|
3869
|
+
className: cn22(
|
|
3870
|
+
"text-left text-xs/relaxed leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
|
|
3871
|
+
"last:mt-0 nth-last-2:-mt-1",
|
|
3872
|
+
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
3873
|
+
className
|
|
3874
|
+
)
|
|
3875
|
+
}, props)
|
|
3876
|
+
);
|
|
3877
|
+
}
|
|
3878
|
+
function FieldSeparator(_a) {
|
|
3879
|
+
var _b = _a, {
|
|
3880
|
+
children,
|
|
3881
|
+
className
|
|
3882
|
+
} = _b, props = __objRest(_b, [
|
|
3883
|
+
"children",
|
|
3884
|
+
"className"
|
|
3885
|
+
]);
|
|
3886
|
+
return /* @__PURE__ */ jsxs28(
|
|
3887
|
+
"div",
|
|
3888
|
+
__spreadProps(__spreadValues({
|
|
3889
|
+
"data-slot": "field-separator",
|
|
3890
|
+
"data-content": !!children,
|
|
3891
|
+
className: cn22(
|
|
3892
|
+
"relative -my-2 h-5 text-xs/relaxed group-data-[variant=outline]/field-group:-mb-2",
|
|
3893
|
+
className
|
|
3894
|
+
)
|
|
3895
|
+
}, props), {
|
|
3896
|
+
children: [
|
|
3897
|
+
/* @__PURE__ */ jsx44(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
3898
|
+
children && /* @__PURE__ */ jsx44(
|
|
3899
|
+
"span",
|
|
3900
|
+
{
|
|
3901
|
+
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
3902
|
+
"data-slot": "field-separator-content",
|
|
3903
|
+
children
|
|
3904
|
+
}
|
|
3905
|
+
)
|
|
3906
|
+
]
|
|
3907
|
+
})
|
|
3908
|
+
);
|
|
3909
|
+
}
|
|
3910
|
+
function FieldError(_a) {
|
|
3911
|
+
var _b = _a, {
|
|
3912
|
+
className,
|
|
3913
|
+
children,
|
|
3914
|
+
errors
|
|
3915
|
+
} = _b, props = __objRest(_b, [
|
|
3916
|
+
"className",
|
|
3917
|
+
"children",
|
|
3918
|
+
"errors"
|
|
3919
|
+
]);
|
|
3920
|
+
const content = useMemo4(() => {
|
|
3921
|
+
var _a2;
|
|
3922
|
+
if (children) {
|
|
3923
|
+
return children;
|
|
3924
|
+
}
|
|
3925
|
+
if (!(errors == null ? void 0 : errors.length)) {
|
|
3926
|
+
return null;
|
|
3927
|
+
}
|
|
3928
|
+
const uniqueErrors = [
|
|
3929
|
+
...new Map(errors.map((error) => [error == null ? void 0 : error.message, error])).values()
|
|
3930
|
+
];
|
|
3931
|
+
if ((uniqueErrors == null ? void 0 : uniqueErrors.length) === 1) {
|
|
3932
|
+
return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
|
|
3933
|
+
}
|
|
3934
|
+
return /* @__PURE__ */ jsx44("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
3935
|
+
(error, index) => (error == null ? void 0 : error.message) && /* @__PURE__ */ jsx44("li", { children: error.message }, index)
|
|
3936
|
+
) });
|
|
3937
|
+
}, [children, errors]);
|
|
3938
|
+
if (!content) {
|
|
3939
|
+
return null;
|
|
3940
|
+
}
|
|
3941
|
+
return /* @__PURE__ */ jsx44(
|
|
3942
|
+
"div",
|
|
3943
|
+
__spreadProps(__spreadValues({
|
|
3944
|
+
role: "alert",
|
|
3945
|
+
"data-slot": "field-error",
|
|
3946
|
+
className: cn22("text-xs/relaxed font-normal text-destructive", className)
|
|
3947
|
+
}, props), {
|
|
3948
|
+
children: content
|
|
3949
|
+
})
|
|
3950
|
+
);
|
|
3951
|
+
}
|
|
3952
|
+
|
|
3953
|
+
// src/components/ui/toast.tsx
|
|
3954
|
+
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
3955
|
+
import { cn as cn23 } from "cn";
|
|
3956
|
+
import {
|
|
3957
|
+
CircleCheckIcon,
|
|
3958
|
+
InfoIcon,
|
|
3959
|
+
Loader2Icon,
|
|
3960
|
+
OctagonXIcon,
|
|
3961
|
+
TriangleAlertIcon,
|
|
3962
|
+
XIcon as XIcon3
|
|
3963
|
+
} from "lucide-react";
|
|
3964
|
+
import { jsx as jsx45, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3965
|
+
var toast = ToastPrimitive.createToastManager();
|
|
3966
|
+
var createToastManager = ToastPrimitive.createToastManager;
|
|
3967
|
+
var useToastManager = ToastPrimitive.useToastManager;
|
|
3968
|
+
|
|
3969
|
+
// src/components/composed/login-server.tsx
|
|
3970
|
+
import { jsx as jsx46, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3971
|
+
var loginSchema = z.object({
|
|
3972
|
+
email: z.string().trim().toLowerCase().min(1, "Email is required").max(254, "Email is too long").pipe(z.email("Invalid email format")),
|
|
3973
|
+
password: z.string().min(1, "Password is required").min(8, "Password must be at least 8 characters").max(128, "Password must not exceed 128 characters")
|
|
3974
|
+
});
|
|
3975
|
+
function LoginServer({
|
|
3976
|
+
onSubmit,
|
|
3977
|
+
onGoogleSignIn,
|
|
3978
|
+
isSubmitting: externalIsSubmitting
|
|
3979
|
+
}) {
|
|
3980
|
+
const [isRedirecting, setIsRedirecting] = useState6(false);
|
|
3981
|
+
const [isGoogleLoading, setIsGoogleLoading] = useState6(false);
|
|
3982
|
+
const form = useForm({
|
|
3983
|
+
resolver: zodResolver(loginSchema),
|
|
3984
|
+
defaultValues: {
|
|
3985
|
+
email: "",
|
|
3986
|
+
password: ""
|
|
3987
|
+
}
|
|
3988
|
+
});
|
|
3989
|
+
const isPending = externalIsSubmitting != null ? externalIsSubmitting : form.formState.isSubmitting || isRedirecting || isGoogleLoading;
|
|
3990
|
+
const handleFormSubmit = async (values) => {
|
|
3991
|
+
try {
|
|
3992
|
+
if (!onSubmit) {
|
|
3993
|
+
toast.add({
|
|
3994
|
+
description: "Login action handler is not configured."
|
|
3995
|
+
});
|
|
3996
|
+
return;
|
|
3997
|
+
}
|
|
3998
|
+
const res = await onSubmit(values);
|
|
3999
|
+
if (res && typeof res === "object" && "error" in res && typeof res.error === "string" && res.error) {
|
|
4000
|
+
setIsRedirecting(false);
|
|
4001
|
+
toast.add({ description: res.error });
|
|
4002
|
+
return;
|
|
4003
|
+
}
|
|
4004
|
+
setIsRedirecting(true);
|
|
4005
|
+
} catch (e) {
|
|
4006
|
+
setIsRedirecting(false);
|
|
4007
|
+
toast.add({ description: "Unable to process your login request." });
|
|
4008
|
+
}
|
|
4009
|
+
};
|
|
4010
|
+
const handleGoogleSignIn = async () => {
|
|
4011
|
+
if (isPending) return;
|
|
4012
|
+
if (!onGoogleSignIn) {
|
|
4013
|
+
toast.add({
|
|
4014
|
+
description: "Google Sign-In is not currently available."
|
|
4015
|
+
});
|
|
4016
|
+
return;
|
|
4017
|
+
}
|
|
4018
|
+
try {
|
|
4019
|
+
setIsGoogleLoading(true);
|
|
4020
|
+
await onGoogleSignIn();
|
|
4021
|
+
} catch (e) {
|
|
4022
|
+
setIsGoogleLoading(false);
|
|
4023
|
+
toast.add({ description: "Google Sign-In failed to initialize." });
|
|
4024
|
+
}
|
|
4025
|
+
};
|
|
4026
|
+
return /* @__PURE__ */ jsx46("div", { className: "flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10", children: /* @__PURE__ */ jsxs30("div", { className: "flex w-full max-w-sm flex-col gap-6", children: [
|
|
4027
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2 self-center font-medium", children: [
|
|
4028
|
+
/* @__PURE__ */ jsx46("div", { className: "flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground", children: /* @__PURE__ */ jsx46(GalleryVerticalEndIcon, { className: "size-4" }) }),
|
|
4029
|
+
"Prediktif"
|
|
4030
|
+
] }),
|
|
4031
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex flex-col gap-6", children: [
|
|
4032
|
+
/* @__PURE__ */ jsxs30(Card, { children: [
|
|
4033
|
+
/* @__PURE__ */ jsxs30(CardHeader, { className: "text-center", children: [
|
|
4034
|
+
/* @__PURE__ */ jsx46(CardTitle, { children: "Welcome back" }),
|
|
4035
|
+
/* @__PURE__ */ jsx46(CardDescription, { children: "Login with your Google account" })
|
|
4036
|
+
] }),
|
|
4037
|
+
/* @__PURE__ */ jsx46(CardContent, { children: /* @__PURE__ */ jsx46("form", { onSubmit: form.handleSubmit(handleFormSubmit), noValidate: true, children: /* @__PURE__ */ jsxs30(FieldGroup, { children: [
|
|
4038
|
+
/* @__PURE__ */ jsx46(Field, { children: /* @__PURE__ */ jsxs30(
|
|
4039
|
+
Button,
|
|
4040
|
+
{
|
|
4041
|
+
type: "button",
|
|
4042
|
+
variant: "outline",
|
|
4043
|
+
disabled: isPending,
|
|
4044
|
+
onClick: handleGoogleSignIn,
|
|
4045
|
+
children: [
|
|
4046
|
+
isGoogleLoading ? /* @__PURE__ */ jsx46(
|
|
4047
|
+
LoaderCircleIcon,
|
|
4048
|
+
{
|
|
4049
|
+
className: "animate-spin",
|
|
4050
|
+
"data-icon": "inline-start"
|
|
4051
|
+
}
|
|
4052
|
+
) : /* @__PURE__ */ jsx46(GoogleIcon, { className: "size-4 shrink-0" }),
|
|
4053
|
+
"Login with Google"
|
|
4054
|
+
]
|
|
4055
|
+
}
|
|
4056
|
+
) }),
|
|
4057
|
+
/* @__PURE__ */ jsx46(FieldSeparator, { className: "*:data-[slot=field-separator-content]:bg-card", children: "Or continue with" }),
|
|
4058
|
+
/* @__PURE__ */ jsx46(
|
|
4059
|
+
Controller,
|
|
4060
|
+
{
|
|
4061
|
+
name: "email",
|
|
4062
|
+
control: form.control,
|
|
4063
|
+
render: ({ field, fieldState }) => /* @__PURE__ */ jsxs30(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4064
|
+
/* @__PURE__ */ jsx46(FieldLabel, { htmlFor: field.name, children: "Email" }),
|
|
4065
|
+
/* @__PURE__ */ jsx46(
|
|
4066
|
+
Input,
|
|
4067
|
+
__spreadProps(__spreadValues({}, field), {
|
|
4068
|
+
id: field.name,
|
|
4069
|
+
"aria-invalid": fieldState.invalid,
|
|
4070
|
+
disabled: isPending,
|
|
4071
|
+
placeholder: "m@example.com",
|
|
4072
|
+
type: "email",
|
|
4073
|
+
autoComplete: "email"
|
|
4074
|
+
})
|
|
4075
|
+
),
|
|
4076
|
+
/* @__PURE__ */ jsx46(FieldDescription, { children: "Enter the email address associated with your account." }),
|
|
4077
|
+
fieldState.invalid && /* @__PURE__ */ jsx46(FieldError, { errors: [fieldState.error] })
|
|
4078
|
+
] })
|
|
4079
|
+
}
|
|
4080
|
+
),
|
|
4081
|
+
/* @__PURE__ */ jsx46(
|
|
4082
|
+
Controller,
|
|
4083
|
+
{
|
|
4084
|
+
name: "password",
|
|
4085
|
+
control: form.control,
|
|
4086
|
+
render: ({ field, fieldState }) => /* @__PURE__ */ jsxs30(Field, { "data-invalid": fieldState.invalid, children: [
|
|
4087
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex items-center", children: [
|
|
4088
|
+
/* @__PURE__ */ jsx46(FieldLabel, { htmlFor: field.name, children: "Password" }),
|
|
4089
|
+
/* @__PURE__ */ jsx46(
|
|
4090
|
+
Link3,
|
|
4091
|
+
{
|
|
4092
|
+
href: "/forgot-password",
|
|
4093
|
+
className: "ml-auto inline-block underline-offset-4 hover:underline",
|
|
4094
|
+
children: "Forgot your password?"
|
|
4095
|
+
}
|
|
4096
|
+
)
|
|
4097
|
+
] }),
|
|
4098
|
+
/* @__PURE__ */ jsx46(
|
|
4099
|
+
Input,
|
|
4100
|
+
__spreadProps(__spreadValues({}, field), {
|
|
4101
|
+
id: field.name,
|
|
4102
|
+
"aria-invalid": fieldState.invalid,
|
|
4103
|
+
disabled: isPending,
|
|
4104
|
+
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
4105
|
+
type: "password",
|
|
4106
|
+
autoComplete: "current-password"
|
|
4107
|
+
})
|
|
4108
|
+
),
|
|
4109
|
+
/* @__PURE__ */ jsx46(FieldDescription, { children: "Enter your account password." }),
|
|
4110
|
+
fieldState.invalid && /* @__PURE__ */ jsx46(FieldError, { errors: [fieldState.error] })
|
|
4111
|
+
] })
|
|
4112
|
+
}
|
|
4113
|
+
),
|
|
4114
|
+
/* @__PURE__ */ jsxs30(Field, { children: [
|
|
4115
|
+
/* @__PURE__ */ jsxs30(
|
|
4116
|
+
Button,
|
|
4117
|
+
{
|
|
4118
|
+
type: "submit",
|
|
4119
|
+
disabled: isPending,
|
|
4120
|
+
className: "w-full",
|
|
4121
|
+
children: [
|
|
4122
|
+
/* @__PURE__ */ jsx46(
|
|
4123
|
+
LoaderCircleIcon,
|
|
4124
|
+
{
|
|
4125
|
+
className: cn24(
|
|
4126
|
+
"animate-spin",
|
|
4127
|
+
isPending && !isGoogleLoading ? "block" : "hidden"
|
|
4128
|
+
),
|
|
4129
|
+
"data-icon": "inline-start"
|
|
4130
|
+
}
|
|
4131
|
+
),
|
|
4132
|
+
/* @__PURE__ */ jsx46(
|
|
4133
|
+
LogInIcon,
|
|
4134
|
+
{
|
|
4135
|
+
className: cn24(
|
|
4136
|
+
!isPending || isGoogleLoading ? "block" : "hidden"
|
|
4137
|
+
),
|
|
4138
|
+
"data-icon": "inline-start"
|
|
4139
|
+
}
|
|
4140
|
+
),
|
|
4141
|
+
isRedirecting ? "Redirecting to application..." : form.formState.isSubmitting ? "Signing in..." : "Login"
|
|
4142
|
+
]
|
|
4143
|
+
}
|
|
4144
|
+
),
|
|
4145
|
+
/* @__PURE__ */ jsxs30(FieldDescription, { className: "text-center", children: [
|
|
4146
|
+
"Don't have an account?",
|
|
4147
|
+
" ",
|
|
4148
|
+
/* @__PURE__ */ jsx46(Link3, { href: "/register", children: "Sign up" })
|
|
4149
|
+
] })
|
|
4150
|
+
] })
|
|
4151
|
+
] }) }) })
|
|
4152
|
+
] }),
|
|
4153
|
+
/* @__PURE__ */ jsxs30(FieldDescription, { className: "px-6 text-center", children: [
|
|
4154
|
+
"By clicking continue, you agree to our",
|
|
4155
|
+
" ",
|
|
4156
|
+
/* @__PURE__ */ jsx46(Link3, { href: "/terms", children: "Terms of Service" }),
|
|
4157
|
+
" and",
|
|
4158
|
+
" ",
|
|
4159
|
+
/* @__PURE__ */ jsx46(Link3, { href: "/privacy", children: "Privacy Policy" }),
|
|
4160
|
+
"."
|
|
4161
|
+
] })
|
|
4162
|
+
] })
|
|
4163
|
+
] }) });
|
|
4164
|
+
}
|
|
3506
4165
|
export {
|
|
3507
4166
|
AppSidebar,
|
|
4167
|
+
AvatarUser,
|
|
3508
4168
|
DataTable,
|
|
3509
4169
|
DataTableContentBody,
|
|
3510
4170
|
DataTableContentHeader,
|
|
@@ -3517,16 +4177,24 @@ export {
|
|
|
3517
4177
|
DataTableHeaderSearch,
|
|
3518
4178
|
DataTableHeaderSort,
|
|
3519
4179
|
DataTableHeaderToggle,
|
|
4180
|
+
EmailLabel,
|
|
4181
|
+
EmailVerified,
|
|
4182
|
+
GoogleIcon,
|
|
3520
4183
|
HeaderTabs,
|
|
3521
4184
|
HeaderTitle,
|
|
4185
|
+
JoinedLabel,
|
|
4186
|
+
LoginServer,
|
|
3522
4187
|
RowActions,
|
|
3523
4188
|
StateEmpty,
|
|
4189
|
+
UserRole,
|
|
4190
|
+
UserStatus,
|
|
3524
4191
|
exportToCSV,
|
|
3525
4192
|
exportToPDF,
|
|
3526
4193
|
exportToXLSX,
|
|
3527
4194
|
features,
|
|
3528
4195
|
flexRender3 as flexRender,
|
|
3529
4196
|
getTableExportData,
|
|
4197
|
+
loginSchema,
|
|
3530
4198
|
printTable,
|
|
3531
4199
|
smartFilterFn,
|
|
3532
4200
|
useTable
|