@prediktif/ui 0.1.24 → 0.1.25
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 +182 -3
- package/dist/index.d.ts +182 -3
- package/dist/index.js +1459 -414
- package/dist/index.mjs +1421 -383
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -60,8 +60,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
60
60
|
// src/index.ts
|
|
61
61
|
var index_exports = {};
|
|
62
62
|
__export(index_exports, {
|
|
63
|
+
ActiveTokensStatus: () => ActiveTokensStatus,
|
|
63
64
|
AppSidebar: () => AppSidebar,
|
|
65
|
+
AvatarGroupInvitations: () => AvatarGroupInvitations,
|
|
66
|
+
AvatarGroupUsers: () => AvatarGroupUsers,
|
|
67
|
+
AvatarInvitations: () => AvatarInvitations,
|
|
64
68
|
AvatarUser: () => AvatarUser,
|
|
69
|
+
AvatarUsers: () => AvatarUsers,
|
|
70
|
+
CodeLabel: () => CodeLabel,
|
|
71
|
+
CopyableCode: () => CopyableCode,
|
|
72
|
+
DEFAULT_METADATA_FIELDS: () => DEFAULT_METADATA_FIELDS,
|
|
65
73
|
DataTable: () => DataTable,
|
|
66
74
|
DataTableContentBody: () => DataTableContentBody,
|
|
67
75
|
DataTableContentHeader: () => DataTableContentHeader,
|
|
@@ -74,14 +82,32 @@ __export(index_exports, {
|
|
|
74
82
|
DataTableHeaderSearch: () => DataTableHeaderSearch,
|
|
75
83
|
DataTableHeaderSort: () => DataTableHeaderSort,
|
|
76
84
|
DataTableHeaderToggle: () => DataTableHeaderToggle,
|
|
85
|
+
DescriptionLabel: () => DescriptionLabel,
|
|
77
86
|
EmailLabel: () => EmailLabel,
|
|
78
87
|
EmailVerified: () => EmailVerified,
|
|
79
88
|
GoogleIcon: () => GoogleIcon,
|
|
80
89
|
HeaderTabs: () => HeaderTabs,
|
|
81
90
|
HeaderTitle: () => HeaderTitle,
|
|
91
|
+
ItemStatus: () => ItemStatus,
|
|
82
92
|
JoinedLabel: () => JoinedLabel,
|
|
93
|
+
MetadataProgress: () => MetadataProgress,
|
|
94
|
+
MetadataStatus: () => MetadataStatus,
|
|
95
|
+
OrganizationInvitations: () => OrganizationInvitations,
|
|
96
|
+
OrganizationRoleBadge: () => OrganizationRoleBadge,
|
|
97
|
+
OrganizationRoles: () => OrganizationRoles,
|
|
98
|
+
PermissionBadges: () => PermissionBadges,
|
|
99
|
+
PermissionsBadges: () => PermissionsBadges,
|
|
100
|
+
ProgressStatus: () => ProgressStatus,
|
|
101
|
+
RedirectUriLabel: () => RedirectUriLabel,
|
|
102
|
+
RedirectUris: () => RedirectUris,
|
|
83
103
|
RowActions: () => RowActions,
|
|
104
|
+
RunningStatus: () => RunningStatus,
|
|
105
|
+
SlugLabel: () => SlugLabel,
|
|
84
106
|
StateEmpty: () => StateEmpty,
|
|
107
|
+
StatusBadge: () => StatusBadge,
|
|
108
|
+
TokenActivity: () => TokenActivity,
|
|
109
|
+
UrisLabel: () => UrisLabel,
|
|
110
|
+
UrisList: () => UrisList,
|
|
85
111
|
UserRole: () => UserRole,
|
|
86
112
|
UserStatus: () => UserStatus,
|
|
87
113
|
exportToCSV: () => exportToCSV,
|
|
@@ -369,6 +395,36 @@ function AvatarFallback(_a) {
|
|
|
369
395
|
}, props)
|
|
370
396
|
);
|
|
371
397
|
}
|
|
398
|
+
function AvatarGroup(_a) {
|
|
399
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
401
|
+
"div",
|
|
402
|
+
__spreadValues({
|
|
403
|
+
"data-slot": "avatar-group",
|
|
404
|
+
className: (0, import_cn3.cn)(
|
|
405
|
+
"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
|
|
406
|
+
className
|
|
407
|
+
)
|
|
408
|
+
}, props)
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
function AvatarGroupCount(_a) {
|
|
412
|
+
var _b = _a, {
|
|
413
|
+
className
|
|
414
|
+
} = _b, props = __objRest(_b, [
|
|
415
|
+
"className"
|
|
416
|
+
]);
|
|
417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
418
|
+
"div",
|
|
419
|
+
__spreadValues({
|
|
420
|
+
"data-slot": "avatar-group-count",
|
|
421
|
+
className: (0, import_cn3.cn)(
|
|
422
|
+
"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs/relaxed text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
|
|
423
|
+
className
|
|
424
|
+
)
|
|
425
|
+
}, props)
|
|
426
|
+
);
|
|
427
|
+
}
|
|
372
428
|
|
|
373
429
|
// src/components/ui/breadcrumb.tsx
|
|
374
430
|
var import_merge_props = require("@base-ui/react/merge-props");
|
|
@@ -1537,44 +1593,319 @@ var AppSidebar = (0, import_react.memo)(function AppSidebar2({
|
|
|
1537
1593
|
] });
|
|
1538
1594
|
});
|
|
1539
1595
|
|
|
1540
|
-
// src/components/composed/columns/avatar-
|
|
1596
|
+
// src/components/composed/columns/avatar-group-invitations.tsx
|
|
1541
1597
|
var import_react2 = require("react");
|
|
1542
1598
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1543
|
-
function getInitials(name) {
|
|
1599
|
+
function getInitials(name, email) {
|
|
1600
|
+
const target = (name || email || "U").trim();
|
|
1601
|
+
return target.split(/[\s.@]/).filter(Boolean).map((n) => n[0]).join("").slice(0, 2).toUpperCase();
|
|
1602
|
+
}
|
|
1603
|
+
var AvatarGroupInvitations = (0, import_react2.memo)(function AvatarGroupInvitations2({
|
|
1604
|
+
invitations,
|
|
1605
|
+
maxDisplay = 3,
|
|
1606
|
+
onlyPending = true,
|
|
1607
|
+
fallback = null,
|
|
1608
|
+
size = "default",
|
|
1609
|
+
className
|
|
1610
|
+
}) {
|
|
1611
|
+
const list = invitations != null ? invitations : [];
|
|
1612
|
+
const targetInvites = onlyPending ? list.filter((i) => {
|
|
1613
|
+
var _a;
|
|
1614
|
+
return ((_a = i.status) == null ? void 0 : _a.toLowerCase()) === "pending";
|
|
1615
|
+
}) : list;
|
|
1616
|
+
if (targetInvites.length === 0) {
|
|
1617
|
+
if (!fallback) return null;
|
|
1618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: fallback });
|
|
1619
|
+
}
|
|
1620
|
+
const visibleInvites = targetInvites.slice(0, maxDisplay);
|
|
1621
|
+
const remainingCount = targetInvites.length - visibleInvites.length;
|
|
1622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AvatarGroup, { className, children: [
|
|
1623
|
+
visibleInvites.map((inv, index) => {
|
|
1624
|
+
var _a, _b, _c, _d, _e;
|
|
1625
|
+
const displayName = ((_a = inv.invitedUser) == null ? void 0 : _a.name) || inv.email;
|
|
1626
|
+
const initials = getInitials((_b = inv.invitedUser) == null ? void 0 : _b.name, inv.email);
|
|
1627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Tooltip, { children: [
|
|
1628
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1629
|
+
TooltipTrigger,
|
|
1630
|
+
{
|
|
1631
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
1632
|
+
Avatar,
|
|
1633
|
+
{
|
|
1634
|
+
size,
|
|
1635
|
+
className: "cursor-pointer border border-dashed border-primary/40",
|
|
1636
|
+
children: [
|
|
1637
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1638
|
+
AvatarImage,
|
|
1639
|
+
{
|
|
1640
|
+
src: (_e = (_d = inv.invitedUser) == null ? void 0 : _d.image) != null ? _e : void 0,
|
|
1641
|
+
alt: displayName
|
|
1642
|
+
}
|
|
1643
|
+
),
|
|
1644
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AvatarFallback, { className: "bg-muted text-xs", children: initials })
|
|
1645
|
+
]
|
|
1646
|
+
}
|
|
1647
|
+
)
|
|
1648
|
+
}
|
|
1649
|
+
),
|
|
1650
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(TooltipContent, { children: [
|
|
1651
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "font-medium text-xs", children: displayName }),
|
|
1652
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
1653
|
+
"Invited as ",
|
|
1654
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "capitalize", children: inv.role })
|
|
1655
|
+
] })
|
|
1656
|
+
] })
|
|
1657
|
+
] }, (_c = inv.id) != null ? _c : `${displayName}-${index}`);
|
|
1658
|
+
}),
|
|
1659
|
+
remainingCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Tooltip, { children: [
|
|
1660
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1661
|
+
TooltipTrigger,
|
|
1662
|
+
{
|
|
1663
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AvatarGroupCount, { className: "cursor-pointer border border-dashed border-primary/40 font-mono", children: [
|
|
1664
|
+
"+",
|
|
1665
|
+
remainingCount
|
|
1666
|
+
] })
|
|
1667
|
+
}
|
|
1668
|
+
),
|
|
1669
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col gap-0.5 text-xs", children: [
|
|
1670
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "font-semibold text-xs mb-0.5", children: onlyPending ? "Other Pending Invitations:" : "Other Invitations:" }),
|
|
1671
|
+
targetInvites.slice(maxDisplay).map((rem, idx) => {
|
|
1672
|
+
var _a, _b;
|
|
1673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "text-xs", children: [
|
|
1674
|
+
((_b = rem.invitedUser) == null ? void 0 : _b.name) || rem.email,
|
|
1675
|
+
" (",
|
|
1676
|
+
rem.role,
|
|
1677
|
+
")"
|
|
1678
|
+
] }, (_a = rem.id) != null ? _a : `${rem.email}-${idx}`);
|
|
1679
|
+
})
|
|
1680
|
+
] }) })
|
|
1681
|
+
] })
|
|
1682
|
+
] });
|
|
1683
|
+
});
|
|
1684
|
+
var AvatarInvitations = AvatarGroupInvitations;
|
|
1685
|
+
var OrganizationInvitations = AvatarGroupInvitations;
|
|
1686
|
+
|
|
1687
|
+
// src/components/composed/columns/avatar-group-users.tsx
|
|
1688
|
+
var import_react3 = require("react");
|
|
1689
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1690
|
+
function getInitials2(name, email) {
|
|
1691
|
+
const target = (name || email || "U").trim();
|
|
1692
|
+
return target.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
|
|
1693
|
+
}
|
|
1694
|
+
var AvatarGroupUsers = (0, import_react3.memo)(function AvatarGroupUsers2({
|
|
1695
|
+
users,
|
|
1696
|
+
maxDisplay = 3,
|
|
1697
|
+
fallback = null,
|
|
1698
|
+
className,
|
|
1699
|
+
size = "default"
|
|
1700
|
+
}) {
|
|
1701
|
+
const list = users != null ? users : [];
|
|
1702
|
+
if (list.length === 0) {
|
|
1703
|
+
if (!fallback) return null;
|
|
1704
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: fallback });
|
|
1705
|
+
}
|
|
1706
|
+
const visibleUsers = list.slice(0, maxDisplay);
|
|
1707
|
+
const remainingCount = list.length - visibleUsers.length;
|
|
1708
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(AvatarGroup, { className, children: [
|
|
1709
|
+
visibleUsers.map((u, index) => {
|
|
1710
|
+
var _a, _b;
|
|
1711
|
+
const initials = getInitials2(u.name, u.email);
|
|
1712
|
+
const displayName = u.name || u.email || "User";
|
|
1713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Tooltip, { children: [
|
|
1714
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1715
|
+
TooltipTrigger,
|
|
1716
|
+
{
|
|
1717
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Avatar, { size, className: "cursor-pointer", children: [
|
|
1718
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AvatarImage, { src: (_b = u.image) != null ? _b : void 0, alt: displayName }),
|
|
1719
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AvatarFallback, { children: initials })
|
|
1720
|
+
] })
|
|
1721
|
+
}
|
|
1722
|
+
),
|
|
1723
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TooltipContent, { children: displayName })
|
|
1724
|
+
] }, (_a = u.id) != null ? _a : `${displayName}-${index}`);
|
|
1725
|
+
}),
|
|
1726
|
+
remainingCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Tooltip, { children: [
|
|
1727
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1728
|
+
TooltipTrigger,
|
|
1729
|
+
{
|
|
1730
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(AvatarGroupCount, { className: "cursor-pointer font-mono", children: [
|
|
1731
|
+
"+",
|
|
1732
|
+
remainingCount
|
|
1733
|
+
] })
|
|
1734
|
+
}
|
|
1735
|
+
),
|
|
1736
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-col gap-0.5 text-xs", children: list.slice(maxDisplay).map((rem, idx) => {
|
|
1737
|
+
var _a, _b;
|
|
1738
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: rem.name || rem.email }, (_b = rem.id) != null ? _b : `${(_a = rem.name) != null ? _a : rem.email}-${idx}`);
|
|
1739
|
+
}) }) })
|
|
1740
|
+
] })
|
|
1741
|
+
] });
|
|
1742
|
+
});
|
|
1743
|
+
var AvatarUsers = AvatarGroupUsers;
|
|
1744
|
+
|
|
1745
|
+
// src/components/composed/columns/avatar-user.tsx
|
|
1746
|
+
var import_cn12 = require("cn");
|
|
1747
|
+
var import_react4 = require("react");
|
|
1748
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1749
|
+
function getInitials3(name) {
|
|
1544
1750
|
if (name) {
|
|
1545
1751
|
return name.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
|
|
1546
1752
|
}
|
|
1547
1753
|
return "U";
|
|
1548
1754
|
}
|
|
1549
|
-
var AvatarUser = (0,
|
|
1755
|
+
var AvatarUser = (0, import_react4.memo)(function AvatarUser2({
|
|
1550
1756
|
name,
|
|
1551
|
-
image
|
|
1757
|
+
image,
|
|
1758
|
+
className,
|
|
1759
|
+
size = "sm"
|
|
1552
1760
|
}) {
|
|
1553
|
-
return /* @__PURE__ */ (0,
|
|
1554
|
-
/* @__PURE__ */ (0,
|
|
1555
|
-
/* @__PURE__ */ (0,
|
|
1556
|
-
/* @__PURE__ */ (0,
|
|
1761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: (0, import_cn12.cn)("flex items-center gap-2", className), children: [
|
|
1762
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Avatar, { size, children: [
|
|
1763
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarImage, { src: image != null ? image : void 0, alt: name != null ? name : void 0 }),
|
|
1764
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarFallback, { children: getInitials3(name) })
|
|
1557
1765
|
] }),
|
|
1558
|
-
/* @__PURE__ */ (0,
|
|
1766
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs font-medium truncate", children: name })
|
|
1767
|
+
] });
|
|
1768
|
+
});
|
|
1769
|
+
|
|
1770
|
+
// src/components/composed/columns/copyable-code.tsx
|
|
1771
|
+
var import_cn14 = require("cn");
|
|
1772
|
+
var import_lucide_react7 = require("lucide-react");
|
|
1773
|
+
var import_react5 = require("react");
|
|
1774
|
+
|
|
1775
|
+
// src/components/ui/toast.tsx
|
|
1776
|
+
var import_toast = require("@base-ui/react/toast");
|
|
1777
|
+
var import_cn13 = require("cn");
|
|
1778
|
+
var import_lucide_react6 = require("lucide-react");
|
|
1779
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1780
|
+
var toast = import_toast.Toast.createToastManager();
|
|
1781
|
+
var createToastManager = import_toast.Toast.createToastManager;
|
|
1782
|
+
var useToastManager = import_toast.Toast.useToastManager;
|
|
1783
|
+
|
|
1784
|
+
// src/components/composed/columns/copyable-code.tsx
|
|
1785
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1786
|
+
var CopyableCode = (0, import_react5.memo)(function CopyableCode2({
|
|
1787
|
+
value,
|
|
1788
|
+
label,
|
|
1789
|
+
copyMessage,
|
|
1790
|
+
toastOnCopy = true,
|
|
1791
|
+
showTooltip = true,
|
|
1792
|
+
fallback = null,
|
|
1793
|
+
className,
|
|
1794
|
+
codeClassName,
|
|
1795
|
+
onCopy
|
|
1796
|
+
}) {
|
|
1797
|
+
const [copied, setCopied] = (0, import_react5.useState)(false);
|
|
1798
|
+
const handleCopy = (0, import_react5.useCallback)(
|
|
1799
|
+
async (e) => {
|
|
1800
|
+
e.stopPropagation();
|
|
1801
|
+
if (!value) return;
|
|
1802
|
+
try {
|
|
1803
|
+
await navigator.clipboard.writeText(value);
|
|
1804
|
+
setCopied(true);
|
|
1805
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
1806
|
+
} catch (err) {
|
|
1807
|
+
console.error("Failed to copy to clipboard:", err);
|
|
1808
|
+
}
|
|
1809
|
+
if (onCopy) {
|
|
1810
|
+
onCopy(value);
|
|
1811
|
+
} else if (toastOnCopy) {
|
|
1812
|
+
try {
|
|
1813
|
+
toast.add({
|
|
1814
|
+
description: copyMessage || `${label || "Value"} copied to clipboard`
|
|
1815
|
+
});
|
|
1816
|
+
} catch (e2) {
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
},
|
|
1820
|
+
[value, onCopy, toastOnCopy, copyMessage, label]
|
|
1821
|
+
);
|
|
1822
|
+
if (!value) {
|
|
1823
|
+
if (!fallback) return null;
|
|
1824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: fallback });
|
|
1825
|
+
}
|
|
1826
|
+
const tooltipText = copied ? "Copied!" : `Copy ${label || "value"}`;
|
|
1827
|
+
const copyButton = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1828
|
+
Button,
|
|
1829
|
+
{
|
|
1830
|
+
size: "icon-xs",
|
|
1831
|
+
variant: "ghost",
|
|
1832
|
+
className: "text-muted-foreground hover:text-foreground cursor-pointer",
|
|
1833
|
+
onClick: handleCopy,
|
|
1834
|
+
title: tooltipText,
|
|
1835
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react7.CheckIcon, { className: "size-3 text-emerald-500" }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react7.CopyIcon, { className: "size-3" })
|
|
1836
|
+
}
|
|
1837
|
+
);
|
|
1838
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_cn14.cn)("flex items-center gap-1.5", className), children: [
|
|
1839
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1840
|
+
"code",
|
|
1841
|
+
{
|
|
1842
|
+
className: (0, import_cn14.cn)(
|
|
1843
|
+
"font-mono text-xs text-muted-foreground bg-muted/50 px-1.5 py-0.5 rounded select-all",
|
|
1844
|
+
codeClassName
|
|
1845
|
+
),
|
|
1846
|
+
children: value
|
|
1847
|
+
}
|
|
1848
|
+
),
|
|
1849
|
+
showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Tooltip, { children: [
|
|
1850
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TooltipTrigger, { render: copyButton }),
|
|
1851
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TooltipContent, { children: tooltipText })
|
|
1852
|
+
] }) : copyButton
|
|
1853
|
+
] });
|
|
1854
|
+
});
|
|
1855
|
+
var CodeLabel = CopyableCode;
|
|
1856
|
+
var SlugLabel = CopyableCode;
|
|
1857
|
+
|
|
1858
|
+
// src/components/composed/columns/description-label.tsx
|
|
1859
|
+
var import_cn15 = require("cn");
|
|
1860
|
+
var import_react6 = require("react");
|
|
1861
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1862
|
+
var DescriptionLabel = (0, import_react6.memo)(function DescriptionLabel2({
|
|
1863
|
+
description,
|
|
1864
|
+
fallback = null,
|
|
1865
|
+
className
|
|
1866
|
+
}) {
|
|
1867
|
+
const text = description == null ? void 0 : description.trim();
|
|
1868
|
+
if (!text) {
|
|
1869
|
+
if (!fallback) return null;
|
|
1870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: (0, import_cn15.cn)("text-xs text-muted-foreground", className), children: fallback });
|
|
1871
|
+
}
|
|
1872
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Tooltip, { children: [
|
|
1873
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1874
|
+
TooltipTrigger,
|
|
1875
|
+
{
|
|
1876
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1877
|
+
"p",
|
|
1878
|
+
{
|
|
1879
|
+
className: (0, import_cn15.cn)(
|
|
1880
|
+
"text-xs text-muted-foreground truncate max-w-xs cursor-default",
|
|
1881
|
+
className
|
|
1882
|
+
),
|
|
1883
|
+
children: text
|
|
1884
|
+
}
|
|
1885
|
+
)
|
|
1886
|
+
}
|
|
1887
|
+
),
|
|
1888
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TooltipContent, { className: "max-w-xs break-words", children: text })
|
|
1559
1889
|
] });
|
|
1560
1890
|
});
|
|
1561
1891
|
|
|
1562
1892
|
// src/components/composed/columns/email-label.tsx
|
|
1563
|
-
var
|
|
1564
|
-
var
|
|
1565
|
-
var EmailLabel = (0,
|
|
1566
|
-
return /* @__PURE__ */ (0,
|
|
1893
|
+
var import_react7 = require("react");
|
|
1894
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1895
|
+
var EmailLabel = (0, import_react7.memo)(function EmailLabel2({ email }) {
|
|
1896
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs font-mono", children: email });
|
|
1567
1897
|
});
|
|
1568
1898
|
|
|
1569
1899
|
// src/components/composed/columns/email-verified.tsx
|
|
1570
|
-
var
|
|
1571
|
-
var
|
|
1900
|
+
var import_cn17 = require("cn");
|
|
1901
|
+
var import_lucide_react8 = require("lucide-react");
|
|
1902
|
+
var import_react8 = require("react");
|
|
1572
1903
|
|
|
1573
1904
|
// src/components/ui/badge.tsx
|
|
1574
1905
|
var import_merge_props3 = require("@base-ui/react/merge-props");
|
|
1575
1906
|
var import_use_render3 = require("@base-ui/react/use-render");
|
|
1576
1907
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
1577
|
-
var
|
|
1908
|
+
var import_cn16 = require("cn");
|
|
1578
1909
|
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
1579
1910
|
"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!",
|
|
1580
1911
|
{
|
|
@@ -1607,97 +1938,785 @@ function Badge(_a) {
|
|
|
1607
1938
|
defaultTagName: "span",
|
|
1608
1939
|
props: (0, import_merge_props3.mergeProps)(
|
|
1609
1940
|
{
|
|
1610
|
-
className: (0,
|
|
1941
|
+
className: (0, import_cn16.cn)(badgeVariants({ variant }), className)
|
|
1942
|
+
},
|
|
1943
|
+
props
|
|
1944
|
+
),
|
|
1945
|
+
render,
|
|
1946
|
+
state: {
|
|
1947
|
+
slot: "badge",
|
|
1948
|
+
variant
|
|
1949
|
+
}
|
|
1950
|
+
});
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
// src/components/composed/columns/email-verified.tsx
|
|
1954
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1955
|
+
var EmailVerified = (0, import_react8.memo)(function EmailVerified2({
|
|
1956
|
+
verified,
|
|
1957
|
+
label,
|
|
1958
|
+
className
|
|
1959
|
+
}) {
|
|
1960
|
+
const isVerified = Boolean(verified);
|
|
1961
|
+
if (isVerified) {
|
|
1962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1963
|
+
Badge,
|
|
1964
|
+
{
|
|
1965
|
+
variant: "outline",
|
|
1966
|
+
className: (0, import_cn17.cn)(
|
|
1967
|
+
"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-normal",
|
|
1968
|
+
className
|
|
1969
|
+
),
|
|
1970
|
+
children: [
|
|
1971
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1972
|
+
import_lucide_react8.CheckIcon,
|
|
1973
|
+
{
|
|
1974
|
+
"data-icon": "inline-start",
|
|
1975
|
+
className: "text-emerald-600 dark:text-emerald-400"
|
|
1976
|
+
}
|
|
1977
|
+
),
|
|
1978
|
+
label != null ? label : "Verified"
|
|
1979
|
+
]
|
|
1980
|
+
}
|
|
1981
|
+
);
|
|
1982
|
+
}
|
|
1983
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1984
|
+
Badge,
|
|
1985
|
+
{
|
|
1986
|
+
variant: "outline",
|
|
1987
|
+
className: (0, import_cn17.cn)(
|
|
1988
|
+
"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-normal",
|
|
1989
|
+
className
|
|
1990
|
+
),
|
|
1991
|
+
children: [
|
|
1992
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1993
|
+
import_lucide_react8.XIcon,
|
|
1994
|
+
{
|
|
1995
|
+
"data-icon": "inline-start",
|
|
1996
|
+
className: "text-amber-600 dark:text-amber-400"
|
|
1997
|
+
}
|
|
1998
|
+
),
|
|
1999
|
+
label != null ? label : "Unverified"
|
|
2000
|
+
]
|
|
2001
|
+
}
|
|
2002
|
+
);
|
|
2003
|
+
});
|
|
2004
|
+
|
|
2005
|
+
// src/components/composed/columns/joined-label.tsx
|
|
2006
|
+
var import_react9 = require("react");
|
|
2007
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2008
|
+
var JoinedLabel = (0, import_react9.memo)(function JoinedLabel2({
|
|
2009
|
+
joined,
|
|
2010
|
+
locale = "id-ID"
|
|
2011
|
+
}) {
|
|
2012
|
+
if (!joined) return null;
|
|
2013
|
+
const date = typeof joined === "string" ? new Date(joined) : joined;
|
|
2014
|
+
if (Number.isNaN(date.getTime())) return null;
|
|
2015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-xs font-mono", children: new Intl.DateTimeFormat(locale, {
|
|
2016
|
+
day: "numeric",
|
|
2017
|
+
month: "long",
|
|
2018
|
+
year: "numeric"
|
|
2019
|
+
}).format(date) });
|
|
2020
|
+
});
|
|
2021
|
+
|
|
2022
|
+
// src/components/composed/columns/metadata-progress.tsx
|
|
2023
|
+
var import_cn18 = require("cn");
|
|
2024
|
+
var import_react10 = require("react");
|
|
2025
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2026
|
+
var DEFAULT_METADATA_FIELDS = [
|
|
2027
|
+
{ key: "title", label: "Page Title" },
|
|
2028
|
+
{ key: "description", label: "Meta Description" },
|
|
2029
|
+
{ key: "keywords", label: "Keywords" },
|
|
2030
|
+
{ key: "author", label: "Author" },
|
|
2031
|
+
{ key: "canonicalUrl", label: "Canonical URL" },
|
|
2032
|
+
{ key: "favicon", label: "Favicon URL" },
|
|
2033
|
+
{ key: "ogImage", label: "OG Image URL" },
|
|
2034
|
+
{ key: "ogType", label: "OG Type" },
|
|
2035
|
+
{ key: "twitterCard", label: "Twitter Card" },
|
|
2036
|
+
{ key: "twitterHandle", label: "Twitter Handle" },
|
|
2037
|
+
{ key: "robots", label: "Robots" },
|
|
2038
|
+
{ key: "customJsonLd", label: "Custom JSON-LD" }
|
|
2039
|
+
];
|
|
2040
|
+
var MetadataProgress = (0, import_react10.memo)(function MetadataProgress2({
|
|
2041
|
+
metadata,
|
|
2042
|
+
fields = DEFAULT_METADATA_FIELDS,
|
|
2043
|
+
completedCount: propCompleted,
|
|
2044
|
+
totalCount: propTotal,
|
|
2045
|
+
title = "Website Metadata",
|
|
2046
|
+
fallback = null,
|
|
2047
|
+
className
|
|
2048
|
+
}) {
|
|
2049
|
+
const stats = (0, import_react10.useMemo)(() => {
|
|
2050
|
+
if (propCompleted !== void 0 && propTotal !== void 0) {
|
|
2051
|
+
const total3 = Math.max(1, propTotal);
|
|
2052
|
+
const completed3 = Math.min(propCompleted, total3);
|
|
2053
|
+
const percentage3 = Math.round(completed3 / total3 * 100);
|
|
2054
|
+
return {
|
|
2055
|
+
completed: completed3,
|
|
2056
|
+
total: total3,
|
|
2057
|
+
percentage: percentage3,
|
|
2058
|
+
missing: []
|
|
2059
|
+
};
|
|
2060
|
+
}
|
|
2061
|
+
if (!metadata) {
|
|
2062
|
+
return {
|
|
2063
|
+
completed: 0,
|
|
2064
|
+
total: fields.length,
|
|
2065
|
+
percentage: 0,
|
|
2066
|
+
missing: fields.map((f) => f.label)
|
|
2067
|
+
};
|
|
2068
|
+
}
|
|
2069
|
+
const completedList = [];
|
|
2070
|
+
const missingList = [];
|
|
2071
|
+
for (const field of fields) {
|
|
2072
|
+
const val = metadata[field.key];
|
|
2073
|
+
let isFilled = false;
|
|
2074
|
+
if (field.key === "keywords") {
|
|
2075
|
+
isFilled = Array.isArray(val) ? val.length > 0 : Boolean(typeof val === "string" && val.trim().length > 0);
|
|
2076
|
+
} else if (typeof val === "string") {
|
|
2077
|
+
isFilled = val.trim().length > 0;
|
|
2078
|
+
} else {
|
|
2079
|
+
isFilled = Boolean(val);
|
|
2080
|
+
}
|
|
2081
|
+
if (isFilled) {
|
|
2082
|
+
completedList.push(field.label);
|
|
2083
|
+
} else {
|
|
2084
|
+
missingList.push(field.label);
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
const total2 = fields.length;
|
|
2088
|
+
const completed2 = completedList.length;
|
|
2089
|
+
const percentage2 = Math.round(completed2 / Math.max(1, total2) * 100);
|
|
2090
|
+
return {
|
|
2091
|
+
completed: completed2,
|
|
2092
|
+
total: total2,
|
|
2093
|
+
percentage: percentage2,
|
|
2094
|
+
missing: missingList
|
|
2095
|
+
};
|
|
2096
|
+
}, [metadata, fields, propCompleted, propTotal]);
|
|
2097
|
+
const { completed, total, percentage, missing } = stats;
|
|
2098
|
+
if (completed === 0 && fallback !== null) {
|
|
2099
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children: fallback });
|
|
2100
|
+
}
|
|
2101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Tooltip, { children: [
|
|
2102
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2103
|
+
TooltipTrigger,
|
|
2104
|
+
{
|
|
2105
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2106
|
+
"div",
|
|
2107
|
+
{
|
|
2108
|
+
className: (0, import_cn18.cn)(
|
|
2109
|
+
"inline-flex items-center gap-2 cursor-pointer select-none",
|
|
2110
|
+
className
|
|
2111
|
+
),
|
|
2112
|
+
children: percentage === 100 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2113
|
+
Badge,
|
|
2114
|
+
{
|
|
2115
|
+
variant: "outline",
|
|
2116
|
+
className: "border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-mono text-[11px] gap-1.5 font-normal",
|
|
2117
|
+
children: [
|
|
2118
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "size-1.5 rounded-full bg-emerald-500" }),
|
|
2119
|
+
"100%"
|
|
2120
|
+
]
|
|
2121
|
+
}
|
|
2122
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2 w-24", children: [
|
|
2123
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-1 h-1.5 rounded-full bg-muted/60 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2124
|
+
"div",
|
|
2125
|
+
{
|
|
2126
|
+
className: (0, import_cn18.cn)(
|
|
2127
|
+
"h-full rounded-full transition-all duration-300",
|
|
2128
|
+
percentage >= 50 ? "bg-primary" : "bg-amber-500"
|
|
2129
|
+
),
|
|
2130
|
+
style: { width: `${percentage}%` }
|
|
2131
|
+
}
|
|
2132
|
+
) }),
|
|
2133
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "font-mono text-[11px] text-muted-foreground shrink-0", children: [
|
|
2134
|
+
completed,
|
|
2135
|
+
"/",
|
|
2136
|
+
total
|
|
2137
|
+
] })
|
|
2138
|
+
] })
|
|
2139
|
+
}
|
|
2140
|
+
)
|
|
2141
|
+
}
|
|
2142
|
+
),
|
|
2143
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(TooltipContent, { className: "max-w-xs text-xs space-y-1.5 p-3", children: [
|
|
2144
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center justify-between border-b pb-1", children: [
|
|
2145
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "font-semibold text-xs", children: title }),
|
|
2146
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "font-mono text-[11px] text-muted-foreground", children: [
|
|
2147
|
+
completed,
|
|
2148
|
+
"/",
|
|
2149
|
+
total,
|
|
2150
|
+
" (",
|
|
2151
|
+
percentage,
|
|
2152
|
+
"%)"
|
|
2153
|
+
] })
|
|
2154
|
+
] }),
|
|
2155
|
+
missing.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("p", { className: "text-[11px] text-muted-foreground leading-relaxed", children: [
|
|
2156
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "text-amber-600 dark:text-amber-400 font-medium", children: [
|
|
2157
|
+
"Missing:",
|
|
2158
|
+
" "
|
|
2159
|
+
] }),
|
|
2160
|
+
missing.slice(0, 4).join(", "),
|
|
2161
|
+
missing.length > 4 ? ` +${missing.length - 4} more` : ""
|
|
2162
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "text-[11px] text-emerald-600 dark:text-emerald-400 font-medium", children: "All metadata fields completed!" })
|
|
2163
|
+
] })
|
|
2164
|
+
] });
|
|
2165
|
+
});
|
|
2166
|
+
var MetadataStatus = MetadataProgress;
|
|
2167
|
+
var ProgressStatus = MetadataProgress;
|
|
2168
|
+
|
|
2169
|
+
// src/components/composed/columns/organization-roles.tsx
|
|
2170
|
+
var import_cn19 = require("cn");
|
|
2171
|
+
var import_lucide_react9 = require("lucide-react");
|
|
2172
|
+
var import_react11 = require("react");
|
|
2173
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2174
|
+
var OrganizationRoleBadge = (0, import_react11.forwardRef)(function OrganizationRoleBadge2(_a, ref) {
|
|
2175
|
+
var _b = _a, { role, roleName, className } = _b, props = __objRest(_b, ["role", "roleName", "className"]);
|
|
2176
|
+
const roleValue = roleName != null ? roleName : role;
|
|
2177
|
+
if (!roleValue) return null;
|
|
2178
|
+
const normalized = roleValue.toLowerCase().trim();
|
|
2179
|
+
if (normalized === "owner") {
|
|
2180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2181
|
+
Badge,
|
|
2182
|
+
__spreadProps(__spreadValues({
|
|
2183
|
+
ref,
|
|
2184
|
+
variant: "outline",
|
|
2185
|
+
className: (0, import_cn19.cn)(
|
|
2186
|
+
"capitalize border-purple-500/30 bg-purple-500/10 text-purple-700 dark:text-purple-300 font-normal",
|
|
2187
|
+
className
|
|
2188
|
+
)
|
|
2189
|
+
}, props), {
|
|
2190
|
+
children: [
|
|
2191
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2192
|
+
import_lucide_react9.CrownIcon,
|
|
2193
|
+
{
|
|
2194
|
+
"data-icon": "inline-start",
|
|
2195
|
+
className: "text-purple-600 dark:text-purple-400"
|
|
2196
|
+
}
|
|
2197
|
+
),
|
|
2198
|
+
roleValue
|
|
2199
|
+
]
|
|
2200
|
+
})
|
|
2201
|
+
);
|
|
2202
|
+
}
|
|
2203
|
+
if (normalized === "admin") {
|
|
2204
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2205
|
+
Badge,
|
|
2206
|
+
__spreadProps(__spreadValues({
|
|
2207
|
+
ref,
|
|
2208
|
+
variant: "outline",
|
|
2209
|
+
className: (0, import_cn19.cn)(
|
|
2210
|
+
"capitalize border-blue-500/30 bg-blue-500/10 text-blue-700 dark:text-blue-300 font-normal",
|
|
2211
|
+
className
|
|
2212
|
+
)
|
|
2213
|
+
}, props), {
|
|
2214
|
+
children: [
|
|
2215
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2216
|
+
import_lucide_react9.ShieldCheckIcon,
|
|
2217
|
+
{
|
|
2218
|
+
"data-icon": "inline-start",
|
|
2219
|
+
className: "text-blue-600 dark:text-blue-400"
|
|
2220
|
+
}
|
|
2221
|
+
),
|
|
2222
|
+
roleValue
|
|
2223
|
+
]
|
|
2224
|
+
})
|
|
2225
|
+
);
|
|
2226
|
+
}
|
|
2227
|
+
if (normalized === "redaktur") {
|
|
2228
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2229
|
+
Badge,
|
|
2230
|
+
__spreadProps(__spreadValues({
|
|
2231
|
+
ref,
|
|
2232
|
+
variant: "outline",
|
|
2233
|
+
className: (0, import_cn19.cn)(
|
|
2234
|
+
"capitalize border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-normal",
|
|
2235
|
+
className
|
|
2236
|
+
)
|
|
2237
|
+
}, props), {
|
|
2238
|
+
children: [
|
|
2239
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2240
|
+
import_lucide_react9.NewspaperIcon,
|
|
2241
|
+
{
|
|
2242
|
+
"data-icon": "inline-start",
|
|
2243
|
+
className: "text-amber-600 dark:text-amber-400"
|
|
2244
|
+
}
|
|
2245
|
+
),
|
|
2246
|
+
roleValue
|
|
2247
|
+
]
|
|
2248
|
+
})
|
|
2249
|
+
);
|
|
2250
|
+
}
|
|
2251
|
+
if (normalized === "editor") {
|
|
2252
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2253
|
+
Badge,
|
|
2254
|
+
__spreadProps(__spreadValues({
|
|
2255
|
+
ref,
|
|
2256
|
+
variant: "outline",
|
|
2257
|
+
className: (0, import_cn19.cn)(
|
|
2258
|
+
"capitalize border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-normal",
|
|
2259
|
+
className
|
|
2260
|
+
)
|
|
2261
|
+
}, props), {
|
|
2262
|
+
children: [
|
|
2263
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2264
|
+
import_lucide_react9.PenLineIcon,
|
|
2265
|
+
{
|
|
2266
|
+
"data-icon": "inline-start",
|
|
2267
|
+
className: "text-emerald-600 dark:text-emerald-400"
|
|
2268
|
+
}
|
|
2269
|
+
),
|
|
2270
|
+
roleValue
|
|
2271
|
+
]
|
|
2272
|
+
})
|
|
2273
|
+
);
|
|
2274
|
+
}
|
|
2275
|
+
if (normalized === "staff") {
|
|
2276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2277
|
+
Badge,
|
|
2278
|
+
__spreadProps(__spreadValues({
|
|
2279
|
+
ref,
|
|
2280
|
+
variant: "outline",
|
|
2281
|
+
className: (0, import_cn19.cn)(
|
|
2282
|
+
"capitalize border-slate-500/30 bg-slate-500/10 text-slate-700 dark:text-slate-300 font-normal",
|
|
2283
|
+
className
|
|
2284
|
+
)
|
|
2285
|
+
}, props), {
|
|
2286
|
+
children: [
|
|
2287
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2288
|
+
import_lucide_react9.UserIcon,
|
|
2289
|
+
{
|
|
2290
|
+
"data-icon": "inline-start",
|
|
2291
|
+
className: "text-slate-600 dark:text-slate-400"
|
|
2292
|
+
}
|
|
2293
|
+
),
|
|
2294
|
+
roleValue
|
|
2295
|
+
]
|
|
2296
|
+
})
|
|
2297
|
+
);
|
|
2298
|
+
}
|
|
2299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2300
|
+
Badge,
|
|
2301
|
+
__spreadProps(__spreadValues({
|
|
2302
|
+
ref,
|
|
2303
|
+
variant: "secondary",
|
|
2304
|
+
className: (0, import_cn19.cn)("capitalize font-normal", className)
|
|
2305
|
+
}, props), {
|
|
2306
|
+
children: [
|
|
2307
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2308
|
+
import_lucide_react9.Building2Icon,
|
|
2309
|
+
{
|
|
2310
|
+
"data-icon": "inline-start",
|
|
2311
|
+
className: "text-muted-foreground"
|
|
2312
|
+
}
|
|
2313
|
+
),
|
|
2314
|
+
roleValue
|
|
2315
|
+
]
|
|
2316
|
+
})
|
|
2317
|
+
);
|
|
2318
|
+
});
|
|
2319
|
+
OrganizationRoleBadge.displayName = "OrganizationRoleBadge";
|
|
2320
|
+
var OrganizationRoles = (0, import_react11.memo)(function OrganizationRoles2({
|
|
2321
|
+
roles,
|
|
2322
|
+
className
|
|
2323
|
+
}) {
|
|
2324
|
+
const orgRoles = roles != null ? roles : [];
|
|
2325
|
+
if (orgRoles.length === 0) return null;
|
|
2326
|
+
if (orgRoles.length === 1) {
|
|
2327
|
+
const item = orgRoles[0];
|
|
2328
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Tooltip, { children: [
|
|
2329
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2330
|
+
TooltipTrigger,
|
|
2331
|
+
{
|
|
2332
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2333
|
+
OrganizationRoleBadge,
|
|
2334
|
+
{
|
|
2335
|
+
roleName: item.roleName,
|
|
2336
|
+
className
|
|
2337
|
+
}
|
|
2338
|
+
)
|
|
2339
|
+
}
|
|
2340
|
+
),
|
|
2341
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(TooltipContent, { children: [
|
|
2342
|
+
item.roleName,
|
|
2343
|
+
" at ",
|
|
2344
|
+
item.organizationName
|
|
2345
|
+
] })
|
|
2346
|
+
] });
|
|
2347
|
+
}
|
|
2348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: (0, import_cn19.cn)("flex items-center gap-1.5", className), children: [
|
|
2349
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Tooltip, { children: [
|
|
2350
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2351
|
+
TooltipTrigger,
|
|
2352
|
+
{
|
|
2353
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(OrganizationRoleBadge, { roleName: orgRoles[0].roleName })
|
|
2354
|
+
}
|
|
2355
|
+
),
|
|
2356
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(TooltipContent, { children: [
|
|
2357
|
+
orgRoles[0].roleName,
|
|
2358
|
+
" at ",
|
|
2359
|
+
orgRoles[0].organizationName
|
|
2360
|
+
] })
|
|
2361
|
+
] }),
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Tooltip, { children: [
|
|
2363
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2364
|
+
TooltipTrigger,
|
|
2365
|
+
{
|
|
2366
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Badge, { variant: "secondary", className: "font-mono", children: [
|
|
2367
|
+
"+",
|
|
2368
|
+
orgRoles.length - 1
|
|
2369
|
+
] })
|
|
2370
|
+
}
|
|
2371
|
+
),
|
|
2372
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TooltipContent, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex flex-col", children: orgRoles.slice(1).map((item, index) => {
|
|
2373
|
+
var _a, _b;
|
|
2374
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2375
|
+
"span",
|
|
2376
|
+
{
|
|
2377
|
+
children: [
|
|
2378
|
+
item.roleName,
|
|
2379
|
+
" at ",
|
|
2380
|
+
item.organizationName
|
|
2381
|
+
]
|
|
2382
|
+
},
|
|
2383
|
+
(_b = item.membershipId) != null ? _b : `${(_a = item.organizationName) != null ? _a : ""}-${index}`
|
|
2384
|
+
);
|
|
2385
|
+
}) }) })
|
|
2386
|
+
] })
|
|
2387
|
+
] });
|
|
2388
|
+
});
|
|
2389
|
+
|
|
2390
|
+
// src/components/composed/columns/permission-badges.tsx
|
|
2391
|
+
var import_cn20 = require("cn");
|
|
2392
|
+
var import_react12 = require("react");
|
|
2393
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2394
|
+
var PermissionBadges = (0, import_react12.memo)(function PermissionBadges2({
|
|
2395
|
+
permissions,
|
|
2396
|
+
maxDisplay = 3,
|
|
2397
|
+
className
|
|
2398
|
+
}) {
|
|
2399
|
+
const perms = permissions != null ? permissions : [];
|
|
2400
|
+
if (perms.length === 0) return null;
|
|
2401
|
+
const visible = perms.slice(0, maxDisplay);
|
|
2402
|
+
const remaining = perms.slice(maxDisplay);
|
|
2403
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: (0, import_cn20.cn)("flex flex-wrap items-center gap-1", className), children: [
|
|
2404
|
+
visible.map((p) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2405
|
+
Badge,
|
|
2406
|
+
{
|
|
2407
|
+
variant: "outline",
|
|
2408
|
+
className: "text-[10px] font-mono py-0 font-normal",
|
|
2409
|
+
children: p
|
|
1611
2410
|
},
|
|
1612
|
-
|
|
1613
|
-
),
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
2411
|
+
p
|
|
2412
|
+
)),
|
|
2413
|
+
remaining.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Tooltip, { children: [
|
|
2414
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2415
|
+
TooltipTrigger,
|
|
2416
|
+
{
|
|
2417
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2418
|
+
Badge,
|
|
2419
|
+
{
|
|
2420
|
+
variant: "secondary",
|
|
2421
|
+
className: "text-[10px] font-mono py-0 cursor-default font-normal",
|
|
2422
|
+
children: [
|
|
2423
|
+
"+",
|
|
2424
|
+
remaining.length
|
|
2425
|
+
]
|
|
2426
|
+
}
|
|
2427
|
+
)
|
|
2428
|
+
}
|
|
2429
|
+
),
|
|
2430
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TooltipContent, { className: "max-w-xs", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex flex-col gap-0.5 text-xs font-mono", children: remaining.map((p) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: p }, p)) }) })
|
|
2431
|
+
] })
|
|
2432
|
+
] });
|
|
2433
|
+
});
|
|
2434
|
+
var PermissionsBadges = PermissionBadges;
|
|
1621
2435
|
|
|
1622
|
-
// src/components/composed/columns/
|
|
1623
|
-
var
|
|
1624
|
-
var
|
|
1625
|
-
|
|
2436
|
+
// src/components/composed/columns/redirect-uris.tsx
|
|
2437
|
+
var import_cn21 = require("cn");
|
|
2438
|
+
var import_react13 = require("react");
|
|
2439
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2440
|
+
var RedirectUris = (0, import_react13.memo)(function RedirectUris2({
|
|
2441
|
+
uris,
|
|
2442
|
+
maxDisplay = 1,
|
|
2443
|
+
fallback = null,
|
|
2444
|
+
tooltipTitle = "All Redirect URIs:",
|
|
2445
|
+
className
|
|
1626
2446
|
}) {
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
2447
|
+
const list = (0, import_react13.useMemo)(() => {
|
|
2448
|
+
if (!uris) return [];
|
|
2449
|
+
if (Array.isArray(uris)) return uris.filter(Boolean);
|
|
2450
|
+
return [uris];
|
|
2451
|
+
}, [uris]);
|
|
2452
|
+
if (list.length === 0) {
|
|
2453
|
+
if (!fallback) return null;
|
|
2454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: fallback });
|
|
2455
|
+
}
|
|
2456
|
+
const primaryUri = list[0];
|
|
2457
|
+
const remainingCount = list.length - maxDisplay;
|
|
2458
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: (0, import_cn21.cn)("flex items-center gap-2", className), children: [
|
|
2459
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2460
|
+
"p",
|
|
2461
|
+
{
|
|
2462
|
+
className: "text-xs text-muted-foreground font-mono truncate",
|
|
2463
|
+
title: primaryUri,
|
|
2464
|
+
children: primaryUri
|
|
2465
|
+
}
|
|
2466
|
+
),
|
|
2467
|
+
remainingCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Tooltip, { children: [
|
|
2468
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2469
|
+
TooltipTrigger,
|
|
2470
|
+
{
|
|
2471
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Badge, { variant: "outline", className: "font-mono cursor-pointer", children: [
|
|
2472
|
+
"+",
|
|
2473
|
+
remainingCount
|
|
2474
|
+
] })
|
|
2475
|
+
}
|
|
2476
|
+
),
|
|
2477
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TooltipContent, { className: "text-xs font-mono", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
2478
|
+
tooltipTitle && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "font-semibold text-xs", children: tooltipTitle }),
|
|
2479
|
+
list.map((uri) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: uri }, uri))
|
|
2480
|
+
] }) })
|
|
2481
|
+
] })
|
|
1633
2482
|
] });
|
|
1634
2483
|
});
|
|
2484
|
+
var RedirectUriLabel = RedirectUris;
|
|
2485
|
+
var UrisList = RedirectUris;
|
|
2486
|
+
var UrisLabel = RedirectUris;
|
|
1635
2487
|
|
|
1636
|
-
// src/components/composed/columns/
|
|
1637
|
-
var
|
|
1638
|
-
var
|
|
1639
|
-
var
|
|
1640
|
-
|
|
1641
|
-
|
|
2488
|
+
// src/components/composed/columns/running-status.tsx
|
|
2489
|
+
var import_cn22 = require("cn");
|
|
2490
|
+
var import_react14 = require("react");
|
|
2491
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2492
|
+
var RunningStatus = (0, import_react14.memo)(function RunningStatus2({
|
|
2493
|
+
count = 0,
|
|
2494
|
+
isRunning,
|
|
2495
|
+
accessTokens = 0,
|
|
2496
|
+
refreshTokens = 0,
|
|
2497
|
+
usersCount = 0,
|
|
2498
|
+
runningLabel = "Running",
|
|
2499
|
+
idleLabel = "Idle",
|
|
2500
|
+
tooltipTitle = "Sessions & Active Tokens",
|
|
2501
|
+
className
|
|
1642
2502
|
}) {
|
|
1643
|
-
|
|
1644
|
-
const
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
2503
|
+
const activeCount = count != null ? count : 0;
|
|
2504
|
+
const running = isRunning != null ? isRunning : activeCount > 0;
|
|
2505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Tooltip, { children: [
|
|
2506
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2507
|
+
TooltipTrigger,
|
|
2508
|
+
{
|
|
2509
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2510
|
+
"div",
|
|
2511
|
+
{
|
|
2512
|
+
className: (0, import_cn22.cn)(
|
|
2513
|
+
"inline-flex items-center cursor-pointer select-none",
|
|
2514
|
+
className
|
|
2515
|
+
),
|
|
2516
|
+
children: running ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2517
|
+
Badge,
|
|
2518
|
+
{
|
|
2519
|
+
variant: "outline",
|
|
2520
|
+
className: "border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 gap-1.5 text-xs font-normal",
|
|
2521
|
+
children: [
|
|
2522
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "size-1.5 rounded-full bg-emerald-500 animate-pulse" }),
|
|
2523
|
+
runningLabel,
|
|
2524
|
+
" (",
|
|
2525
|
+
activeCount,
|
|
2526
|
+
")"
|
|
2527
|
+
]
|
|
2528
|
+
}
|
|
2529
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2530
|
+
Badge,
|
|
2531
|
+
{
|
|
2532
|
+
variant: "outline",
|
|
2533
|
+
className: "border-border/60 bg-muted/40 text-muted-foreground gap-1.5 text-xs font-normal",
|
|
2534
|
+
children: [
|
|
2535
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "size-1.5 rounded-full bg-muted-foreground/40" }),
|
|
2536
|
+
idleLabel
|
|
2537
|
+
]
|
|
2538
|
+
}
|
|
2539
|
+
)
|
|
2540
|
+
}
|
|
2541
|
+
)
|
|
2542
|
+
}
|
|
2543
|
+
),
|
|
2544
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(TooltipContent, { className: "text-xs space-y-2 p-3 min-w-[200px]", children: [
|
|
2545
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between border-b pb-1.5", children: [
|
|
2546
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "font-semibold text-xs", children: tooltipTitle }),
|
|
2547
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2548
|
+
"span",
|
|
2549
|
+
{
|
|
2550
|
+
className: (0, import_cn22.cn)(
|
|
2551
|
+
"text-[10px] px-1.5 py-0.5 rounded font-medium",
|
|
2552
|
+
running ? "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400" : "bg-muted text-muted-foreground"
|
|
2553
|
+
),
|
|
2554
|
+
children: running ? "Active" : "Idle"
|
|
2555
|
+
}
|
|
2556
|
+
)
|
|
2557
|
+
] }),
|
|
2558
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
2559
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between text-muted-foreground", children: [
|
|
2560
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Active Access Tokens:" }),
|
|
2561
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "font-mono font-medium text-foreground", children: accessTokens != null ? accessTokens : 0 })
|
|
2562
|
+
] }),
|
|
2563
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between text-muted-foreground", children: [
|
|
2564
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Active Refresh Tokens:" }),
|
|
2565
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "font-mono font-medium text-foreground", children: refreshTokens != null ? refreshTokens : 0 })
|
|
2566
|
+
] }),
|
|
2567
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between text-muted-foreground", children: [
|
|
2568
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { children: "Authorized Users:" }),
|
|
2569
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "font-mono font-medium text-foreground", children: usersCount != null ? usersCount : 0 })
|
|
2570
|
+
] })
|
|
2571
|
+
] })
|
|
2572
|
+
] })
|
|
2573
|
+
] });
|
|
1651
2574
|
});
|
|
2575
|
+
var TokenActivity = RunningStatus;
|
|
2576
|
+
var ActiveTokensStatus = RunningStatus;
|
|
1652
2577
|
|
|
1653
2578
|
// src/components/composed/columns/user-role.tsx
|
|
1654
|
-
var
|
|
1655
|
-
var
|
|
1656
|
-
var
|
|
1657
|
-
var
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
2579
|
+
var import_cn23 = require("cn");
|
|
2580
|
+
var import_lucide_react10 = require("lucide-react");
|
|
2581
|
+
var import_react15 = require("react");
|
|
2582
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2583
|
+
var UserRole = (0, import_react15.memo)(function UserRole2({
|
|
2584
|
+
role,
|
|
2585
|
+
className
|
|
2586
|
+
}) {
|
|
2587
|
+
if (!role) return null;
|
|
2588
|
+
const normalized = role.toLowerCase().trim();
|
|
2589
|
+
if (normalized === "admin") {
|
|
2590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2591
|
+
Badge,
|
|
2592
|
+
{
|
|
2593
|
+
variant: "outline",
|
|
2594
|
+
className: (0, import_cn23.cn)(
|
|
2595
|
+
"capitalize border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300",
|
|
2596
|
+
className
|
|
2597
|
+
),
|
|
2598
|
+
children: [
|
|
2599
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2600
|
+
import_lucide_react10.UserStarIcon,
|
|
2601
|
+
{
|
|
2602
|
+
"data-icon": "inline-start",
|
|
2603
|
+
className: "text-amber-500 dark:text-amber-400"
|
|
2604
|
+
}
|
|
2605
|
+
),
|
|
2606
|
+
role
|
|
2607
|
+
]
|
|
2608
|
+
}
|
|
2609
|
+
);
|
|
2610
|
+
}
|
|
2611
|
+
if (normalized === "client") {
|
|
2612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2613
|
+
Badge,
|
|
2614
|
+
{
|
|
2615
|
+
variant: "outline",
|
|
2616
|
+
className: (0, import_cn23.cn)(
|
|
2617
|
+
"capitalize border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-300",
|
|
2618
|
+
className
|
|
2619
|
+
),
|
|
2620
|
+
children: [
|
|
2621
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2622
|
+
import_lucide_react10.BriefcaseIcon,
|
|
2623
|
+
{
|
|
2624
|
+
"data-icon": "inline-start",
|
|
2625
|
+
className: "text-sky-500 dark:text-sky-400"
|
|
2626
|
+
}
|
|
2627
|
+
),
|
|
2628
|
+
role
|
|
2629
|
+
]
|
|
2630
|
+
}
|
|
2631
|
+
);
|
|
2632
|
+
}
|
|
2633
|
+
if (normalized === "user") {
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "outline", className: (0, import_cn23.cn)("capitalize", className), children: [
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react10.UserIcon, { "data-icon": "inline-start", className: "text-muted-foreground" }),
|
|
2636
|
+
role
|
|
2637
|
+
] });
|
|
2638
|
+
}
|
|
2639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2640
|
+
Badge,
|
|
2641
|
+
{
|
|
2642
|
+
variant: "secondary",
|
|
2643
|
+
className: (0, import_cn23.cn)("capitalize font-normal", className),
|
|
2644
|
+
children: [
|
|
2645
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react10.ShieldIcon, { "data-icon": "inline-start", className: "text-muted-foreground" }),
|
|
2646
|
+
role
|
|
2647
|
+
]
|
|
2648
|
+
}
|
|
2649
|
+
);
|
|
1663
2650
|
});
|
|
1664
2651
|
|
|
1665
2652
|
// src/components/composed/columns/user-status.tsx
|
|
1666
|
-
var
|
|
1667
|
-
var
|
|
1668
|
-
var
|
|
1669
|
-
var UserStatus = (0,
|
|
1670
|
-
status
|
|
2653
|
+
var import_cn24 = require("cn");
|
|
2654
|
+
var import_react16 = require("react");
|
|
2655
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2656
|
+
var UserStatus = (0, import_react16.memo)(function UserStatus2({
|
|
2657
|
+
status,
|
|
2658
|
+
label,
|
|
2659
|
+
activeLabel = "Active",
|
|
2660
|
+
inactiveLabel,
|
|
2661
|
+
className
|
|
1671
2662
|
}) {
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
/* @__PURE__ */ (0,
|
|
1677
|
-
|
|
1678
|
-
|
|
2663
|
+
var _a;
|
|
2664
|
+
const isInactive = typeof status === "string" ? status.toLowerCase() !== "active" : Boolean(status);
|
|
2665
|
+
if (isInactive) {
|
|
2666
|
+
const displayLabel = (_a = label != null ? label : inactiveLabel) != null ? _a : typeof status === "string" ? status : "Inactive";
|
|
2667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2668
|
+
Badge,
|
|
2669
|
+
{
|
|
2670
|
+
variant: "outline",
|
|
2671
|
+
className: (0, import_cn24.cn)(
|
|
2672
|
+
"capitalize border-destructive/30 bg-destructive/10 text-destructive dark:text-red-400 gap-1.5 font-normal",
|
|
2673
|
+
className
|
|
2674
|
+
),
|
|
2675
|
+
children: [
|
|
2676
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "size-1.5 rounded-full bg-destructive" }),
|
|
2677
|
+
displayLabel
|
|
2678
|
+
]
|
|
2679
|
+
}
|
|
2680
|
+
);
|
|
2681
|
+
}
|
|
2682
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2683
|
+
Badge,
|
|
2684
|
+
{
|
|
2685
|
+
variant: "outline",
|
|
2686
|
+
className: (0, import_cn24.cn)(
|
|
2687
|
+
"capitalize border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 gap-1.5 font-normal",
|
|
2688
|
+
className
|
|
2689
|
+
),
|
|
2690
|
+
children: [
|
|
2691
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "size-1.5 rounded-full bg-emerald-500" }),
|
|
2692
|
+
label != null ? label : activeLabel
|
|
2693
|
+
]
|
|
2694
|
+
}
|
|
2695
|
+
);
|
|
1679
2696
|
});
|
|
2697
|
+
var ItemStatus = UserStatus;
|
|
2698
|
+
var StatusBadge = UserStatus;
|
|
1680
2699
|
|
|
1681
2700
|
// src/components/composed/data-table/data-table.tsx
|
|
1682
2701
|
var import_react_table4 = require("@tanstack/react-table");
|
|
1683
|
-
var
|
|
2702
|
+
var import_lucide_react23 = require("lucide-react");
|
|
1684
2703
|
var import_navigation3 = require("next/navigation");
|
|
1685
|
-
var
|
|
2704
|
+
var import_react21 = require("react");
|
|
1686
2705
|
|
|
1687
2706
|
// src/components/composed/state-empty.tsx
|
|
1688
|
-
var
|
|
2707
|
+
var import_react17 = require("react");
|
|
1689
2708
|
|
|
1690
2709
|
// src/components/ui/empty.tsx
|
|
1691
2710
|
var import_class_variance_authority4 = require("class-variance-authority");
|
|
1692
|
-
var
|
|
1693
|
-
var
|
|
2711
|
+
var import_cn25 = require("cn");
|
|
2712
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1694
2713
|
function Empty(_a) {
|
|
1695
2714
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1696
|
-
return /* @__PURE__ */ (0,
|
|
2715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1697
2716
|
"div",
|
|
1698
2717
|
__spreadValues({
|
|
1699
2718
|
"data-slot": "empty",
|
|
1700
|
-
className: (0,
|
|
2719
|
+
className: (0, import_cn25.cn)(
|
|
1701
2720
|
"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",
|
|
1702
2721
|
className
|
|
1703
2722
|
)
|
|
@@ -1706,11 +2725,11 @@ function Empty(_a) {
|
|
|
1706
2725
|
}
|
|
1707
2726
|
function EmptyHeader(_a) {
|
|
1708
2727
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1709
|
-
return /* @__PURE__ */ (0,
|
|
2728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1710
2729
|
"div",
|
|
1711
2730
|
__spreadValues({
|
|
1712
2731
|
"data-slot": "empty-header",
|
|
1713
|
-
className: (0,
|
|
2732
|
+
className: (0, import_cn25.cn)("flex max-w-sm flex-col items-center gap-1", className)
|
|
1714
2733
|
}, props)
|
|
1715
2734
|
);
|
|
1716
2735
|
}
|
|
@@ -1736,22 +2755,22 @@ function EmptyMedia(_a) {
|
|
|
1736
2755
|
"className",
|
|
1737
2756
|
"variant"
|
|
1738
2757
|
]);
|
|
1739
|
-
return /* @__PURE__ */ (0,
|
|
2758
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1740
2759
|
"div",
|
|
1741
2760
|
__spreadValues({
|
|
1742
2761
|
"data-slot": "empty-icon",
|
|
1743
2762
|
"data-variant": variant,
|
|
1744
|
-
className: (0,
|
|
2763
|
+
className: (0, import_cn25.cn)(emptyMediaVariants({ variant, className }))
|
|
1745
2764
|
}, props)
|
|
1746
2765
|
);
|
|
1747
2766
|
}
|
|
1748
2767
|
function EmptyTitle(_a) {
|
|
1749
2768
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1750
|
-
return /* @__PURE__ */ (0,
|
|
2769
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1751
2770
|
"div",
|
|
1752
2771
|
__spreadValues({
|
|
1753
2772
|
"data-slot": "empty-title",
|
|
1754
|
-
className: (0,
|
|
2773
|
+
className: (0, import_cn25.cn)(
|
|
1755
2774
|
"font-heading text-sm font-medium tracking-tight",
|
|
1756
2775
|
className
|
|
1757
2776
|
)
|
|
@@ -1760,11 +2779,11 @@ function EmptyTitle(_a) {
|
|
|
1760
2779
|
}
|
|
1761
2780
|
function EmptyDescription(_a) {
|
|
1762
2781
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1763
|
-
return /* @__PURE__ */ (0,
|
|
2782
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1764
2783
|
"div",
|
|
1765
2784
|
__spreadValues({
|
|
1766
2785
|
"data-slot": "empty-description",
|
|
1767
|
-
className: (0,
|
|
2786
|
+
className: (0, import_cn25.cn)(
|
|
1768
2787
|
"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
1769
2788
|
className
|
|
1770
2789
|
)
|
|
@@ -1773,11 +2792,11 @@ function EmptyDescription(_a) {
|
|
|
1773
2792
|
}
|
|
1774
2793
|
function EmptyContent(_a) {
|
|
1775
2794
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1776
|
-
return /* @__PURE__ */ (0,
|
|
2795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1777
2796
|
"div",
|
|
1778
2797
|
__spreadValues({
|
|
1779
2798
|
"data-slot": "empty-content",
|
|
1780
|
-
className: (0,
|
|
2799
|
+
className: (0, import_cn25.cn)(
|
|
1781
2800
|
"flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance",
|
|
1782
2801
|
className
|
|
1783
2802
|
)
|
|
@@ -1786,18 +2805,18 @@ function EmptyContent(_a) {
|
|
|
1786
2805
|
}
|
|
1787
2806
|
|
|
1788
2807
|
// src/lib/utils.ts
|
|
1789
|
-
var
|
|
2808
|
+
var import_cn26 = require("cn");
|
|
1790
2809
|
|
|
1791
2810
|
// src/components/composed/state-empty.tsx
|
|
1792
|
-
var
|
|
2811
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1793
2812
|
function renderStateIcon(icon) {
|
|
1794
2813
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
1795
2814
|
const IconComp = icon;
|
|
1796
|
-
return /* @__PURE__ */ (0,
|
|
2815
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(IconComp, {});
|
|
1797
2816
|
}
|
|
1798
2817
|
return icon;
|
|
1799
2818
|
}
|
|
1800
|
-
var StateEmpty = (0,
|
|
2819
|
+
var StateEmpty = (0, import_react17.memo)(function StateEmpty2({
|
|
1801
2820
|
icon,
|
|
1802
2821
|
title,
|
|
1803
2822
|
description,
|
|
@@ -1810,17 +2829,17 @@ var StateEmpty = (0, import_react8.memo)(function StateEmpty2({
|
|
|
1810
2829
|
const actionHandler = isFunctionAction ? render : onClick;
|
|
1811
2830
|
const buttonRender = isFunctionAction ? void 0 : render;
|
|
1812
2831
|
const hasAction = Boolean(buttonText || render || onClick);
|
|
1813
|
-
return /* @__PURE__ */ (0,
|
|
2832
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
1814
2833
|
Empty,
|
|
1815
2834
|
{
|
|
1816
|
-
className: (0,
|
|
2835
|
+
className: (0, import_cn26.cn)("w-full", state === "outline" && "border border-dashed"),
|
|
1817
2836
|
children: [
|
|
1818
|
-
/* @__PURE__ */ (0,
|
|
1819
|
-
/* @__PURE__ */ (0,
|
|
1820
|
-
/* @__PURE__ */ (0,
|
|
1821
|
-
/* @__PURE__ */ (0,
|
|
2837
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(EmptyHeader, { children: [
|
|
2838
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(EmptyMedia, { variant: "icon", children: renderStateIcon(icon) }),
|
|
2839
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(EmptyTitle, { children: title }),
|
|
2840
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(EmptyDescription, { children: description })
|
|
1822
2841
|
] }),
|
|
1823
|
-
hasAction && /* @__PURE__ */ (0,
|
|
2842
|
+
hasAction && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(EmptyContent, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1824
2843
|
Button,
|
|
1825
2844
|
{
|
|
1826
2845
|
variant: "outline",
|
|
@@ -1837,20 +2856,20 @@ var StateEmpty = (0, import_react8.memo)(function StateEmpty2({
|
|
|
1837
2856
|
});
|
|
1838
2857
|
|
|
1839
2858
|
// src/components/ui/table.tsx
|
|
1840
|
-
var
|
|
1841
|
-
var
|
|
2859
|
+
var import_cn27 = require("cn");
|
|
2860
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1842
2861
|
function Table(_a) {
|
|
1843
2862
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1844
|
-
return /* @__PURE__ */ (0,
|
|
2863
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1845
2864
|
"div",
|
|
1846
2865
|
{
|
|
1847
2866
|
"data-slot": "table-container",
|
|
1848
2867
|
className: "relative w-full overflow-x-auto",
|
|
1849
|
-
children: /* @__PURE__ */ (0,
|
|
2868
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1850
2869
|
"table",
|
|
1851
2870
|
__spreadValues({
|
|
1852
2871
|
"data-slot": "table",
|
|
1853
|
-
className: (0,
|
|
2872
|
+
className: (0, import_cn27.cn)("w-full caption-bottom text-xs", className)
|
|
1854
2873
|
}, props)
|
|
1855
2874
|
)
|
|
1856
2875
|
}
|
|
@@ -1858,31 +2877,31 @@ function Table(_a) {
|
|
|
1858
2877
|
}
|
|
1859
2878
|
function TableHeader(_a) {
|
|
1860
2879
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1861
|
-
return /* @__PURE__ */ (0,
|
|
2880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1862
2881
|
"thead",
|
|
1863
2882
|
__spreadValues({
|
|
1864
2883
|
"data-slot": "table-header",
|
|
1865
|
-
className: (0,
|
|
2884
|
+
className: (0, import_cn27.cn)("[&_tr]:border-b", className)
|
|
1866
2885
|
}, props)
|
|
1867
2886
|
);
|
|
1868
2887
|
}
|
|
1869
2888
|
function TableBody(_a) {
|
|
1870
2889
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1871
|
-
return /* @__PURE__ */ (0,
|
|
2890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1872
2891
|
"tbody",
|
|
1873
2892
|
__spreadValues({
|
|
1874
2893
|
"data-slot": "table-body",
|
|
1875
|
-
className: (0,
|
|
2894
|
+
className: (0, import_cn27.cn)("[&_tr:last-child]:border-0", className)
|
|
1876
2895
|
}, props)
|
|
1877
2896
|
);
|
|
1878
2897
|
}
|
|
1879
2898
|
function TableRow(_a) {
|
|
1880
2899
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1881
|
-
return /* @__PURE__ */ (0,
|
|
2900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1882
2901
|
"tr",
|
|
1883
2902
|
__spreadValues({
|
|
1884
2903
|
"data-slot": "table-row",
|
|
1885
|
-
className: (0,
|
|
2904
|
+
className: (0, import_cn27.cn)(
|
|
1886
2905
|
"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",
|
|
1887
2906
|
className
|
|
1888
2907
|
)
|
|
@@ -1891,11 +2910,11 @@ function TableRow(_a) {
|
|
|
1891
2910
|
}
|
|
1892
2911
|
function TableHead(_a) {
|
|
1893
2912
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1894
|
-
return /* @__PURE__ */ (0,
|
|
2913
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1895
2914
|
"th",
|
|
1896
2915
|
__spreadValues({
|
|
1897
2916
|
"data-slot": "table-head",
|
|
1898
|
-
className: (0,
|
|
2917
|
+
className: (0, import_cn27.cn)(
|
|
1899
2918
|
"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
|
|
1900
2919
|
className
|
|
1901
2920
|
)
|
|
@@ -1904,11 +2923,11 @@ function TableHead(_a) {
|
|
|
1904
2923
|
}
|
|
1905
2924
|
function TableCell(_a) {
|
|
1906
2925
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1907
|
-
return /* @__PURE__ */ (0,
|
|
2926
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1908
2927
|
"td",
|
|
1909
2928
|
__spreadValues({
|
|
1910
2929
|
"data-slot": "table-cell",
|
|
1911
|
-
className: (0,
|
|
2930
|
+
className: (0, import_cn27.cn)(
|
|
1912
2931
|
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
|
|
1913
2932
|
className
|
|
1914
2933
|
)
|
|
@@ -1944,20 +2963,20 @@ var features = (0, import_react_table.tableFeatures)({
|
|
|
1944
2963
|
|
|
1945
2964
|
// src/components/composed/data-table/table-content-body.tsx
|
|
1946
2965
|
var import_react_table2 = require("@tanstack/react-table");
|
|
1947
|
-
var
|
|
1948
|
-
var
|
|
2966
|
+
var import_lucide_react11 = require("lucide-react");
|
|
2967
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1949
2968
|
function DataTableContentBody({
|
|
1950
2969
|
table,
|
|
1951
2970
|
columns
|
|
1952
2971
|
}) {
|
|
1953
2972
|
const rows = table.getRowModel().rows;
|
|
1954
2973
|
if (rows == null ? void 0 : rows.length) {
|
|
1955
|
-
return /* @__PURE__ */ (0,
|
|
2974
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableBody, { children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { children: (0, import_react_table2.flexRender)(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) });
|
|
1956
2975
|
}
|
|
1957
|
-
return /* @__PURE__ */ (0,
|
|
2976
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableBody, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { colSpan: columns.length, className: "h-48 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1958
2977
|
StateEmpty,
|
|
1959
2978
|
{
|
|
1960
|
-
icon: /* @__PURE__ */ (0,
|
|
2979
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.SearchXIcon, {}),
|
|
1961
2980
|
title: "No matching results",
|
|
1962
2981
|
description: "No records matched your search query or filter criteria.",
|
|
1963
2982
|
buttonText: "Clear search & filters",
|
|
@@ -1971,18 +2990,18 @@ function DataTableContentBody({
|
|
|
1971
2990
|
|
|
1972
2991
|
// src/components/composed/data-table/table-content-header.tsx
|
|
1973
2992
|
var import_react_table3 = require("@tanstack/react-table");
|
|
1974
|
-
var
|
|
2993
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1975
2994
|
function DataTableContentHeader({
|
|
1976
2995
|
table
|
|
1977
2996
|
}) {
|
|
1978
|
-
return /* @__PURE__ */ (0,
|
|
2997
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { children: header.isPlaceholder ? null : (0, import_react_table3.flexRender)(
|
|
1979
2998
|
header.column.columnDef.header,
|
|
1980
2999
|
header.getContext()
|
|
1981
3000
|
) }, header.id)) }, headerGroup.id)) });
|
|
1982
3001
|
}
|
|
1983
3002
|
|
|
1984
3003
|
// src/components/composed/data-table/table-footer-entries.tsx
|
|
1985
|
-
var
|
|
3004
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1986
3005
|
function DataTableFooterEntries({
|
|
1987
3006
|
table
|
|
1988
3007
|
}) {
|
|
@@ -1993,131 +3012,131 @@ function DataTableFooterEntries({
|
|
|
1993
3012
|
const totalRows = table.getFilteredRowModel().rows.length;
|
|
1994
3013
|
const startRow = totalRows === 0 ? 0 : pageIndex * pageSize + 1;
|
|
1995
3014
|
const endRow = Math.min((pageIndex + 1) * pageSize, totalRows);
|
|
1996
|
-
return /* @__PURE__ */ (0,
|
|
3015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex-1 text-xs text-muted-foreground", children: [
|
|
1997
3016
|
"Showing",
|
|
1998
3017
|
" ",
|
|
1999
|
-
/* @__PURE__ */ (0,
|
|
3018
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: "font-medium text-foreground", children: [
|
|
2000
3019
|
startRow,
|
|
2001
3020
|
"-",
|
|
2002
3021
|
endRow
|
|
2003
3022
|
] }),
|
|
2004
3023
|
" ",
|
|
2005
3024
|
"of ",
|
|
2006
|
-
/* @__PURE__ */ (0,
|
|
3025
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "font-medium text-foreground", children: totalRows }),
|
|
2007
3026
|
" ",
|
|
2008
3027
|
"entries."
|
|
2009
3028
|
] });
|
|
2010
3029
|
}
|
|
2011
3030
|
|
|
2012
3031
|
// src/components/composed/data-table/table-footer-pagination.tsx
|
|
2013
|
-
var
|
|
2014
|
-
var
|
|
3032
|
+
var import_lucide_react12 = require("lucide-react");
|
|
3033
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2015
3034
|
function DataTableFooterPagination({
|
|
2016
3035
|
table
|
|
2017
3036
|
}) {
|
|
2018
|
-
return /* @__PURE__ */ (0,
|
|
2019
|
-
/* @__PURE__ */ (0,
|
|
2020
|
-
/* @__PURE__ */ (0,
|
|
3037
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
3038
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Tooltip, { children: [
|
|
3039
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2021
3040
|
TooltipTrigger,
|
|
2022
3041
|
{
|
|
2023
|
-
render: /* @__PURE__ */ (0,
|
|
3042
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2024
3043
|
Button,
|
|
2025
3044
|
{
|
|
2026
3045
|
variant: "outline",
|
|
2027
3046
|
size: "icon-xs",
|
|
2028
3047
|
onClick: () => table.firstPage(),
|
|
2029
3048
|
disabled: !table.getCanPreviousPage(),
|
|
2030
|
-
children: /* @__PURE__ */ (0,
|
|
3049
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react12.ChevronsLeftIcon, {})
|
|
2031
3050
|
}
|
|
2032
3051
|
)
|
|
2033
3052
|
}
|
|
2034
3053
|
),
|
|
2035
|
-
/* @__PURE__ */ (0,
|
|
3054
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TooltipContent, { children: "Go to first page" })
|
|
2036
3055
|
] }),
|
|
2037
|
-
/* @__PURE__ */ (0,
|
|
2038
|
-
/* @__PURE__ */ (0,
|
|
3056
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Tooltip, { children: [
|
|
3057
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2039
3058
|
TooltipTrigger,
|
|
2040
3059
|
{
|
|
2041
|
-
render: /* @__PURE__ */ (0,
|
|
3060
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2042
3061
|
Button,
|
|
2043
3062
|
{
|
|
2044
3063
|
variant: "outline",
|
|
2045
3064
|
size: "icon-xs",
|
|
2046
3065
|
onClick: () => table.previousPage(),
|
|
2047
3066
|
disabled: !table.getCanPreviousPage(),
|
|
2048
|
-
children: /* @__PURE__ */ (0,
|
|
3067
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react12.ChevronLeftIcon, {})
|
|
2049
3068
|
}
|
|
2050
3069
|
)
|
|
2051
3070
|
}
|
|
2052
3071
|
),
|
|
2053
|
-
/* @__PURE__ */ (0,
|
|
3072
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TooltipContent, { children: "Go to previous page" })
|
|
2054
3073
|
] }),
|
|
2055
|
-
/* @__PURE__ */ (0,
|
|
2056
|
-
/* @__PURE__ */ (0,
|
|
3074
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Tooltip, { children: [
|
|
3075
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2057
3076
|
TooltipTrigger,
|
|
2058
3077
|
{
|
|
2059
|
-
render: /* @__PURE__ */ (0,
|
|
3078
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2060
3079
|
Button,
|
|
2061
3080
|
{
|
|
2062
3081
|
variant: "outline",
|
|
2063
3082
|
size: "icon-xs",
|
|
2064
3083
|
onClick: () => table.nextPage(),
|
|
2065
3084
|
disabled: !table.getCanNextPage(),
|
|
2066
|
-
children: /* @__PURE__ */ (0,
|
|
3085
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react12.ChevronRightIcon, {})
|
|
2067
3086
|
}
|
|
2068
3087
|
)
|
|
2069
3088
|
}
|
|
2070
3089
|
),
|
|
2071
|
-
/* @__PURE__ */ (0,
|
|
3090
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TooltipContent, { children: "Go to next page" })
|
|
2072
3091
|
] }),
|
|
2073
|
-
/* @__PURE__ */ (0,
|
|
2074
|
-
/* @__PURE__ */ (0,
|
|
3092
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Tooltip, { children: [
|
|
3093
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2075
3094
|
TooltipTrigger,
|
|
2076
3095
|
{
|
|
2077
|
-
render: /* @__PURE__ */ (0,
|
|
3096
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2078
3097
|
Button,
|
|
2079
3098
|
{
|
|
2080
3099
|
variant: "outline",
|
|
2081
3100
|
size: "icon-xs",
|
|
2082
3101
|
onClick: () => table.lastPage(),
|
|
2083
3102
|
disabled: !table.getCanNextPage(),
|
|
2084
|
-
children: /* @__PURE__ */ (0,
|
|
3103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react12.ChevronsRightIcon, {})
|
|
2085
3104
|
}
|
|
2086
3105
|
)
|
|
2087
3106
|
}
|
|
2088
3107
|
),
|
|
2089
|
-
/* @__PURE__ */ (0,
|
|
3108
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TooltipContent, { children: "Go to last page" })
|
|
2090
3109
|
] })
|
|
2091
3110
|
] });
|
|
2092
3111
|
}
|
|
2093
3112
|
|
|
2094
3113
|
// src/components/composed/data-table/table-header-add.tsx
|
|
2095
|
-
var
|
|
2096
|
-
var
|
|
3114
|
+
var import_lucide_react13 = require("lucide-react");
|
|
3115
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2097
3116
|
function DataTableHeaderAdd({
|
|
2098
3117
|
onAdd,
|
|
2099
3118
|
addLabel
|
|
2100
3119
|
}) {
|
|
2101
|
-
return /* @__PURE__ */ (0,
|
|
2102
|
-
/* @__PURE__ */ (0,
|
|
2103
|
-
/* @__PURE__ */ (0,
|
|
3120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
3121
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Tooltip, { children: [
|
|
3122
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
2104
3123
|
TooltipTrigger,
|
|
2105
3124
|
{
|
|
2106
3125
|
className: "flex sm:hidden",
|
|
2107
|
-
render: /* @__PURE__ */ (0,
|
|
3126
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Button, { variant: "default", size: "icon", onClick: onAdd, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react13.PlusIcon, {}) })
|
|
2108
3127
|
}
|
|
2109
3128
|
),
|
|
2110
|
-
/* @__PURE__ */ (0,
|
|
3129
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TooltipContent, { children: addLabel != null ? addLabel : "Add" })
|
|
2111
3130
|
] }),
|
|
2112
|
-
/* @__PURE__ */ (0,
|
|
2113
|
-
/* @__PURE__ */ (0,
|
|
3131
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Button, { variant: "default", onClick: onAdd, className: "hidden sm:flex", children: [
|
|
3132
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react13.PlusIcon, {}),
|
|
2114
3133
|
addLabel != null ? addLabel : "Add"
|
|
2115
3134
|
] })
|
|
2116
3135
|
] });
|
|
2117
3136
|
}
|
|
2118
3137
|
|
|
2119
3138
|
// src/components/composed/data-table/table-header-download.tsx
|
|
2120
|
-
var
|
|
3139
|
+
var import_lucide_react14 = require("lucide-react");
|
|
2121
3140
|
|
|
2122
3141
|
// src/components/composed/data-table/export.ts
|
|
2123
3142
|
var XLSX = __toESM(require("xlsx"));
|
|
@@ -2257,7 +3276,7 @@ function printTable(headers, rows, title = "Data Export") {
|
|
|
2257
3276
|
}
|
|
2258
3277
|
|
|
2259
3278
|
// src/components/composed/data-table/table-header-download.tsx
|
|
2260
|
-
var
|
|
3279
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2261
3280
|
function getTableExportData(table) {
|
|
2262
3281
|
const columns = table.getAllColumns().filter(
|
|
2263
3282
|
(col) => typeof col.accessorFn !== "undefined" && col.getIsVisible()
|
|
@@ -2300,25 +3319,25 @@ function DataTableHeaderDownload({
|
|
|
2300
3319
|
exportFilename,
|
|
2301
3320
|
onDownload
|
|
2302
3321
|
}) {
|
|
2303
|
-
return /* @__PURE__ */ (0,
|
|
2304
|
-
/* @__PURE__ */ (0,
|
|
2305
|
-
/* @__PURE__ */ (0,
|
|
3322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(DropdownMenu, { children: [
|
|
3323
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Tooltip, { children: [
|
|
3324
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2306
3325
|
DropdownMenuTrigger,
|
|
2307
3326
|
{
|
|
2308
|
-
render: /* @__PURE__ */ (0,
|
|
3327
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
2309
3328
|
TooltipTrigger,
|
|
2310
3329
|
{
|
|
2311
|
-
render: /* @__PURE__ */ (0,
|
|
3330
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.DownloadIcon, {}) })
|
|
2312
3331
|
}
|
|
2313
3332
|
)
|
|
2314
3333
|
}
|
|
2315
3334
|
),
|
|
2316
|
-
/* @__PURE__ */ (0,
|
|
3335
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipContent, { children: "Download options" })
|
|
2317
3336
|
] }),
|
|
2318
|
-
/* @__PURE__ */ (0,
|
|
2319
|
-
/* @__PURE__ */ (0,
|
|
2320
|
-
/* @__PURE__ */ (0,
|
|
2321
|
-
/* @__PURE__ */ (0,
|
|
3337
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(DropdownMenuGroup, { children: [
|
|
3338
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(DropdownMenuLabel, { children: "Download data" }),
|
|
3339
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(DropdownMenuSeparator, {}),
|
|
3340
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
2322
3341
|
DropdownMenuItem,
|
|
2323
3342
|
{
|
|
2324
3343
|
className: "hover:cursor-pointer",
|
|
@@ -2328,12 +3347,12 @@ function DataTableHeaderDownload({
|
|
|
2328
3347
|
onDownload == null ? void 0 : onDownload();
|
|
2329
3348
|
},
|
|
2330
3349
|
children: [
|
|
2331
|
-
/* @__PURE__ */ (0,
|
|
3350
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.FileTextIcon, {}),
|
|
2332
3351
|
"Download PDF"
|
|
2333
3352
|
]
|
|
2334
3353
|
}
|
|
2335
3354
|
),
|
|
2336
|
-
/* @__PURE__ */ (0,
|
|
3355
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
2337
3356
|
DropdownMenuItem,
|
|
2338
3357
|
{
|
|
2339
3358
|
className: "hover:cursor-pointer",
|
|
@@ -2343,12 +3362,12 @@ function DataTableHeaderDownload({
|
|
|
2343
3362
|
onDownload == null ? void 0 : onDownload();
|
|
2344
3363
|
},
|
|
2345
3364
|
children: [
|
|
2346
|
-
/* @__PURE__ */ (0,
|
|
3365
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.FileSpreadsheetIcon, {}),
|
|
2347
3366
|
"Download Excel"
|
|
2348
3367
|
]
|
|
2349
3368
|
}
|
|
2350
3369
|
),
|
|
2351
|
-
/* @__PURE__ */ (0,
|
|
3370
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
2352
3371
|
DropdownMenuItem,
|
|
2353
3372
|
{
|
|
2354
3373
|
className: "hover:cursor-pointer",
|
|
@@ -2358,13 +3377,13 @@ function DataTableHeaderDownload({
|
|
|
2358
3377
|
onDownload == null ? void 0 : onDownload();
|
|
2359
3378
|
},
|
|
2360
3379
|
children: [
|
|
2361
|
-
/* @__PURE__ */ (0,
|
|
3380
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.FileCodeIcon, {}),
|
|
2362
3381
|
"Download CSV"
|
|
2363
3382
|
]
|
|
2364
3383
|
}
|
|
2365
3384
|
),
|
|
2366
|
-
/* @__PURE__ */ (0,
|
|
2367
|
-
/* @__PURE__ */ (0,
|
|
3385
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(DropdownMenuSeparator, {}),
|
|
3386
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
2368
3387
|
DropdownMenuItem,
|
|
2369
3388
|
{
|
|
2370
3389
|
className: "hover:cursor-pointer",
|
|
@@ -2373,7 +3392,7 @@ function DataTableHeaderDownload({
|
|
|
2373
3392
|
printTable(headers, rows, exportFilename);
|
|
2374
3393
|
},
|
|
2375
3394
|
children: [
|
|
2376
|
-
/* @__PURE__ */ (0,
|
|
3395
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.PrinterIcon, {}),
|
|
2377
3396
|
"Print Table"
|
|
2378
3397
|
]
|
|
2379
3398
|
}
|
|
@@ -2384,15 +3403,15 @@ function DataTableHeaderDownload({
|
|
|
2384
3403
|
|
|
2385
3404
|
// src/components/composed/data-table/table-header-filter.tsx
|
|
2386
3405
|
var import_date_fns = require("date-fns");
|
|
2387
|
-
var
|
|
2388
|
-
var
|
|
3406
|
+
var import_lucide_react17 = require("lucide-react");
|
|
3407
|
+
var import_react18 = require("react");
|
|
2389
3408
|
|
|
2390
3409
|
// src/components/ui/calendar.tsx
|
|
2391
|
-
var
|
|
2392
|
-
var
|
|
3410
|
+
var import_cn28 = require("cn");
|
|
3411
|
+
var import_lucide_react15 = require("lucide-react");
|
|
2393
3412
|
var React3 = __toESM(require("react"));
|
|
2394
3413
|
var import_react_day_picker = require("react-day-picker");
|
|
2395
|
-
var
|
|
3414
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2396
3415
|
function Calendar(_a) {
|
|
2397
3416
|
var _b = _a, {
|
|
2398
3417
|
className,
|
|
@@ -2414,11 +3433,11 @@ function Calendar(_a) {
|
|
|
2414
3433
|
"components"
|
|
2415
3434
|
]);
|
|
2416
3435
|
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
2417
|
-
return /* @__PURE__ */ (0,
|
|
3436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2418
3437
|
import_react_day_picker.DayPicker,
|
|
2419
3438
|
__spreadValues({
|
|
2420
3439
|
showOutsideDays,
|
|
2421
|
-
className: (0,
|
|
3440
|
+
className: (0, import_cn28.cn)(
|
|
2422
3441
|
"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",
|
|
2423
3442
|
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
2424
3443
|
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
@@ -2430,124 +3449,124 @@ function Calendar(_a) {
|
|
|
2430
3449
|
formatMonthDropdown: (date) => date.toLocaleString(locale == null ? void 0 : locale.code, { month: "short" })
|
|
2431
3450
|
}, formatters),
|
|
2432
3451
|
classNames: __spreadValues({
|
|
2433
|
-
root: (0,
|
|
2434
|
-
months: (0,
|
|
3452
|
+
root: (0, import_cn28.cn)("w-fit", defaultClassNames.root),
|
|
3453
|
+
months: (0, import_cn28.cn)(
|
|
2435
3454
|
"relative flex flex-col gap-4 md:flex-row",
|
|
2436
3455
|
defaultClassNames.months
|
|
2437
3456
|
),
|
|
2438
|
-
month: (0,
|
|
2439
|
-
nav: (0,
|
|
3457
|
+
month: (0, import_cn28.cn)("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
3458
|
+
nav: (0, import_cn28.cn)(
|
|
2440
3459
|
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
2441
3460
|
defaultClassNames.nav
|
|
2442
3461
|
),
|
|
2443
|
-
button_previous: (0,
|
|
3462
|
+
button_previous: (0, import_cn28.cn)(
|
|
2444
3463
|
buttonVariants({ variant: buttonVariant }),
|
|
2445
3464
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2446
3465
|
defaultClassNames.button_previous
|
|
2447
3466
|
),
|
|
2448
|
-
button_next: (0,
|
|
3467
|
+
button_next: (0, import_cn28.cn)(
|
|
2449
3468
|
buttonVariants({ variant: buttonVariant }),
|
|
2450
3469
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2451
3470
|
defaultClassNames.button_next
|
|
2452
3471
|
),
|
|
2453
|
-
month_caption: (0,
|
|
3472
|
+
month_caption: (0, import_cn28.cn)(
|
|
2454
3473
|
"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
2455
3474
|
defaultClassNames.month_caption
|
|
2456
3475
|
),
|
|
2457
|
-
dropdowns: (0,
|
|
3476
|
+
dropdowns: (0, import_cn28.cn)(
|
|
2458
3477
|
"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
2459
3478
|
defaultClassNames.dropdowns
|
|
2460
3479
|
),
|
|
2461
|
-
dropdown_root: (0,
|
|
3480
|
+
dropdown_root: (0, import_cn28.cn)(
|
|
2462
3481
|
"relative rounded-(--cell-radius)",
|
|
2463
3482
|
defaultClassNames.dropdown_root
|
|
2464
3483
|
),
|
|
2465
|
-
dropdown: (0,
|
|
3484
|
+
dropdown: (0, import_cn28.cn)(
|
|
2466
3485
|
"absolute inset-0 bg-popover opacity-0",
|
|
2467
3486
|
defaultClassNames.dropdown
|
|
2468
3487
|
),
|
|
2469
|
-
caption_label: (0,
|
|
3488
|
+
caption_label: (0, import_cn28.cn)(
|
|
2470
3489
|
"font-medium select-none",
|
|
2471
3490
|
captionLayout === "label" ? "text-sm" : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
|
|
2472
3491
|
defaultClassNames.caption_label
|
|
2473
3492
|
),
|
|
2474
|
-
month_grid: (0,
|
|
2475
|
-
weekdays: (0,
|
|
2476
|
-
weekday: (0,
|
|
3493
|
+
month_grid: (0, import_cn28.cn)("w-full border-collapse", defaultClassNames.month_grid),
|
|
3494
|
+
weekdays: (0, import_cn28.cn)("flex", defaultClassNames.weekdays),
|
|
3495
|
+
weekday: (0, import_cn28.cn)(
|
|
2477
3496
|
"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
2478
3497
|
defaultClassNames.weekday
|
|
2479
3498
|
),
|
|
2480
|
-
week: (0,
|
|
2481
|
-
week_number_header: (0,
|
|
3499
|
+
week: (0, import_cn28.cn)("mt-2 flex w-full", defaultClassNames.week),
|
|
3500
|
+
week_number_header: (0, import_cn28.cn)(
|
|
2482
3501
|
"w-(--cell-size) select-none",
|
|
2483
3502
|
defaultClassNames.week_number_header
|
|
2484
3503
|
),
|
|
2485
|
-
week_number: (0,
|
|
3504
|
+
week_number: (0, import_cn28.cn)(
|
|
2486
3505
|
"text-[0.8rem] text-muted-foreground select-none",
|
|
2487
3506
|
defaultClassNames.week_number
|
|
2488
3507
|
),
|
|
2489
|
-
day: (0,
|
|
3508
|
+
day: (0, import_cn28.cn)(
|
|
2490
3509
|
"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)",
|
|
2491
3510
|
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
|
|
2492
3511
|
defaultClassNames.day
|
|
2493
3512
|
),
|
|
2494
|
-
range_start: (0,
|
|
3513
|
+
range_start: (0, import_cn28.cn)(
|
|
2495
3514
|
"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",
|
|
2496
3515
|
defaultClassNames.range_start
|
|
2497
3516
|
),
|
|
2498
|
-
range_middle: (0,
|
|
2499
|
-
range_end: (0,
|
|
3517
|
+
range_middle: (0, import_cn28.cn)("rounded-none", defaultClassNames.range_middle),
|
|
3518
|
+
range_end: (0, import_cn28.cn)(
|
|
2500
3519
|
"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",
|
|
2501
3520
|
defaultClassNames.range_end
|
|
2502
3521
|
),
|
|
2503
|
-
today: (0,
|
|
3522
|
+
today: (0, import_cn28.cn)(
|
|
2504
3523
|
"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
|
|
2505
3524
|
defaultClassNames.today
|
|
2506
3525
|
),
|
|
2507
|
-
outside: (0,
|
|
3526
|
+
outside: (0, import_cn28.cn)(
|
|
2508
3527
|
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
2509
3528
|
defaultClassNames.outside
|
|
2510
3529
|
),
|
|
2511
|
-
disabled: (0,
|
|
3530
|
+
disabled: (0, import_cn28.cn)(
|
|
2512
3531
|
"text-muted-foreground opacity-50",
|
|
2513
3532
|
defaultClassNames.disabled
|
|
2514
3533
|
),
|
|
2515
|
-
hidden: (0,
|
|
3534
|
+
hidden: (0, import_cn28.cn)("invisible", defaultClassNames.hidden)
|
|
2516
3535
|
}, classNames),
|
|
2517
3536
|
components: __spreadValues({
|
|
2518
3537
|
Root: (_a2) => {
|
|
2519
3538
|
var _b2 = _a2, { className: className2, rootRef } = _b2, props2 = __objRest(_b2, ["className", "rootRef"]);
|
|
2520
|
-
return /* @__PURE__ */ (0,
|
|
3539
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2521
3540
|
"div",
|
|
2522
3541
|
__spreadValues({
|
|
2523
3542
|
"data-slot": "calendar",
|
|
2524
3543
|
ref: rootRef,
|
|
2525
|
-
className: (0,
|
|
3544
|
+
className: (0, import_cn28.cn)(className2)
|
|
2526
3545
|
}, props2)
|
|
2527
3546
|
);
|
|
2528
3547
|
},
|
|
2529
3548
|
Chevron: (_c) => {
|
|
2530
3549
|
var _d = _c, { className: className2, orientation } = _d, props2 = __objRest(_d, ["className", "orientation"]);
|
|
2531
3550
|
if (orientation === "left") {
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
3551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.ChevronLeftIcon, __spreadValues({ className: (0, import_cn28.cn)("size-4", className2) }, props2));
|
|
2533
3552
|
}
|
|
2534
3553
|
if (orientation === "right") {
|
|
2535
|
-
return /* @__PURE__ */ (0,
|
|
2536
|
-
|
|
3554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3555
|
+
import_lucide_react15.ChevronRightIcon,
|
|
2537
3556
|
__spreadValues({
|
|
2538
|
-
className: (0,
|
|
3557
|
+
className: (0, import_cn28.cn)("size-4", className2)
|
|
2539
3558
|
}, props2)
|
|
2540
3559
|
);
|
|
2541
3560
|
}
|
|
2542
|
-
return /* @__PURE__ */ (0,
|
|
3561
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.ChevronDownIcon, __spreadValues({ className: (0, import_cn28.cn)("size-4", className2) }, props2));
|
|
2543
3562
|
},
|
|
2544
3563
|
DayButton: (_e) => {
|
|
2545
3564
|
var props2 = __objRest(_e, []);
|
|
2546
|
-
return /* @__PURE__ */ (0,
|
|
3565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(CalendarDayButton, __spreadValues({ locale }, props2));
|
|
2547
3566
|
},
|
|
2548
3567
|
WeekNumber: (_f) => {
|
|
2549
3568
|
var _g = _f, { children } = _g, props2 = __objRest(_g, ["children"]);
|
|
2550
|
-
return /* @__PURE__ */ (0,
|
|
3569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
2551
3570
|
}
|
|
2552
3571
|
}, components)
|
|
2553
3572
|
}, props)
|
|
@@ -2571,7 +3590,7 @@ function CalendarDayButton(_a) {
|
|
|
2571
3590
|
var _a2;
|
|
2572
3591
|
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
2573
3592
|
}, [modifiers.focused]);
|
|
2574
|
-
return /* @__PURE__ */ (0,
|
|
3593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2575
3594
|
Button,
|
|
2576
3595
|
__spreadValues({
|
|
2577
3596
|
variant: "ghost",
|
|
@@ -2581,7 +3600,7 @@ function CalendarDayButton(_a) {
|
|
|
2581
3600
|
"data-range-start": modifiers.range_start,
|
|
2582
3601
|
"data-range-end": modifiers.range_end,
|
|
2583
3602
|
"data-range-middle": modifiers.range_middle,
|
|
2584
|
-
className: (0,
|
|
3603
|
+
className: (0, import_cn28.cn)(
|
|
2585
3604
|
"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",
|
|
2586
3605
|
defaultClassNames.day,
|
|
2587
3606
|
className
|
|
@@ -2592,15 +3611,15 @@ function CalendarDayButton(_a) {
|
|
|
2592
3611
|
|
|
2593
3612
|
// src/components/ui/popover.tsx
|
|
2594
3613
|
var import_popover = require("@base-ui/react/popover");
|
|
2595
|
-
var
|
|
2596
|
-
var
|
|
3614
|
+
var import_cn29 = require("cn");
|
|
3615
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2597
3616
|
function Popover(_a) {
|
|
2598
3617
|
var props = __objRest(_a, []);
|
|
2599
|
-
return /* @__PURE__ */ (0,
|
|
3618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
2600
3619
|
}
|
|
2601
3620
|
function PopoverTrigger(_a) {
|
|
2602
3621
|
var props = __objRest(_a, []);
|
|
2603
|
-
return /* @__PURE__ */ (0,
|
|
3622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
2604
3623
|
}
|
|
2605
3624
|
function PopoverContent(_a) {
|
|
2606
3625
|
var _b = _a, {
|
|
@@ -2616,7 +3635,7 @@ function PopoverContent(_a) {
|
|
|
2616
3635
|
"side",
|
|
2617
3636
|
"sideOffset"
|
|
2618
3637
|
]);
|
|
2619
|
-
return /* @__PURE__ */ (0,
|
|
3638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2620
3639
|
import_popover.Popover.Positioner,
|
|
2621
3640
|
{
|
|
2622
3641
|
align,
|
|
@@ -2624,11 +3643,11 @@ function PopoverContent(_a) {
|
|
|
2624
3643
|
side,
|
|
2625
3644
|
sideOffset,
|
|
2626
3645
|
className: "isolate z-50",
|
|
2627
|
-
children: /* @__PURE__ */ (0,
|
|
3646
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2628
3647
|
import_popover.Popover.Popup,
|
|
2629
3648
|
__spreadValues({
|
|
2630
3649
|
"data-slot": "popover-content",
|
|
2631
|
-
className: (0,
|
|
3650
|
+
className: (0, import_cn29.cn)(
|
|
2632
3651
|
"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",
|
|
2633
3652
|
className
|
|
2634
3653
|
)
|
|
@@ -2640,17 +3659,17 @@ function PopoverContent(_a) {
|
|
|
2640
3659
|
|
|
2641
3660
|
// src/components/ui/select.tsx
|
|
2642
3661
|
var import_select = require("@base-ui/react/select");
|
|
2643
|
-
var
|
|
2644
|
-
var
|
|
2645
|
-
var
|
|
3662
|
+
var import_cn30 = require("cn");
|
|
3663
|
+
var import_lucide_react16 = require("lucide-react");
|
|
3664
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2646
3665
|
var Select = import_select.Select.Root;
|
|
2647
3666
|
function SelectValue(_a) {
|
|
2648
3667
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2649
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2650
3669
|
import_select.Select.Value,
|
|
2651
3670
|
__spreadValues({
|
|
2652
3671
|
"data-slot": "select-value",
|
|
2653
|
-
className: (0,
|
|
3672
|
+
className: (0, import_cn30.cn)("flex flex-1 text-left", className)
|
|
2654
3673
|
}, props)
|
|
2655
3674
|
);
|
|
2656
3675
|
}
|
|
@@ -2664,22 +3683,22 @@ function SelectTrigger(_a) {
|
|
|
2664
3683
|
"size",
|
|
2665
3684
|
"children"
|
|
2666
3685
|
]);
|
|
2667
|
-
return /* @__PURE__ */ (0,
|
|
3686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2668
3687
|
import_select.Select.Trigger,
|
|
2669
3688
|
__spreadProps(__spreadValues({
|
|
2670
3689
|
"data-slot": "select-trigger",
|
|
2671
3690
|
"data-size": size,
|
|
2672
|
-
className: (0,
|
|
3691
|
+
className: (0, import_cn30.cn)(
|
|
2673
3692
|
"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",
|
|
2674
3693
|
className
|
|
2675
3694
|
)
|
|
2676
3695
|
}, props), {
|
|
2677
3696
|
children: [
|
|
2678
3697
|
children,
|
|
2679
|
-
/* @__PURE__ */ (0,
|
|
3698
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2680
3699
|
import_select.Select.Icon,
|
|
2681
3700
|
{
|
|
2682
|
-
render: /* @__PURE__ */ (0,
|
|
3701
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react16.ChevronDownIcon, { className: "pointer-events-none size-3.5 text-muted-foreground" })
|
|
2683
3702
|
}
|
|
2684
3703
|
)
|
|
2685
3704
|
]
|
|
@@ -2704,7 +3723,7 @@ function SelectContent(_a) {
|
|
|
2704
3723
|
"alignOffset",
|
|
2705
3724
|
"alignItemWithTrigger"
|
|
2706
3725
|
]);
|
|
2707
|
-
return /* @__PURE__ */ (0,
|
|
3726
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2708
3727
|
import_select.Select.Positioner,
|
|
2709
3728
|
{
|
|
2710
3729
|
side,
|
|
@@ -2713,20 +3732,20 @@ function SelectContent(_a) {
|
|
|
2713
3732
|
alignOffset,
|
|
2714
3733
|
alignItemWithTrigger,
|
|
2715
3734
|
className: "isolate z-50",
|
|
2716
|
-
children: /* @__PURE__ */ (0,
|
|
3735
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2717
3736
|
import_select.Select.Popup,
|
|
2718
3737
|
__spreadProps(__spreadValues({
|
|
2719
3738
|
"data-slot": "select-content",
|
|
2720
3739
|
"data-align-trigger": alignItemWithTrigger,
|
|
2721
|
-
className: (0,
|
|
3740
|
+
className: (0, import_cn30.cn)(
|
|
2722
3741
|
"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",
|
|
2723
3742
|
className
|
|
2724
3743
|
)
|
|
2725
3744
|
}, props), {
|
|
2726
3745
|
children: [
|
|
2727
|
-
/* @__PURE__ */ (0,
|
|
2728
|
-
/* @__PURE__ */ (0,
|
|
2729
|
-
/* @__PURE__ */ (0,
|
|
3746
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SelectScrollUpButton, {}),
|
|
3747
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_select.Select.List, { children }),
|
|
3748
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SelectScrollDownButton, {})
|
|
2730
3749
|
]
|
|
2731
3750
|
})
|
|
2732
3751
|
)
|
|
@@ -2741,22 +3760,22 @@ function SelectItem(_a) {
|
|
|
2741
3760
|
"className",
|
|
2742
3761
|
"children"
|
|
2743
3762
|
]);
|
|
2744
|
-
return /* @__PURE__ */ (0,
|
|
3763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2745
3764
|
import_select.Select.Item,
|
|
2746
3765
|
__spreadProps(__spreadValues({
|
|
2747
3766
|
"data-slot": "select-item",
|
|
2748
|
-
className: (0,
|
|
3767
|
+
className: (0, import_cn30.cn)(
|
|
2749
3768
|
"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",
|
|
2750
3769
|
className
|
|
2751
3770
|
)
|
|
2752
3771
|
}, props), {
|
|
2753
3772
|
children: [
|
|
2754
|
-
/* @__PURE__ */ (0,
|
|
2755
|
-
/* @__PURE__ */ (0,
|
|
3773
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_select.Select.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
3774
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2756
3775
|
import_select.Select.ItemIndicator,
|
|
2757
3776
|
{
|
|
2758
|
-
render: /* @__PURE__ */ (0,
|
|
2759
|
-
children: /* @__PURE__ */ (0,
|
|
3777
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center" }),
|
|
3778
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react16.CheckIcon, { className: "pointer-events-none" })
|
|
2760
3779
|
}
|
|
2761
3780
|
)
|
|
2762
3781
|
]
|
|
@@ -2769,16 +3788,16 @@ function SelectScrollUpButton(_a) {
|
|
|
2769
3788
|
} = _b, props = __objRest(_b, [
|
|
2770
3789
|
"className"
|
|
2771
3790
|
]);
|
|
2772
|
-
return /* @__PURE__ */ (0,
|
|
3791
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2773
3792
|
import_select.Select.ScrollUpArrow,
|
|
2774
3793
|
__spreadProps(__spreadValues({
|
|
2775
3794
|
"data-slot": "select-scroll-up-button",
|
|
2776
|
-
className: (0,
|
|
3795
|
+
className: (0, import_cn30.cn)(
|
|
2777
3796
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2778
3797
|
className
|
|
2779
3798
|
)
|
|
2780
3799
|
}, props), {
|
|
2781
|
-
children: /* @__PURE__ */ (0,
|
|
3800
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react16.ChevronUpIcon, {})
|
|
2782
3801
|
})
|
|
2783
3802
|
);
|
|
2784
3803
|
}
|
|
@@ -2788,22 +3807,22 @@ function SelectScrollDownButton(_a) {
|
|
|
2788
3807
|
} = _b, props = __objRest(_b, [
|
|
2789
3808
|
"className"
|
|
2790
3809
|
]);
|
|
2791
|
-
return /* @__PURE__ */ (0,
|
|
3810
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2792
3811
|
import_select.Select.ScrollDownArrow,
|
|
2793
3812
|
__spreadProps(__spreadValues({
|
|
2794
3813
|
"data-slot": "select-scroll-down-button",
|
|
2795
|
-
className: (0,
|
|
3814
|
+
className: (0, import_cn30.cn)(
|
|
2796
3815
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2797
3816
|
className
|
|
2798
3817
|
)
|
|
2799
3818
|
}, props), {
|
|
2800
|
-
children: /* @__PURE__ */ (0,
|
|
3819
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react16.ChevronDownIcon, {})
|
|
2801
3820
|
})
|
|
2802
3821
|
);
|
|
2803
3822
|
}
|
|
2804
3823
|
|
|
2805
3824
|
// src/components/composed/data-table/table-header-filter.tsx
|
|
2806
|
-
var
|
|
3825
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2807
3826
|
function smartFilterFn(row, columnId, filterValue) {
|
|
2808
3827
|
var _a, _b, _c;
|
|
2809
3828
|
if (filterValue === void 0 || filterValue === null || filterValue === "" || filterValue === "all") {
|
|
@@ -2944,13 +3963,13 @@ function ColumnFilterInput({
|
|
|
2944
3963
|
table,
|
|
2945
3964
|
headerText
|
|
2946
3965
|
}) {
|
|
2947
|
-
const [calendarOpen, setCalendarOpen] = (0,
|
|
3966
|
+
const [calendarOpen, setCalendarOpen] = (0, import_react18.useState)(false);
|
|
2948
3967
|
const filterValue = column.getFilterValue();
|
|
2949
|
-
const variant = (0,
|
|
3968
|
+
const variant = (0, import_react18.useMemo)(
|
|
2950
3969
|
() => getFilterVariant(column, table),
|
|
2951
3970
|
[column, table]
|
|
2952
3971
|
);
|
|
2953
|
-
const options = (0,
|
|
3972
|
+
const options = (0, import_react18.useMemo)(() => {
|
|
2954
3973
|
if (variant === "boolean") {
|
|
2955
3974
|
return [
|
|
2956
3975
|
{ label: "True / Yes", value: "true" },
|
|
@@ -2964,7 +3983,7 @@ function ColumnFilterInput({
|
|
|
2964
3983
|
}, [column, table, variant]);
|
|
2965
3984
|
if (variant === "boolean" || variant === "select") {
|
|
2966
3985
|
const currentValue = filterValue === void 0 || filterValue === null || filterValue === "" ? "all" : String(filterValue);
|
|
2967
|
-
return /* @__PURE__ */ (0,
|
|
3986
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
2968
3987
|
Select,
|
|
2969
3988
|
{
|
|
2970
3989
|
value: currentValue,
|
|
@@ -2976,13 +3995,13 @@ function ColumnFilterInput({
|
|
|
2976
3995
|
}
|
|
2977
3996
|
},
|
|
2978
3997
|
children: [
|
|
2979
|
-
/* @__PURE__ */ (0,
|
|
3998
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2980
3999
|
SelectTrigger,
|
|
2981
4000
|
{
|
|
2982
4001
|
className: "w-full",
|
|
2983
4002
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2984
4003
|
onPointerDown: (e) => e.stopPropagation(),
|
|
2985
|
-
children: /* @__PURE__ */ (0,
|
|
4004
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2986
4005
|
SelectValue,
|
|
2987
4006
|
{
|
|
2988
4007
|
placeholder: `Select ${headerText.toLowerCase()}...`,
|
|
@@ -2991,9 +4010,9 @@ function ColumnFilterInput({
|
|
|
2991
4010
|
)
|
|
2992
4011
|
}
|
|
2993
4012
|
),
|
|
2994
|
-
/* @__PURE__ */ (0,
|
|
2995
|
-
/* @__PURE__ */ (0,
|
|
2996
|
-
options.map((opt) => /* @__PURE__ */ (0,
|
|
4013
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(SelectContent, { align: "start", children: [
|
|
4014
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SelectItem, { value: "all", children: "All" }),
|
|
4015
|
+
options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2997
4016
|
SelectItem,
|
|
2998
4017
|
{
|
|
2999
4018
|
value: opt.value,
|
|
@@ -3020,36 +4039,36 @@ function ColumnFilterInput({
|
|
|
3020
4039
|
}
|
|
3021
4040
|
}
|
|
3022
4041
|
const formattedDateLabel = dateObj ? (0, import_date_fns.format)(dateObj, "yyyy-MM-dd") : "";
|
|
3023
|
-
return /* @__PURE__ */ (0,
|
|
3024
|
-
/* @__PURE__ */ (0,
|
|
4042
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Popover, { open: calendarOpen, onOpenChange: setCalendarOpen, children: [
|
|
4043
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3025
4044
|
PopoverTrigger,
|
|
3026
4045
|
{
|
|
3027
|
-
render: /* @__PURE__ */ (0,
|
|
4046
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
3028
4047
|
Button,
|
|
3029
4048
|
{
|
|
3030
4049
|
variant: "outline",
|
|
3031
|
-
className: (0,
|
|
4050
|
+
className: (0, import_cn26.cn)(
|
|
3032
4051
|
"w-full justify-start",
|
|
3033
4052
|
!formattedDateLabel && "text-muted-foreground"
|
|
3034
4053
|
),
|
|
3035
4054
|
onKeyDown: (e) => e.stopPropagation(),
|
|
3036
4055
|
onPointerDown: (e) => e.stopPropagation(),
|
|
3037
4056
|
children: [
|
|
3038
|
-
/* @__PURE__ */ (0,
|
|
3039
|
-
/* @__PURE__ */ (0,
|
|
4057
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.CalendarIcon, { className: "mr-1 size-3 shrink-0" }),
|
|
4058
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "truncate", children: formattedDateLabel || `Pick ${headerText.toLowerCase()}...` })
|
|
3040
4059
|
]
|
|
3041
4060
|
}
|
|
3042
4061
|
)
|
|
3043
4062
|
}
|
|
3044
4063
|
),
|
|
3045
|
-
/* @__PURE__ */ (0,
|
|
4064
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3046
4065
|
PopoverContent,
|
|
3047
4066
|
{
|
|
3048
4067
|
className: "w-auto p-0",
|
|
3049
4068
|
align: "start",
|
|
3050
4069
|
onPointerDown: (e) => e.stopPropagation(),
|
|
3051
4070
|
onKeyDown: (e) => e.stopPropagation(),
|
|
3052
|
-
children: /* @__PURE__ */ (0,
|
|
4071
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3053
4072
|
Calendar,
|
|
3054
4073
|
{
|
|
3055
4074
|
mode: "single",
|
|
@@ -3068,7 +4087,7 @@ function ColumnFilterInput({
|
|
|
3068
4087
|
)
|
|
3069
4088
|
] }) });
|
|
3070
4089
|
}
|
|
3071
|
-
return /* @__PURE__ */ (0,
|
|
4090
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3072
4091
|
Input,
|
|
3073
4092
|
{
|
|
3074
4093
|
id: `filter-${column.id}`,
|
|
@@ -3085,46 +4104,46 @@ function DataTableHeaderFilter({
|
|
|
3085
4104
|
table,
|
|
3086
4105
|
columnFilters
|
|
3087
4106
|
}) {
|
|
3088
|
-
const filterableColumns = (0,
|
|
4107
|
+
const filterableColumns = (0, import_react18.useMemo)(
|
|
3089
4108
|
() => table.getAllColumns().filter(
|
|
3090
4109
|
(column) => typeof column.accessorFn !== "undefined" && column.getCanFilter()
|
|
3091
4110
|
),
|
|
3092
4111
|
[table]
|
|
3093
4112
|
);
|
|
3094
4113
|
if (filterableColumns.length === 0) return null;
|
|
3095
|
-
return /* @__PURE__ */ (0,
|
|
3096
|
-
/* @__PURE__ */ (0,
|
|
3097
|
-
/* @__PURE__ */ (0,
|
|
4114
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(DropdownMenu, { children: [
|
|
4115
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Tooltip, { children: [
|
|
4116
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3098
4117
|
DropdownMenuTrigger,
|
|
3099
4118
|
{
|
|
3100
|
-
render: /* @__PURE__ */ (0,
|
|
4119
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3101
4120
|
TooltipTrigger,
|
|
3102
4121
|
{
|
|
3103
|
-
render: /* @__PURE__ */ (0,
|
|
4122
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3104
4123
|
Button,
|
|
3105
4124
|
{
|
|
3106
4125
|
variant: columnFilters.length > 0 ? "secondary" : "outline",
|
|
3107
4126
|
size: "icon",
|
|
3108
|
-
children: /* @__PURE__ */ (0,
|
|
4127
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.ListFilterIcon, {})
|
|
3109
4128
|
}
|
|
3110
4129
|
)
|
|
3111
4130
|
}
|
|
3112
4131
|
)
|
|
3113
4132
|
}
|
|
3114
4133
|
),
|
|
3115
|
-
/* @__PURE__ */ (0,
|
|
4134
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TooltipContent, { children: "Filter options" })
|
|
3116
4135
|
] }),
|
|
3117
|
-
/* @__PURE__ */ (0,
|
|
3118
|
-
/* @__PURE__ */ (0,
|
|
3119
|
-
/* @__PURE__ */ (0,
|
|
3120
|
-
/* @__PURE__ */ (0,
|
|
4136
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuContent, { align: "end", className: "w-80", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(DropdownMenuGroup, { children: [
|
|
4137
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuLabel, { children: "Filter by column" }),
|
|
4138
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuSeparator, {}),
|
|
4139
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "max-h-64 overflow-y-auto space-y-2.5 p-1", children: filterableColumns.map((column) => {
|
|
3121
4140
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3122
|
-
return /* @__PURE__ */ (0,
|
|
4141
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
3123
4142
|
"div",
|
|
3124
4143
|
{
|
|
3125
4144
|
className: "flex items-center justify-between px-1",
|
|
3126
4145
|
children: [
|
|
3127
|
-
/* @__PURE__ */ (0,
|
|
4146
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3128
4147
|
"label",
|
|
3129
4148
|
{
|
|
3130
4149
|
htmlFor: `filter-${column.id}`,
|
|
@@ -3132,7 +4151,7 @@ function DataTableHeaderFilter({
|
|
|
3132
4151
|
children: headerText
|
|
3133
4152
|
}
|
|
3134
4153
|
),
|
|
3135
|
-
/* @__PURE__ */ (0,
|
|
4154
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3136
4155
|
ColumnFilterInput,
|
|
3137
4156
|
{
|
|
3138
4157
|
column,
|
|
@@ -3145,9 +4164,9 @@ function DataTableHeaderFilter({
|
|
|
3145
4164
|
column.id
|
|
3146
4165
|
);
|
|
3147
4166
|
}) }),
|
|
3148
|
-
columnFilters.length > 0 && /* @__PURE__ */ (0,
|
|
3149
|
-
/* @__PURE__ */ (0,
|
|
3150
|
-
/* @__PURE__ */ (0,
|
|
4167
|
+
columnFilters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
|
|
4168
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(DropdownMenuSeparator, {}),
|
|
4169
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3151
4170
|
DropdownMenuItem,
|
|
3152
4171
|
{
|
|
3153
4172
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -3161,13 +4180,13 @@ function DataTableHeaderFilter({
|
|
|
3161
4180
|
}
|
|
3162
4181
|
|
|
3163
4182
|
// src/components/composed/data-table/table-header-refresh.tsx
|
|
3164
|
-
var
|
|
4183
|
+
var import_lucide_react18 = require("lucide-react");
|
|
3165
4184
|
var import_navigation2 = require("next/navigation");
|
|
3166
|
-
var
|
|
3167
|
-
var
|
|
4185
|
+
var import_react19 = require("react");
|
|
4186
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3168
4187
|
function DataTableHeaderRefresh() {
|
|
3169
4188
|
const router = (0, import_navigation2.useRouter)();
|
|
3170
|
-
const [isRefreshing, setIsRefreshing] = (0,
|
|
4189
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react19.useState)(false);
|
|
3171
4190
|
const handleRefresh = () => {
|
|
3172
4191
|
setIsRefreshing(true);
|
|
3173
4192
|
router.refresh();
|
|
@@ -3175,21 +4194,21 @@ function DataTableHeaderRefresh() {
|
|
|
3175
4194
|
setIsRefreshing(false);
|
|
3176
4195
|
}, 750);
|
|
3177
4196
|
};
|
|
3178
|
-
return /* @__PURE__ */ (0,
|
|
3179
|
-
/* @__PURE__ */ (0,
|
|
4197
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Tooltip, { children: [
|
|
4198
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3180
4199
|
TooltipTrigger,
|
|
3181
4200
|
{
|
|
3182
|
-
render: /* @__PURE__ */ (0,
|
|
4201
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3183
4202
|
Button,
|
|
3184
4203
|
{
|
|
3185
4204
|
variant: "outline",
|
|
3186
4205
|
size: "icon",
|
|
3187
4206
|
onClick: handleRefresh,
|
|
3188
4207
|
disabled: isRefreshing,
|
|
3189
|
-
children: /* @__PURE__ */ (0,
|
|
3190
|
-
|
|
4208
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
4209
|
+
import_lucide_react18.RotateCwIcon,
|
|
3191
4210
|
{
|
|
3192
|
-
className: (0,
|
|
4211
|
+
className: (0, import_cn26.cn)(
|
|
3193
4212
|
"transition-transform duration-750",
|
|
3194
4213
|
isRefreshing && "animate-spin"
|
|
3195
4214
|
)
|
|
@@ -3199,19 +4218,19 @@ function DataTableHeaderRefresh() {
|
|
|
3199
4218
|
)
|
|
3200
4219
|
}
|
|
3201
4220
|
),
|
|
3202
|
-
/* @__PURE__ */ (0,
|
|
4221
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipContent, { children: "Refresh data" })
|
|
3203
4222
|
] });
|
|
3204
4223
|
}
|
|
3205
4224
|
|
|
3206
4225
|
// src/components/composed/data-table/table-header-search.tsx
|
|
3207
|
-
var
|
|
3208
|
-
var
|
|
4226
|
+
var import_lucide_react19 = require("lucide-react");
|
|
4227
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3209
4228
|
function DataTableHeaderSearch({
|
|
3210
4229
|
value = "",
|
|
3211
4230
|
onChange
|
|
3212
4231
|
}) {
|
|
3213
|
-
return /* @__PURE__ */ (0,
|
|
3214
|
-
/* @__PURE__ */ (0,
|
|
4232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "relative flex items-center max-w-sm w-full", children: [
|
|
4233
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3215
4234
|
Input,
|
|
3216
4235
|
{
|
|
3217
4236
|
placeholder: "Search...",
|
|
@@ -3220,56 +4239,56 @@ function DataTableHeaderSearch({
|
|
|
3220
4239
|
className: "pr-7"
|
|
3221
4240
|
}
|
|
3222
4241
|
),
|
|
3223
|
-
Boolean(value) && /* @__PURE__ */ (0,
|
|
4242
|
+
Boolean(value) && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3224
4243
|
"button",
|
|
3225
4244
|
{
|
|
3226
4245
|
type: "button",
|
|
3227
4246
|
onClick: () => onChange(""),
|
|
3228
4247
|
className: "absolute right-2 text-muted-foreground hover:text-foreground p-0.5 rounded cursor-pointer",
|
|
3229
4248
|
"aria-label": "Clear search text",
|
|
3230
|
-
children: /* @__PURE__ */ (0,
|
|
4249
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react19.XIcon, { className: "size-3.5" })
|
|
3231
4250
|
}
|
|
3232
4251
|
)
|
|
3233
4252
|
] });
|
|
3234
4253
|
}
|
|
3235
4254
|
|
|
3236
4255
|
// src/components/composed/data-table/table-header-sort.tsx
|
|
3237
|
-
var
|
|
3238
|
-
var
|
|
4256
|
+
var import_lucide_react20 = require("lucide-react");
|
|
4257
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
3239
4258
|
function DataTableHeaderSort({
|
|
3240
4259
|
table,
|
|
3241
4260
|
sorting
|
|
3242
4261
|
}) {
|
|
3243
4262
|
const sortableColumns = table.getAllColumns().filter((column) => column.getCanSort());
|
|
3244
|
-
return /* @__PURE__ */ (0,
|
|
3245
|
-
/* @__PURE__ */ (0,
|
|
3246
|
-
/* @__PURE__ */ (0,
|
|
4263
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(DropdownMenu, { children: [
|
|
4264
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Tooltip, { children: [
|
|
4265
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3247
4266
|
DropdownMenuTrigger,
|
|
3248
4267
|
{
|
|
3249
|
-
render: /* @__PURE__ */ (0,
|
|
4268
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3250
4269
|
TooltipTrigger,
|
|
3251
4270
|
{
|
|
3252
|
-
render: /* @__PURE__ */ (0,
|
|
4271
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3253
4272
|
Button,
|
|
3254
4273
|
{
|
|
3255
4274
|
variant: sorting.length > 0 ? "secondary" : "outline",
|
|
3256
4275
|
size: "icon",
|
|
3257
|
-
children: /* @__PURE__ */ (0,
|
|
4276
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react20.ArrowUpDownIcon, {})
|
|
3258
4277
|
}
|
|
3259
4278
|
)
|
|
3260
4279
|
}
|
|
3261
4280
|
)
|
|
3262
4281
|
}
|
|
3263
4282
|
),
|
|
3264
|
-
/* @__PURE__ */ (0,
|
|
4283
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TooltipContent, { children: "Sort options" })
|
|
3265
4284
|
] }),
|
|
3266
|
-
/* @__PURE__ */ (0,
|
|
3267
|
-
/* @__PURE__ */ (0,
|
|
3268
|
-
/* @__PURE__ */ (0,
|
|
4285
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(DropdownMenuGroup, { children: [
|
|
4286
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(DropdownMenuLabel, { children: "Sort by column" }),
|
|
4287
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(DropdownMenuSeparator, {}),
|
|
3269
4288
|
sortableColumns.map((column) => {
|
|
3270
4289
|
const isSorted = column.getIsSorted();
|
|
3271
4290
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3272
|
-
return /* @__PURE__ */ (0,
|
|
4291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
3273
4292
|
DropdownMenuItem,
|
|
3274
4293
|
{
|
|
3275
4294
|
className: "flex items-center justify-between hover:cursor-pointer capitalize",
|
|
@@ -3284,16 +4303,16 @@ function DataTableHeaderSort({
|
|
|
3284
4303
|
},
|
|
3285
4304
|
children: [
|
|
3286
4305
|
headerText,
|
|
3287
|
-
isSorted === "asc" && /* @__PURE__ */ (0,
|
|
3288
|
-
isSorted === "desc" && /* @__PURE__ */ (0,
|
|
4306
|
+
isSorted === "asc" && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react20.ArrowUpIcon, { className: "size-3.5" }),
|
|
4307
|
+
isSorted === "desc" && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react20.ArrowDownIcon, { className: "size-3.5" })
|
|
3289
4308
|
]
|
|
3290
4309
|
},
|
|
3291
4310
|
column.id
|
|
3292
4311
|
);
|
|
3293
4312
|
}),
|
|
3294
|
-
sorting.length > 0 && /* @__PURE__ */ (0,
|
|
3295
|
-
/* @__PURE__ */ (0,
|
|
3296
|
-
/* @__PURE__ */ (0,
|
|
4313
|
+
sorting.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
|
|
4314
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(DropdownMenuSeparator, {}),
|
|
4315
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3297
4316
|
DropdownMenuItem,
|
|
3298
4317
|
{
|
|
3299
4318
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -3307,34 +4326,34 @@ function DataTableHeaderSort({
|
|
|
3307
4326
|
}
|
|
3308
4327
|
|
|
3309
4328
|
// src/components/composed/data-table/table-header-toggle.tsx
|
|
3310
|
-
var
|
|
3311
|
-
var
|
|
4329
|
+
var import_lucide_react21 = require("lucide-react");
|
|
4330
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3312
4331
|
function DataTableHeaderToggle({
|
|
3313
4332
|
table
|
|
3314
4333
|
}) {
|
|
3315
|
-
return /* @__PURE__ */ (0,
|
|
3316
|
-
/* @__PURE__ */ (0,
|
|
3317
|
-
/* @__PURE__ */ (0,
|
|
4334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(DropdownMenu, { children: [
|
|
4335
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Tooltip, { children: [
|
|
4336
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3318
4337
|
DropdownMenuTrigger,
|
|
3319
4338
|
{
|
|
3320
|
-
render: /* @__PURE__ */ (0,
|
|
4339
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3321
4340
|
TooltipTrigger,
|
|
3322
4341
|
{
|
|
3323
|
-
render: /* @__PURE__ */ (0,
|
|
4342
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react21.Columns3CogIcon, {}) })
|
|
3324
4343
|
}
|
|
3325
4344
|
)
|
|
3326
4345
|
}
|
|
3327
4346
|
),
|
|
3328
|
-
/* @__PURE__ */ (0,
|
|
4347
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(TooltipContent, { children: "Toggle columns" })
|
|
3329
4348
|
] }),
|
|
3330
|
-
/* @__PURE__ */ (0,
|
|
3331
|
-
/* @__PURE__ */ (0,
|
|
3332
|
-
/* @__PURE__ */ (0,
|
|
4349
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(DropdownMenuGroup, { children: [
|
|
4350
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DropdownMenuLabel, { children: "Toggle columns" }),
|
|
4351
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(DropdownMenuSeparator, {}),
|
|
3333
4352
|
table.getAllColumns().filter(
|
|
3334
4353
|
(column) => typeof column.accessorFn !== "undefined" && column.getCanHide()
|
|
3335
4354
|
).map((column) => {
|
|
3336
4355
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3337
|
-
return /* @__PURE__ */ (0,
|
|
4356
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3338
4357
|
DropdownMenuCheckboxItem,
|
|
3339
4358
|
{
|
|
3340
4359
|
className: "capitalize hover:cursor-pointer",
|
|
@@ -3350,9 +4369,9 @@ function DataTableHeaderToggle({
|
|
|
3350
4369
|
}
|
|
3351
4370
|
|
|
3352
4371
|
// src/components/composed/data-table/data-row-actions.tsx
|
|
3353
|
-
var
|
|
3354
|
-
var
|
|
3355
|
-
var
|
|
4372
|
+
var import_lucide_react22 = require("lucide-react");
|
|
4373
|
+
var import_react20 = require("react");
|
|
4374
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3356
4375
|
function RowActions({
|
|
3357
4376
|
label = "Actions",
|
|
3358
4377
|
items = [],
|
|
@@ -3366,50 +4385,50 @@ function RowActions({
|
|
|
3366
4385
|
if (visibleItems.length === 0) {
|
|
3367
4386
|
return null;
|
|
3368
4387
|
}
|
|
3369
|
-
return /* @__PURE__ */ (0,
|
|
4388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3370
4389
|
"div",
|
|
3371
4390
|
{
|
|
3372
|
-
className: (0,
|
|
3373
|
-
children: /* @__PURE__ */ (0,
|
|
3374
|
-
/* @__PURE__ */ (0,
|
|
4391
|
+
className: (0, import_cn26.cn)("flex items-center justify-end w-full", containerClassName),
|
|
4392
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(DropdownMenu, { children: [
|
|
4393
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3375
4394
|
DropdownMenuTrigger,
|
|
3376
4395
|
{
|
|
3377
|
-
render: /* @__PURE__ */ (0,
|
|
4396
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Button, { variant: "ghost", size: "icon-xs", "aria-label": triggerLabel, children: triggerIcon != null ? triggerIcon : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react22.MoreHorizontal, { className: "size-4" }) })
|
|
3378
4397
|
}
|
|
3379
4398
|
),
|
|
3380
|
-
/* @__PURE__ */ (0,
|
|
4399
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3381
4400
|
DropdownMenuContent,
|
|
3382
4401
|
{
|
|
3383
4402
|
align,
|
|
3384
|
-
className: (0,
|
|
3385
|
-
children: /* @__PURE__ */ (0,
|
|
3386
|
-
label && /* @__PURE__ */ (0,
|
|
3387
|
-
/* @__PURE__ */ (0,
|
|
3388
|
-
/* @__PURE__ */ (0,
|
|
4403
|
+
className: (0, import_cn26.cn)("w-40", contentClassName),
|
|
4404
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(DropdownMenuGroup, { children: [
|
|
4405
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
|
|
4406
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DropdownMenuLabel, { children: label }),
|
|
4407
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DropdownMenuSeparator, {})
|
|
3389
4408
|
] }),
|
|
3390
4409
|
visibleItems.map((item, index) => {
|
|
3391
4410
|
var _a;
|
|
3392
4411
|
const itemKey = (_a = item.id) != null ? _a : `${item.label}-${index}`;
|
|
3393
4412
|
const isDestructive = item.variant === "destructive";
|
|
3394
|
-
return /* @__PURE__ */ (0,
|
|
3395
|
-
item.separatorBefore && /* @__PURE__ */ (0,
|
|
3396
|
-
/* @__PURE__ */ (0,
|
|
4413
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_react20.Fragment, { children: [
|
|
4414
|
+
item.separatorBefore && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DropdownMenuSeparator, {}),
|
|
4415
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
3397
4416
|
DropdownMenuItem,
|
|
3398
4417
|
{
|
|
3399
4418
|
onClick: item.onClick,
|
|
3400
4419
|
disabled: item.disabled,
|
|
3401
|
-
className: (0,
|
|
4420
|
+
className: (0, import_cn26.cn)(
|
|
3402
4421
|
"hover:cursor-pointer flex items-center gap-2",
|
|
3403
4422
|
isDestructive && "text-destructive focus:text-destructive",
|
|
3404
4423
|
item.className
|
|
3405
4424
|
),
|
|
3406
4425
|
children: [
|
|
3407
|
-
item.icon && /* @__PURE__ */ (0,
|
|
3408
|
-
/* @__PURE__ */ (0,
|
|
4426
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "size-4 shrink-0 flex items-center justify-center", children: item.icon }),
|
|
4427
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: item.label })
|
|
3409
4428
|
]
|
|
3410
4429
|
}
|
|
3411
4430
|
),
|
|
3412
|
-
item.separatorAfter && /* @__PURE__ */ (0,
|
|
4431
|
+
item.separatorAfter && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DropdownMenuSeparator, {})
|
|
3413
4432
|
] }, itemKey);
|
|
3414
4433
|
})
|
|
3415
4434
|
] })
|
|
@@ -3421,7 +4440,7 @@ function RowActions({
|
|
|
3421
4440
|
}
|
|
3422
4441
|
|
|
3423
4442
|
// src/components/composed/data-table/data-table.tsx
|
|
3424
|
-
var
|
|
4443
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
3425
4444
|
function DataTable({
|
|
3426
4445
|
columns,
|
|
3427
4446
|
data,
|
|
@@ -3439,12 +4458,12 @@ function DataTable({
|
|
|
3439
4458
|
showAddButton = true
|
|
3440
4459
|
}) {
|
|
3441
4460
|
const router = (0, import_navigation3.useRouter)();
|
|
3442
|
-
const [createOpen, setCreateOpen] = (0,
|
|
3443
|
-
const [sorting, setSorting] = (0,
|
|
3444
|
-
const [columnFilters, setColumnFilters] = (0,
|
|
3445
|
-
const [columnVisibility, setColumnVisibility] = (0,
|
|
3446
|
-
const [globalFilter, setGlobalFilter] = (0,
|
|
3447
|
-
const columnsWithSmartFilters = (0,
|
|
4461
|
+
const [createOpen, setCreateOpen] = (0, import_react21.useState)(false);
|
|
4462
|
+
const [sorting, setSorting] = (0, import_react21.useState)([]);
|
|
4463
|
+
const [columnFilters, setColumnFilters] = (0, import_react21.useState)([]);
|
|
4464
|
+
const [columnVisibility, setColumnVisibility] = (0, import_react21.useState)(initialColumnVisibility != null ? initialColumnVisibility : {});
|
|
4465
|
+
const [globalFilter, setGlobalFilter] = (0, import_react21.useState)("");
|
|
4466
|
+
const columnsWithSmartFilters = (0, import_react21.useMemo)(() => {
|
|
3448
4467
|
return columns.map((col) => __spreadValues({
|
|
3449
4468
|
filterFn: smartFilterFn
|
|
3450
4469
|
}, col));
|
|
@@ -3474,12 +4493,12 @@ function DataTable({
|
|
|
3474
4493
|
});
|
|
3475
4494
|
if (data.length === 0) {
|
|
3476
4495
|
const hasCreateAction = Boolean(renderCreateDialog);
|
|
3477
|
-
return /* @__PURE__ */ (0,
|
|
3478
|
-
/* @__PURE__ */ (0,
|
|
4496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "space-y-2", children: [
|
|
4497
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3479
4498
|
StateEmpty,
|
|
3480
4499
|
{
|
|
3481
4500
|
state: "outline",
|
|
3482
|
-
icon: /* @__PURE__ */ (0,
|
|
4501
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react23.FolderOpenIcon, { className: "size-6 text-muted-foreground" }),
|
|
3483
4502
|
title: "No Data Available",
|
|
3484
4503
|
description: "There are currently no records to display. Create a new record to get started.",
|
|
3485
4504
|
buttonText: hasCreateAction ? addLabel != null ? addLabel : "Add Record" : "Refresh",
|
|
@@ -3489,26 +4508,26 @@ function DataTable({
|
|
|
3489
4508
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen)
|
|
3490
4509
|
] });
|
|
3491
4510
|
}
|
|
3492
|
-
return /* @__PURE__ */ (0,
|
|
3493
|
-
/* @__PURE__ */ (0,
|
|
3494
|
-
showSearchInput ? /* @__PURE__ */ (0,
|
|
4511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "space-y-2", children: [
|
|
4512
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-row items-center justify-between gap-1", children: [
|
|
4513
|
+
showSearchInput ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3495
4514
|
DataTableHeaderSearch,
|
|
3496
4515
|
{
|
|
3497
4516
|
value: globalFilter,
|
|
3498
4517
|
onChange: setGlobalFilter
|
|
3499
4518
|
}
|
|
3500
|
-
) : /* @__PURE__ */ (0,
|
|
3501
|
-
/* @__PURE__ */ (0,
|
|
3502
|
-
showRefreshButton && /* @__PURE__ */ (0,
|
|
3503
|
-
showSortButton && /* @__PURE__ */ (0,
|
|
3504
|
-
showFilterButton && /* @__PURE__ */ (0,
|
|
4519
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", {}),
|
|
4520
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex flex-row items-center gap-1", children: [
|
|
4521
|
+
showRefreshButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableHeaderRefresh, {}),
|
|
4522
|
+
showSortButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableHeaderSort, { table, sorting }),
|
|
4523
|
+
showFilterButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3505
4524
|
DataTableHeaderFilter,
|
|
3506
4525
|
{
|
|
3507
4526
|
table,
|
|
3508
4527
|
columnFilters
|
|
3509
4528
|
}
|
|
3510
4529
|
),
|
|
3511
|
-
showDownloadButton && /* @__PURE__ */ (0,
|
|
4530
|
+
showDownloadButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3512
4531
|
DataTableHeaderDownload,
|
|
3513
4532
|
{
|
|
3514
4533
|
table,
|
|
@@ -3516,8 +4535,8 @@ function DataTable({
|
|
|
3516
4535
|
onDownload
|
|
3517
4536
|
}
|
|
3518
4537
|
),
|
|
3519
|
-
showColumnToggleButton && /* @__PURE__ */ (0,
|
|
3520
|
-
showAddButton && renderCreateDialog && /* @__PURE__ */ (0,
|
|
4538
|
+
showColumnToggleButton && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableHeaderToggle, { table }),
|
|
4539
|
+
showAddButton && renderCreateDialog && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3521
4540
|
DataTableHeaderAdd,
|
|
3522
4541
|
{
|
|
3523
4542
|
onAdd: () => setCreateOpen(true),
|
|
@@ -3527,13 +4546,13 @@ function DataTable({
|
|
|
3527
4546
|
] })
|
|
3528
4547
|
] }),
|
|
3529
4548
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen),
|
|
3530
|
-
/* @__PURE__ */ (0,
|
|
3531
|
-
/* @__PURE__ */ (0,
|
|
3532
|
-
/* @__PURE__ */ (0,
|
|
4549
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "overflow-hidden rounded-md border [&_[data-slot=table-container]]:no-scrollbar", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Table, { children: [
|
|
4550
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableContentHeader, { table }),
|
|
4551
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableContentBody, { table, columns })
|
|
3533
4552
|
] }) }),
|
|
3534
|
-
/* @__PURE__ */ (0,
|
|
3535
|
-
/* @__PURE__ */ (0,
|
|
3536
|
-
/* @__PURE__ */ (0,
|
|
4553
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center justify-between px-2", children: [
|
|
4554
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableFooterEntries, { table }),
|
|
4555
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(DataTableFooterPagination, { table })
|
|
3537
4556
|
] })
|
|
3538
4557
|
] });
|
|
3539
4558
|
}
|
|
@@ -3541,13 +4560,13 @@ function DataTable({
|
|
|
3541
4560
|
// src/components/composed/header-tabs.tsx
|
|
3542
4561
|
var import_link2 = __toESM(require("next/link"));
|
|
3543
4562
|
var import_navigation4 = require("next/navigation");
|
|
3544
|
-
var
|
|
4563
|
+
var import_react22 = require("react");
|
|
3545
4564
|
|
|
3546
4565
|
// src/components/ui/tabs.tsx
|
|
3547
4566
|
var import_tabs = require("@base-ui/react/tabs");
|
|
3548
4567
|
var import_class_variance_authority5 = require("class-variance-authority");
|
|
3549
|
-
var
|
|
3550
|
-
var
|
|
4568
|
+
var import_cn31 = require("cn");
|
|
4569
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
3551
4570
|
function Tabs(_a) {
|
|
3552
4571
|
var _b = _a, {
|
|
3553
4572
|
className,
|
|
@@ -3556,12 +4575,12 @@ function Tabs(_a) {
|
|
|
3556
4575
|
"className",
|
|
3557
4576
|
"orientation"
|
|
3558
4577
|
]);
|
|
3559
|
-
return /* @__PURE__ */ (0,
|
|
4578
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
3560
4579
|
import_tabs.Tabs.Root,
|
|
3561
4580
|
__spreadValues({
|
|
3562
4581
|
"data-slot": "tabs",
|
|
3563
4582
|
"data-orientation": orientation,
|
|
3564
|
-
className: (0,
|
|
4583
|
+
className: (0, import_cn31.cn)(
|
|
3565
4584
|
"group/tabs flex gap-2 data-horizontal:flex-col",
|
|
3566
4585
|
className
|
|
3567
4586
|
)
|
|
@@ -3590,22 +4609,22 @@ function TabsList(_a) {
|
|
|
3590
4609
|
"className",
|
|
3591
4610
|
"variant"
|
|
3592
4611
|
]);
|
|
3593
|
-
return /* @__PURE__ */ (0,
|
|
4612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
3594
4613
|
import_tabs.Tabs.List,
|
|
3595
4614
|
__spreadValues({
|
|
3596
4615
|
"data-slot": "tabs-list",
|
|
3597
4616
|
"data-variant": variant,
|
|
3598
|
-
className: (0,
|
|
4617
|
+
className: (0, import_cn31.cn)(tabsListVariants({ variant }), className)
|
|
3599
4618
|
}, props)
|
|
3600
4619
|
);
|
|
3601
4620
|
}
|
|
3602
4621
|
function TabsTrigger(_a) {
|
|
3603
4622
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3604
|
-
return /* @__PURE__ */ (0,
|
|
4623
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
3605
4624
|
import_tabs.Tabs.Tab,
|
|
3606
4625
|
__spreadValues({
|
|
3607
4626
|
"data-slot": "tabs-trigger",
|
|
3608
|
-
className: (0,
|
|
4627
|
+
className: (0, import_cn31.cn)(
|
|
3609
4628
|
"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",
|
|
3610
4629
|
"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",
|
|
3611
4630
|
"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
|
|
@@ -3617,16 +4636,16 @@ function TabsTrigger(_a) {
|
|
|
3617
4636
|
}
|
|
3618
4637
|
|
|
3619
4638
|
// src/components/composed/header-tabs.tsx
|
|
3620
|
-
var
|
|
4639
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
3621
4640
|
function renderTabIcon(icon) {
|
|
3622
4641
|
if (!icon) return null;
|
|
3623
4642
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
3624
4643
|
const IconComp = icon;
|
|
3625
|
-
return /* @__PURE__ */ (0,
|
|
4644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(IconComp, {});
|
|
3626
4645
|
}
|
|
3627
4646
|
return icon;
|
|
3628
4647
|
}
|
|
3629
|
-
var HeaderTabs = (0,
|
|
4648
|
+
var HeaderTabs = (0, import_react22.memo)(function HeaderTabs2({
|
|
3630
4649
|
items,
|
|
3631
4650
|
value,
|
|
3632
4651
|
onValueChange,
|
|
@@ -3638,12 +4657,12 @@ var HeaderTabs = (0, import_react13.memo)(function HeaderTabs2({
|
|
|
3638
4657
|
(item) => item.url === pathname || pathname.endsWith(item.url) || pathname.split("/").includes(item.value)
|
|
3639
4658
|
) : void 0;
|
|
3640
4659
|
const activeTab = (_b = value != null ? value : matchedItem == null ? void 0 : matchedItem.value) != null ? _b : (_a = items[0]) == null ? void 0 : _a.value;
|
|
3641
|
-
return /* @__PURE__ */ (0,
|
|
3642
|
-
/* @__PURE__ */ (0,
|
|
4660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Tabs, { value: activeTab, onValueChange, className: "space-y-4", children: [
|
|
4661
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "w-full overflow-x-auto overflow-y-hidden border-b no-scrollbar", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(TabsList, { variant: "line", className: "inline-flex w-max justify-start", children: items.map(({ title, value: tabValue, url, icon }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
3643
4662
|
TabsTrigger,
|
|
3644
4663
|
{
|
|
3645
4664
|
nativeButton: false,
|
|
3646
|
-
render: /* @__PURE__ */ (0,
|
|
4665
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_link2.default, { href: url }),
|
|
3647
4666
|
value: tabValue,
|
|
3648
4667
|
children: [
|
|
3649
4668
|
renderTabIcon(icon),
|
|
@@ -3657,27 +4676,27 @@ var HeaderTabs = (0, import_react13.memo)(function HeaderTabs2({
|
|
|
3657
4676
|
});
|
|
3658
4677
|
|
|
3659
4678
|
// src/components/composed/header-title.tsx
|
|
3660
|
-
var
|
|
3661
|
-
var
|
|
3662
|
-
var HeaderTitle = (0,
|
|
4679
|
+
var import_react23 = require("react");
|
|
4680
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
4681
|
+
var HeaderTitle = (0, import_react23.memo)(function HeaderTitle2({
|
|
3663
4682
|
title,
|
|
3664
4683
|
subtitle,
|
|
3665
4684
|
children
|
|
3666
4685
|
}) {
|
|
3667
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
-
/* @__PURE__ */ (0,
|
|
3669
|
-
/* @__PURE__ */ (0,
|
|
3670
|
-
/* @__PURE__ */ (0,
|
|
4686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full space-y-4", children: [
|
|
4687
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { children: [
|
|
4688
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h1", { className: "font-semibold", children: title }),
|
|
4689
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-xs text-muted-foreground", children: subtitle })
|
|
3671
4690
|
] }),
|
|
3672
4691
|
children
|
|
3673
4692
|
] });
|
|
3674
4693
|
});
|
|
3675
4694
|
|
|
3676
4695
|
// src/components/composed/icons/google.tsx
|
|
3677
|
-
var
|
|
4696
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
3678
4697
|
function GoogleIcon(_a) {
|
|
3679
4698
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3680
|
-
return /* @__PURE__ */ (0,
|
|
4699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
3681
4700
|
"svg",
|
|
3682
4701
|
__spreadProps(__spreadValues({
|
|
3683
4702
|
role: "img",
|
|
@@ -3687,28 +4706,28 @@ function GoogleIcon(_a) {
|
|
|
3687
4706
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3688
4707
|
}, props), {
|
|
3689
4708
|
children: [
|
|
3690
|
-
/* @__PURE__ */ (0,
|
|
4709
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3691
4710
|
"path",
|
|
3692
4711
|
{
|
|
3693
4712
|
fill: "#4285F4",
|
|
3694
4713
|
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"
|
|
3695
4714
|
}
|
|
3696
4715
|
),
|
|
3697
|
-
/* @__PURE__ */ (0,
|
|
4716
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3698
4717
|
"path",
|
|
3699
4718
|
{
|
|
3700
4719
|
fill: "#34A853",
|
|
3701
4720
|
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"
|
|
3702
4721
|
}
|
|
3703
4722
|
),
|
|
3704
|
-
/* @__PURE__ */ (0,
|
|
4723
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3705
4724
|
"path",
|
|
3706
4725
|
{
|
|
3707
4726
|
fill: "#FBBC05",
|
|
3708
4727
|
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"
|
|
3709
4728
|
}
|
|
3710
4729
|
),
|
|
3711
|
-
/* @__PURE__ */ (0,
|
|
4730
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3712
4731
|
"path",
|
|
3713
4732
|
{
|
|
3714
4733
|
fill: "#EA4335",
|
|
@@ -3721,8 +4740,16 @@ function GoogleIcon(_a) {
|
|
|
3721
4740
|
}
|
|
3722
4741
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3723
4742
|
0 && (module.exports = {
|
|
4743
|
+
ActiveTokensStatus,
|
|
3724
4744
|
AppSidebar,
|
|
4745
|
+
AvatarGroupInvitations,
|
|
4746
|
+
AvatarGroupUsers,
|
|
4747
|
+
AvatarInvitations,
|
|
3725
4748
|
AvatarUser,
|
|
4749
|
+
AvatarUsers,
|
|
4750
|
+
CodeLabel,
|
|
4751
|
+
CopyableCode,
|
|
4752
|
+
DEFAULT_METADATA_FIELDS,
|
|
3726
4753
|
DataTable,
|
|
3727
4754
|
DataTableContentBody,
|
|
3728
4755
|
DataTableContentHeader,
|
|
@@ -3735,14 +4762,32 @@ function GoogleIcon(_a) {
|
|
|
3735
4762
|
DataTableHeaderSearch,
|
|
3736
4763
|
DataTableHeaderSort,
|
|
3737
4764
|
DataTableHeaderToggle,
|
|
4765
|
+
DescriptionLabel,
|
|
3738
4766
|
EmailLabel,
|
|
3739
4767
|
EmailVerified,
|
|
3740
4768
|
GoogleIcon,
|
|
3741
4769
|
HeaderTabs,
|
|
3742
4770
|
HeaderTitle,
|
|
4771
|
+
ItemStatus,
|
|
3743
4772
|
JoinedLabel,
|
|
4773
|
+
MetadataProgress,
|
|
4774
|
+
MetadataStatus,
|
|
4775
|
+
OrganizationInvitations,
|
|
4776
|
+
OrganizationRoleBadge,
|
|
4777
|
+
OrganizationRoles,
|
|
4778
|
+
PermissionBadges,
|
|
4779
|
+
PermissionsBadges,
|
|
4780
|
+
ProgressStatus,
|
|
4781
|
+
RedirectUriLabel,
|
|
4782
|
+
RedirectUris,
|
|
3744
4783
|
RowActions,
|
|
4784
|
+
RunningStatus,
|
|
4785
|
+
SlugLabel,
|
|
3745
4786
|
StateEmpty,
|
|
4787
|
+
StatusBadge,
|
|
4788
|
+
TokenActivity,
|
|
4789
|
+
UrisLabel,
|
|
4790
|
+
UrisList,
|
|
3746
4791
|
UserRole,
|
|
3747
4792
|
UserStatus,
|
|
3748
4793
|
exportToCSV,
|