@prediktif/ui 0.1.24 → 0.1.26
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 +1561 -478
- package/dist/index.mjs +1525 -449
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -35,7 +35,7 @@ var __objRest = (source, exclude) => {
|
|
|
35
35
|
import { ChevronsUpDown, Command, LockIcon } from "lucide-react";
|
|
36
36
|
import Link from "next/link";
|
|
37
37
|
import { usePathname } from "next/navigation";
|
|
38
|
-
import { memo } from "react";
|
|
38
|
+
import { memo, useEffect as useEffect3 } from "react";
|
|
39
39
|
|
|
40
40
|
// src/components/ui/alert-dialog.tsx
|
|
41
41
|
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
@@ -304,6 +304,36 @@ function AvatarFallback(_a) {
|
|
|
304
304
|
}, props)
|
|
305
305
|
);
|
|
306
306
|
}
|
|
307
|
+
function AvatarGroup(_a) {
|
|
308
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
309
|
+
return /* @__PURE__ */ jsx3(
|
|
310
|
+
"div",
|
|
311
|
+
__spreadValues({
|
|
312
|
+
"data-slot": "avatar-group",
|
|
313
|
+
className: cn3(
|
|
314
|
+
"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
|
|
315
|
+
className
|
|
316
|
+
)
|
|
317
|
+
}, props)
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
function AvatarGroupCount(_a) {
|
|
321
|
+
var _b = _a, {
|
|
322
|
+
className
|
|
323
|
+
} = _b, props = __objRest(_b, [
|
|
324
|
+
"className"
|
|
325
|
+
]);
|
|
326
|
+
return /* @__PURE__ */ jsx3(
|
|
327
|
+
"div",
|
|
328
|
+
__spreadValues({
|
|
329
|
+
"data-slot": "avatar-group-count",
|
|
330
|
+
className: cn3(
|
|
331
|
+
"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",
|
|
332
|
+
className
|
|
333
|
+
)
|
|
334
|
+
}, props)
|
|
335
|
+
);
|
|
336
|
+
}
|
|
307
337
|
|
|
308
338
|
// src/components/ui/breadcrumb.tsx
|
|
309
339
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
@@ -1257,7 +1287,7 @@ function SidebarMenuBadge(_a) {
|
|
|
1257
1287
|
}
|
|
1258
1288
|
|
|
1259
1289
|
// src/components/composed/app-sidebar.tsx
|
|
1260
|
-
import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1290
|
+
import { Fragment, jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1261
1291
|
function renderNavIcon(icon) {
|
|
1262
1292
|
if (!icon) return null;
|
|
1263
1293
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
@@ -1282,7 +1312,7 @@ function isRouteActive(url, pathname) {
|
|
|
1282
1312
|
if (cleanUrl === "/") return cleanPath === "/";
|
|
1283
1313
|
return cleanPath === cleanUrl || cleanPath.startsWith(`${cleanUrl}/`);
|
|
1284
1314
|
}
|
|
1285
|
-
|
|
1315
|
+
function AppSidebarInner({
|
|
1286
1316
|
name = "",
|
|
1287
1317
|
email = "",
|
|
1288
1318
|
orgRole = "",
|
|
@@ -1291,7 +1321,6 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1291
1321
|
confirmDialog = false,
|
|
1292
1322
|
headerDropdown = false,
|
|
1293
1323
|
image,
|
|
1294
|
-
defaultOpen = true,
|
|
1295
1324
|
navMainItems,
|
|
1296
1325
|
navSecondaryItems = [],
|
|
1297
1326
|
organizations,
|
|
@@ -1299,11 +1328,19 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1299
1328
|
setActiveOrg,
|
|
1300
1329
|
children
|
|
1301
1330
|
}) {
|
|
1302
|
-
const _isMobile = useIsMobile();
|
|
1303
1331
|
const pathname = usePathname();
|
|
1332
|
+
const { setOpenMobile } = useSidebar();
|
|
1304
1333
|
const segments = pathname ? pathname.split("/").filter(Boolean) : [];
|
|
1334
|
+
useEffect3(() => {
|
|
1335
|
+
if (pathname) {
|
|
1336
|
+
setOpenMobile(false);
|
|
1337
|
+
}
|
|
1338
|
+
}, [pathname, setOpenMobile]);
|
|
1339
|
+
const handleLinkClick = () => {
|
|
1340
|
+
setOpenMobile(false);
|
|
1341
|
+
};
|
|
1305
1342
|
const initials = name ? name.trim().split(" ").map((n) => n[0]).join("").substring(0, 2).toUpperCase() : "U";
|
|
1306
|
-
return /* @__PURE__ */ jsxs7(
|
|
1343
|
+
return /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
1307
1344
|
/* @__PURE__ */ jsxs7(Sidebar, { collapsible: "icon", children: [
|
|
1308
1345
|
/* @__PURE__ */ jsx12(SidebarHeader, { children: headerDropdown ? /* @__PURE__ */ jsx12(SidebarMenu, { children: /* @__PURE__ */ jsx12(SidebarMenuItem, { children: /* @__PURE__ */ jsxs7(DropdownMenu, { children: [
|
|
1309
1346
|
/* @__PURE__ */ jsx12(
|
|
@@ -1352,55 +1389,73 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1352
1389
|
] })
|
|
1353
1390
|
}
|
|
1354
1391
|
)
|
|
1355
|
-
] }) }) }) : /* @__PURE__ */ jsx12(SidebarMenu, { children: /* @__PURE__ */ jsx12(SidebarMenuItem, { children: /* @__PURE__ */ jsxs7(
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
/* @__PURE__ */ jsx12(
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
/* @__PURE__ */ jsx12(
|
|
1397
|
-
]
|
|
1398
|
-
}
|
|
1399
|
-
),
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1392
|
+
] }) }) }) : /* @__PURE__ */ jsx12(SidebarMenu, { children: /* @__PURE__ */ jsx12(SidebarMenuItem, { children: /* @__PURE__ */ jsxs7(
|
|
1393
|
+
SidebarMenuButton,
|
|
1394
|
+
{
|
|
1395
|
+
size: "lg",
|
|
1396
|
+
render: /* @__PURE__ */ jsx12(Link, { href: "/", onClick: handleLinkClick }),
|
|
1397
|
+
children: [
|
|
1398
|
+
/* @__PURE__ */ jsx12("div", { className: "flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground", children: /* @__PURE__ */ jsx12(Command, { className: "size-4" }) }),
|
|
1399
|
+
/* @__PURE__ */ jsxs7("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
|
|
1400
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate font-medium", children: brand }),
|
|
1401
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate text-xs capitalize", children: orgRole })
|
|
1402
|
+
] })
|
|
1403
|
+
]
|
|
1404
|
+
}
|
|
1405
|
+
) }) }) }),
|
|
1406
|
+
/* @__PURE__ */ jsxs7(
|
|
1407
|
+
SidebarContent,
|
|
1408
|
+
{
|
|
1409
|
+
onClick: (e) => {
|
|
1410
|
+
const target = e.target;
|
|
1411
|
+
if (target.closest("a")) {
|
|
1412
|
+
setOpenMobile(false);
|
|
1413
|
+
}
|
|
1414
|
+
},
|
|
1415
|
+
children: [
|
|
1416
|
+
/* @__PURE__ */ jsxs7(SidebarGroup, { children: [
|
|
1417
|
+
/* @__PURE__ */ jsx12(SidebarGroupLabel, { children: "Platform" }),
|
|
1418
|
+
/* @__PURE__ */ jsx12(SidebarMenu, { children: navMainItems.map(({ title, url, icon, locked }) => {
|
|
1419
|
+
const isActive = isRouteActive(url, pathname);
|
|
1420
|
+
return /* @__PURE__ */ jsxs7(SidebarMenuItem, { children: [
|
|
1421
|
+
/* @__PURE__ */ jsxs7(
|
|
1422
|
+
SidebarMenuButton,
|
|
1423
|
+
{
|
|
1424
|
+
isActive,
|
|
1425
|
+
tooltip: title,
|
|
1426
|
+
render: /* @__PURE__ */ jsx12(Link, { href: url, onClick: handleLinkClick }),
|
|
1427
|
+
children: [
|
|
1428
|
+
renderNavIcon(icon),
|
|
1429
|
+
/* @__PURE__ */ jsx12("span", { children: title })
|
|
1430
|
+
]
|
|
1431
|
+
}
|
|
1432
|
+
),
|
|
1433
|
+
locked && /* @__PURE__ */ jsx12(SidebarMenuBadge, { children: /* @__PURE__ */ jsx12(LockIcon, { size: 12 }) })
|
|
1434
|
+
] }, title);
|
|
1435
|
+
}) })
|
|
1436
|
+
] }),
|
|
1437
|
+
/* @__PURE__ */ jsx12(SidebarGroup, { className: "mt-auto", children: /* @__PURE__ */ jsx12(SidebarGroupContent, { children: /* @__PURE__ */ jsx12(SidebarMenu, { children: navSecondaryItems.map(({ title, url, icon, locked }) => {
|
|
1438
|
+
const isActive = isRouteActive(url, pathname);
|
|
1439
|
+
return /* @__PURE__ */ jsxs7(SidebarMenuItem, { children: [
|
|
1440
|
+
/* @__PURE__ */ jsxs7(
|
|
1441
|
+
SidebarMenuButton,
|
|
1442
|
+
{
|
|
1443
|
+
size: "sm",
|
|
1444
|
+
isActive,
|
|
1445
|
+
tooltip: title,
|
|
1446
|
+
render: /* @__PURE__ */ jsx12(Link, { href: url, onClick: handleLinkClick }),
|
|
1447
|
+
children: [
|
|
1448
|
+
renderNavIcon(icon),
|
|
1449
|
+
/* @__PURE__ */ jsx12("span", { children: title })
|
|
1450
|
+
]
|
|
1451
|
+
}
|
|
1452
|
+
),
|
|
1453
|
+
locked && /* @__PURE__ */ jsx12(SidebarMenuBadge, { children: /* @__PURE__ */ jsx12(LockIcon, { size: 12 }) })
|
|
1454
|
+
] }, title);
|
|
1455
|
+
}) }) }) })
|
|
1456
|
+
]
|
|
1457
|
+
}
|
|
1458
|
+
),
|
|
1404
1459
|
/* @__PURE__ */ jsx12(SidebarFooter, { children: /* @__PURE__ */ jsx12(SidebarMenu, { children: /* @__PURE__ */ jsx12(SidebarMenuItem, { children: confirmDialog ? /* @__PURE__ */ jsxs7(AlertDialog, { children: [
|
|
1405
1460
|
/* @__PURE__ */ jsx12(
|
|
1406
1461
|
AlertDialogTrigger,
|
|
@@ -1428,22 +1483,36 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1428
1483
|
AlertDialogAction,
|
|
1429
1484
|
{
|
|
1430
1485
|
nativeButton: false,
|
|
1431
|
-
render: /* @__PURE__ */ jsx12(
|
|
1486
|
+
render: /* @__PURE__ */ jsx12(
|
|
1487
|
+
Link,
|
|
1488
|
+
{
|
|
1489
|
+
href,
|
|
1490
|
+
target: "_blank",
|
|
1491
|
+
onClick: handleLinkClick
|
|
1492
|
+
}
|
|
1493
|
+
),
|
|
1432
1494
|
children: "Continue"
|
|
1433
1495
|
}
|
|
1434
1496
|
)
|
|
1435
1497
|
] })
|
|
1436
1498
|
] })
|
|
1437
|
-
] }) : /* @__PURE__ */ jsxs7(
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1499
|
+
] }) : /* @__PURE__ */ jsxs7(
|
|
1500
|
+
SidebarMenuButton,
|
|
1501
|
+
{
|
|
1502
|
+
size: "lg",
|
|
1503
|
+
render: /* @__PURE__ */ jsx12(Link, { href, onClick: handleLinkClick }),
|
|
1504
|
+
children: [
|
|
1505
|
+
/* @__PURE__ */ jsxs7(Avatar, { children: [
|
|
1506
|
+
/* @__PURE__ */ jsx12(AvatarImage, { src: image || "", alt: name || "" }),
|
|
1507
|
+
/* @__PURE__ */ jsx12(AvatarFallback, { children: initials })
|
|
1508
|
+
] }),
|
|
1509
|
+
/* @__PURE__ */ jsxs7("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
|
|
1510
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate font-medium", children: name }),
|
|
1511
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate text-xs text-muted-foreground", children: email })
|
|
1512
|
+
] })
|
|
1513
|
+
]
|
|
1514
|
+
}
|
|
1515
|
+
) }) }) }),
|
|
1447
1516
|
/* @__PURE__ */ jsx12(SidebarRail, {})
|
|
1448
1517
|
] }),
|
|
1449
1518
|
/* @__PURE__ */ jsxs7(SidebarInset, { children: [
|
|
@@ -1470,46 +1539,336 @@ var AppSidebar = memo(function AppSidebar2({
|
|
|
1470
1539
|
/* @__PURE__ */ jsx12("div", { className: "p-4 pt-0", children })
|
|
1471
1540
|
] })
|
|
1472
1541
|
] });
|
|
1542
|
+
}
|
|
1543
|
+
var AppSidebar = memo(function AppSidebar2(_a) {
|
|
1544
|
+
var _b = _a, {
|
|
1545
|
+
defaultOpen = true
|
|
1546
|
+
} = _b, props = __objRest(_b, [
|
|
1547
|
+
"defaultOpen"
|
|
1548
|
+
]);
|
|
1549
|
+
return /* @__PURE__ */ jsx12(SidebarProvider, { defaultOpen, children: /* @__PURE__ */ jsx12(AppSidebarInner, __spreadValues({}, props)) });
|
|
1473
1550
|
});
|
|
1474
1551
|
|
|
1475
|
-
// src/components/composed/columns/avatar-
|
|
1552
|
+
// src/components/composed/columns/avatar-group-invitations.tsx
|
|
1476
1553
|
import { memo as memo2 } from "react";
|
|
1477
|
-
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1478
|
-
function getInitials(name) {
|
|
1554
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1555
|
+
function getInitials(name, email) {
|
|
1556
|
+
const target = (name || email || "U").trim();
|
|
1557
|
+
return target.split(/[\s.@]/).filter(Boolean).map((n) => n[0]).join("").slice(0, 1).toUpperCase();
|
|
1558
|
+
}
|
|
1559
|
+
var AvatarGroupInvitations = memo2(function AvatarGroupInvitations2({
|
|
1560
|
+
invitations,
|
|
1561
|
+
maxDisplay = 3,
|
|
1562
|
+
onlyPending = true,
|
|
1563
|
+
fallback = null,
|
|
1564
|
+
size = "sm",
|
|
1565
|
+
className
|
|
1566
|
+
}) {
|
|
1567
|
+
const list = invitations != null ? invitations : [];
|
|
1568
|
+
const targetInvites = onlyPending ? list.filter((i) => {
|
|
1569
|
+
var _a;
|
|
1570
|
+
return ((_a = i.status) == null ? void 0 : _a.toLowerCase()) === "pending";
|
|
1571
|
+
}) : list;
|
|
1572
|
+
if (targetInvites.length === 0) {
|
|
1573
|
+
if (!fallback) return null;
|
|
1574
|
+
return /* @__PURE__ */ jsx13(Fragment2, { children: fallback });
|
|
1575
|
+
}
|
|
1576
|
+
const visibleInvites = targetInvites.slice(0, maxDisplay);
|
|
1577
|
+
const remainingCount = targetInvites.length - visibleInvites.length;
|
|
1578
|
+
return /* @__PURE__ */ jsxs8(AvatarGroup, { className, children: [
|
|
1579
|
+
visibleInvites.map((inv, index) => {
|
|
1580
|
+
var _a, _b, _c, _d, _e;
|
|
1581
|
+
const displayName = ((_a = inv.invitedUser) == null ? void 0 : _a.name) || inv.email;
|
|
1582
|
+
const initials = getInitials((_b = inv.invitedUser) == null ? void 0 : _b.name, inv.email);
|
|
1583
|
+
return /* @__PURE__ */ jsxs8(Tooltip, { children: [
|
|
1584
|
+
/* @__PURE__ */ jsx13(
|
|
1585
|
+
TooltipTrigger,
|
|
1586
|
+
{
|
|
1587
|
+
render: /* @__PURE__ */ jsxs8(
|
|
1588
|
+
Avatar,
|
|
1589
|
+
{
|
|
1590
|
+
size,
|
|
1591
|
+
className: "border border-dashed border-primary/40",
|
|
1592
|
+
children: [
|
|
1593
|
+
/* @__PURE__ */ jsx13(
|
|
1594
|
+
AvatarImage,
|
|
1595
|
+
{
|
|
1596
|
+
src: (_e = (_d = inv.invitedUser) == null ? void 0 : _d.image) != null ? _e : void 0,
|
|
1597
|
+
alt: displayName
|
|
1598
|
+
}
|
|
1599
|
+
),
|
|
1600
|
+
/* @__PURE__ */ jsx13(AvatarFallback, { children: /* @__PURE__ */ jsx13("span", { className: "text-[10px]", children: initials }) })
|
|
1601
|
+
]
|
|
1602
|
+
}
|
|
1603
|
+
)
|
|
1604
|
+
}
|
|
1605
|
+
),
|
|
1606
|
+
/* @__PURE__ */ jsxs8(TooltipContent, { children: [
|
|
1607
|
+
/* @__PURE__ */ jsx13("p", { className: "font-medium text-xs", children: displayName }),
|
|
1608
|
+
/* @__PURE__ */ jsxs8("p", { className: "text-xs text-muted-foreground", children: [
|
|
1609
|
+
"Invited as ",
|
|
1610
|
+
/* @__PURE__ */ jsx13("span", { className: "capitalize", children: inv.role })
|
|
1611
|
+
] })
|
|
1612
|
+
] })
|
|
1613
|
+
] }, (_c = inv.id) != null ? _c : `${displayName}-${index}`);
|
|
1614
|
+
}),
|
|
1615
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs8(Tooltip, { children: [
|
|
1616
|
+
/* @__PURE__ */ jsx13(
|
|
1617
|
+
TooltipTrigger,
|
|
1618
|
+
{
|
|
1619
|
+
render: /* @__PURE__ */ jsxs8(AvatarGroupCount, { className: "border border-dashed border-primary/40 text-[10px]", children: [
|
|
1620
|
+
"+",
|
|
1621
|
+
remainingCount
|
|
1622
|
+
] })
|
|
1623
|
+
}
|
|
1624
|
+
),
|
|
1625
|
+
/* @__PURE__ */ jsx13(TooltipContent, { children: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-0.5 text-xs", children: [
|
|
1626
|
+
/* @__PURE__ */ jsx13("p", { className: "font-semibold text-xs mb-0.5", children: onlyPending ? "Other Pending Invitations:" : "Other Invitations:" }),
|
|
1627
|
+
targetInvites.slice(maxDisplay).map((rem, idx) => {
|
|
1628
|
+
var _a, _b;
|
|
1629
|
+
return /* @__PURE__ */ jsxs8("span", { className: "text-xs", children: [
|
|
1630
|
+
((_b = rem.invitedUser) == null ? void 0 : _b.name) || rem.email,
|
|
1631
|
+
" (",
|
|
1632
|
+
rem.role,
|
|
1633
|
+
")"
|
|
1634
|
+
] }, (_a = rem.id) != null ? _a : `${rem.email}-${idx}`);
|
|
1635
|
+
})
|
|
1636
|
+
] }) })
|
|
1637
|
+
] })
|
|
1638
|
+
] });
|
|
1639
|
+
});
|
|
1640
|
+
var AvatarInvitations = AvatarGroupInvitations;
|
|
1641
|
+
var OrganizationInvitations = AvatarGroupInvitations;
|
|
1642
|
+
|
|
1643
|
+
// src/components/composed/columns/avatar-group-users.tsx
|
|
1644
|
+
import { memo as memo3 } from "react";
|
|
1645
|
+
import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1646
|
+
function getInitials2(name, email) {
|
|
1647
|
+
const target = (name || email || "U").trim();
|
|
1648
|
+
return target.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
|
|
1649
|
+
}
|
|
1650
|
+
var AvatarGroupUsers = memo3(function AvatarGroupUsers2({
|
|
1651
|
+
users,
|
|
1652
|
+
maxDisplay = 3,
|
|
1653
|
+
fallback = null,
|
|
1654
|
+
className,
|
|
1655
|
+
size = "sm"
|
|
1656
|
+
}) {
|
|
1657
|
+
const list = users != null ? users : [];
|
|
1658
|
+
if (list.length === 0) {
|
|
1659
|
+
if (!fallback) return null;
|
|
1660
|
+
return /* @__PURE__ */ jsx14(Fragment3, { children: fallback });
|
|
1661
|
+
}
|
|
1662
|
+
const visibleUsers = list.slice(0, maxDisplay);
|
|
1663
|
+
const remainingCount = list.length - visibleUsers.length;
|
|
1664
|
+
return /* @__PURE__ */ jsxs9(AvatarGroup, { className, children: [
|
|
1665
|
+
visibleUsers.map((u, index) => {
|
|
1666
|
+
var _a, _b;
|
|
1667
|
+
const initials = getInitials2(u.name, u.email);
|
|
1668
|
+
const displayName = u.name || u.email || "User";
|
|
1669
|
+
return /* @__PURE__ */ jsxs9(Tooltip, { children: [
|
|
1670
|
+
/* @__PURE__ */ jsx14(
|
|
1671
|
+
TooltipTrigger,
|
|
1672
|
+
{
|
|
1673
|
+
render: /* @__PURE__ */ jsxs9(Avatar, { size, children: [
|
|
1674
|
+
/* @__PURE__ */ jsx14(AvatarImage, { src: (_b = u.image) != null ? _b : void 0, alt: displayName }),
|
|
1675
|
+
/* @__PURE__ */ jsx14(AvatarFallback, { children: /* @__PURE__ */ jsx14("span", { className: "text-[10px]", children: initials }) })
|
|
1676
|
+
] })
|
|
1677
|
+
}
|
|
1678
|
+
),
|
|
1679
|
+
/* @__PURE__ */ jsx14(TooltipContent, { children: displayName })
|
|
1680
|
+
] }, (_a = u.id) != null ? _a : `${displayName}-${index}`);
|
|
1681
|
+
}),
|
|
1682
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs9(Tooltip, { children: [
|
|
1683
|
+
/* @__PURE__ */ jsx14(
|
|
1684
|
+
TooltipTrigger,
|
|
1685
|
+
{
|
|
1686
|
+
render: /* @__PURE__ */ jsxs9(AvatarGroupCount, { className: "text-[10px]", children: [
|
|
1687
|
+
"+",
|
|
1688
|
+
remainingCount
|
|
1689
|
+
] })
|
|
1690
|
+
}
|
|
1691
|
+
),
|
|
1692
|
+
/* @__PURE__ */ jsx14(TooltipContent, { children: /* @__PURE__ */ jsx14("div", { className: "flex flex-col gap-0.5 text-xs", children: list.slice(maxDisplay).map((rem, idx) => {
|
|
1693
|
+
var _a, _b;
|
|
1694
|
+
return /* @__PURE__ */ jsx14("span", { children: rem.name || rem.email }, (_b = rem.id) != null ? _b : `${(_a = rem.name) != null ? _a : rem.email}-${idx}`);
|
|
1695
|
+
}) }) })
|
|
1696
|
+
] })
|
|
1697
|
+
] });
|
|
1698
|
+
});
|
|
1699
|
+
var AvatarUsers = AvatarGroupUsers;
|
|
1700
|
+
|
|
1701
|
+
// src/components/composed/columns/avatar-user.tsx
|
|
1702
|
+
import { cn as cn12 } from "cn";
|
|
1703
|
+
import { memo as memo4 } from "react";
|
|
1704
|
+
import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1705
|
+
function getInitials3(name) {
|
|
1479
1706
|
if (name) {
|
|
1480
1707
|
return name.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
|
|
1481
1708
|
}
|
|
1482
1709
|
return "U";
|
|
1483
1710
|
}
|
|
1484
|
-
var AvatarUser =
|
|
1711
|
+
var AvatarUser = memo4(function AvatarUser2({
|
|
1485
1712
|
name,
|
|
1486
|
-
image
|
|
1713
|
+
image,
|
|
1714
|
+
className,
|
|
1715
|
+
size = "sm"
|
|
1487
1716
|
}) {
|
|
1488
|
-
return /* @__PURE__ */
|
|
1489
|
-
/* @__PURE__ */
|
|
1490
|
-
/* @__PURE__ */
|
|
1491
|
-
/* @__PURE__ */
|
|
1717
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn12("flex items-center gap-2", className), children: [
|
|
1718
|
+
/* @__PURE__ */ jsxs10(Avatar, { size, children: [
|
|
1719
|
+
/* @__PURE__ */ jsx15(AvatarImage, { src: image != null ? image : void 0, alt: name != null ? name : void 0 }),
|
|
1720
|
+
/* @__PURE__ */ jsx15(AvatarFallback, { children: getInitials3(name) })
|
|
1492
1721
|
] }),
|
|
1493
|
-
/* @__PURE__ */
|
|
1722
|
+
/* @__PURE__ */ jsx15("p", { className: "text-xs font-medium truncate", children: name })
|
|
1723
|
+
] });
|
|
1724
|
+
});
|
|
1725
|
+
|
|
1726
|
+
// src/components/composed/columns/copyable-code.tsx
|
|
1727
|
+
import { cn as cn14 } from "cn";
|
|
1728
|
+
import { CheckIcon as CheckIcon2, CopyIcon } from "lucide-react";
|
|
1729
|
+
import { memo as memo5, useCallback as useCallback2, useState as useState3 } from "react";
|
|
1730
|
+
|
|
1731
|
+
// src/components/ui/toast.tsx
|
|
1732
|
+
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
1733
|
+
import { cn as cn13 } from "cn";
|
|
1734
|
+
import {
|
|
1735
|
+
CircleCheckIcon,
|
|
1736
|
+
InfoIcon,
|
|
1737
|
+
Loader2Icon,
|
|
1738
|
+
OctagonXIcon,
|
|
1739
|
+
TriangleAlertIcon,
|
|
1740
|
+
XIcon as XIcon2
|
|
1741
|
+
} from "lucide-react";
|
|
1742
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1743
|
+
var toast = ToastPrimitive.createToastManager();
|
|
1744
|
+
var createToastManager = ToastPrimitive.createToastManager;
|
|
1745
|
+
var useToastManager = ToastPrimitive.useToastManager;
|
|
1746
|
+
|
|
1747
|
+
// src/components/composed/columns/copyable-code.tsx
|
|
1748
|
+
import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1749
|
+
var CopyableCode = memo5(function CopyableCode2({
|
|
1750
|
+
value,
|
|
1751
|
+
label,
|
|
1752
|
+
copyMessage,
|
|
1753
|
+
toastOnCopy = true,
|
|
1754
|
+
showTooltip = true,
|
|
1755
|
+
fallback = null,
|
|
1756
|
+
className,
|
|
1757
|
+
codeClassName,
|
|
1758
|
+
onCopy
|
|
1759
|
+
}) {
|
|
1760
|
+
const [copied, setCopied] = useState3(false);
|
|
1761
|
+
const handleCopy = useCallback2(
|
|
1762
|
+
async (e) => {
|
|
1763
|
+
e.stopPropagation();
|
|
1764
|
+
if (!value) return;
|
|
1765
|
+
try {
|
|
1766
|
+
await navigator.clipboard.writeText(value);
|
|
1767
|
+
setCopied(true);
|
|
1768
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
1769
|
+
} catch (err) {
|
|
1770
|
+
console.error("Failed to copy to clipboard:", err);
|
|
1771
|
+
}
|
|
1772
|
+
if (onCopy) {
|
|
1773
|
+
onCopy(value);
|
|
1774
|
+
} else if (toastOnCopy) {
|
|
1775
|
+
try {
|
|
1776
|
+
toast.add({
|
|
1777
|
+
description: copyMessage || `${label || "Value"} copied to clipboard`
|
|
1778
|
+
});
|
|
1779
|
+
} catch (e2) {
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
},
|
|
1783
|
+
[value, onCopy, toastOnCopy, copyMessage, label]
|
|
1784
|
+
);
|
|
1785
|
+
if (!value) {
|
|
1786
|
+
if (!fallback) return null;
|
|
1787
|
+
return /* @__PURE__ */ jsx17(Fragment4, { children: fallback });
|
|
1788
|
+
}
|
|
1789
|
+
const tooltipText = copied ? "Copied!" : `Copy ${label || "value"}`;
|
|
1790
|
+
const copyButton = /* @__PURE__ */ jsx17(
|
|
1791
|
+
Button,
|
|
1792
|
+
{
|
|
1793
|
+
size: "icon-xs",
|
|
1794
|
+
variant: "ghost",
|
|
1795
|
+
className: "text-muted-foreground hover:text-foreground cursor-pointer",
|
|
1796
|
+
onClick: handleCopy,
|
|
1797
|
+
title: tooltipText,
|
|
1798
|
+
children: copied ? /* @__PURE__ */ jsx17(CheckIcon2, { className: "size-3 text-emerald-500" }) : /* @__PURE__ */ jsx17(CopyIcon, { className: "size-3" })
|
|
1799
|
+
}
|
|
1800
|
+
);
|
|
1801
|
+
return /* @__PURE__ */ jsxs12("div", { className: cn14("flex items-center gap-1.5", className), children: [
|
|
1802
|
+
/* @__PURE__ */ jsx17(
|
|
1803
|
+
"code",
|
|
1804
|
+
{
|
|
1805
|
+
className: cn14(
|
|
1806
|
+
"font-mono text-xs text-muted-foreground bg-muted/50 px-1.5 py-0.5 rounded select-all",
|
|
1807
|
+
codeClassName
|
|
1808
|
+
),
|
|
1809
|
+
children: value
|
|
1810
|
+
}
|
|
1811
|
+
),
|
|
1812
|
+
showTooltip ? /* @__PURE__ */ jsxs12(Tooltip, { children: [
|
|
1813
|
+
/* @__PURE__ */ jsx17(TooltipTrigger, { render: copyButton }),
|
|
1814
|
+
/* @__PURE__ */ jsx17(TooltipContent, { children: tooltipText })
|
|
1815
|
+
] }) : copyButton
|
|
1816
|
+
] });
|
|
1817
|
+
});
|
|
1818
|
+
var CodeLabel = CopyableCode;
|
|
1819
|
+
var SlugLabel = CopyableCode;
|
|
1820
|
+
|
|
1821
|
+
// src/components/composed/columns/description-label.tsx
|
|
1822
|
+
import { cn as cn15 } from "cn";
|
|
1823
|
+
import { memo as memo6 } from "react";
|
|
1824
|
+
import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1825
|
+
var DescriptionLabel = memo6(function DescriptionLabel2({
|
|
1826
|
+
description,
|
|
1827
|
+
fallback = null,
|
|
1828
|
+
className
|
|
1829
|
+
}) {
|
|
1830
|
+
const text = description == null ? void 0 : description.trim();
|
|
1831
|
+
if (!text) {
|
|
1832
|
+
if (!fallback) return null;
|
|
1833
|
+
return /* @__PURE__ */ jsx18("span", { className: cn15("text-xs text-muted-foreground", className), children: fallback });
|
|
1834
|
+
}
|
|
1835
|
+
return /* @__PURE__ */ jsxs13(Tooltip, { children: [
|
|
1836
|
+
/* @__PURE__ */ jsx18(
|
|
1837
|
+
TooltipTrigger,
|
|
1838
|
+
{
|
|
1839
|
+
render: /* @__PURE__ */ jsx18(
|
|
1840
|
+
"p",
|
|
1841
|
+
{
|
|
1842
|
+
className: cn15(
|
|
1843
|
+
"text-xs text-muted-foreground truncate max-w-xs cursor-default",
|
|
1844
|
+
className
|
|
1845
|
+
),
|
|
1846
|
+
children: text
|
|
1847
|
+
}
|
|
1848
|
+
)
|
|
1849
|
+
}
|
|
1850
|
+
),
|
|
1851
|
+
/* @__PURE__ */ jsx18(TooltipContent, { className: "max-w-xs break-words", children: text })
|
|
1494
1852
|
] });
|
|
1495
1853
|
});
|
|
1496
1854
|
|
|
1497
1855
|
// src/components/composed/columns/email-label.tsx
|
|
1498
|
-
import { memo as
|
|
1499
|
-
import { jsx as
|
|
1500
|
-
var EmailLabel =
|
|
1501
|
-
return /* @__PURE__ */
|
|
1856
|
+
import { memo as memo7 } from "react";
|
|
1857
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1858
|
+
var EmailLabel = memo7(function EmailLabel2({ email }) {
|
|
1859
|
+
return /* @__PURE__ */ jsx19("span", { className: "text-xs font-mono", children: email });
|
|
1502
1860
|
});
|
|
1503
1861
|
|
|
1504
1862
|
// src/components/composed/columns/email-verified.tsx
|
|
1505
|
-
import {
|
|
1506
|
-
import {
|
|
1863
|
+
import { cn as cn17 } from "cn";
|
|
1864
|
+
import { CheckIcon as CheckIcon3, XIcon as XIcon3 } from "lucide-react";
|
|
1865
|
+
import { memo as memo8 } from "react";
|
|
1507
1866
|
|
|
1508
1867
|
// src/components/ui/badge.tsx
|
|
1509
1868
|
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1510
1869
|
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1511
1870
|
import { cva as cva3 } from "class-variance-authority";
|
|
1512
|
-
import { cn as
|
|
1871
|
+
import { cn as cn16 } from "cn";
|
|
1513
1872
|
var badgeVariants = cva3(
|
|
1514
1873
|
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",
|
|
1515
1874
|
{
|
|
@@ -1542,7 +1901,7 @@ function Badge(_a) {
|
|
|
1542
1901
|
defaultTagName: "span",
|
|
1543
1902
|
props: mergeProps3(
|
|
1544
1903
|
{
|
|
1545
|
-
className:
|
|
1904
|
+
className: cn16(badgeVariants({ variant }), className)
|
|
1546
1905
|
},
|
|
1547
1906
|
props
|
|
1548
1907
|
),
|
|
@@ -1555,63 +1914,754 @@ function Badge(_a) {
|
|
|
1555
1914
|
}
|
|
1556
1915
|
|
|
1557
1916
|
// src/components/composed/columns/email-verified.tsx
|
|
1558
|
-
import { jsx as
|
|
1559
|
-
var EmailVerified =
|
|
1560
|
-
verified
|
|
1917
|
+
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1918
|
+
var EmailVerified = memo8(function EmailVerified2({
|
|
1919
|
+
verified,
|
|
1920
|
+
label,
|
|
1921
|
+
className
|
|
1561
1922
|
}) {
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1923
|
+
const isVerified = Boolean(verified);
|
|
1924
|
+
if (isVerified) {
|
|
1925
|
+
return /* @__PURE__ */ jsxs14(
|
|
1926
|
+
Badge,
|
|
1927
|
+
{
|
|
1928
|
+
variant: "outline",
|
|
1929
|
+
className: cn17(
|
|
1930
|
+
"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-normal",
|
|
1931
|
+
className
|
|
1932
|
+
),
|
|
1933
|
+
children: [
|
|
1934
|
+
/* @__PURE__ */ jsx20(
|
|
1935
|
+
CheckIcon3,
|
|
1936
|
+
{
|
|
1937
|
+
"data-icon": "inline-start",
|
|
1938
|
+
className: "text-emerald-600 dark:text-emerald-400"
|
|
1939
|
+
}
|
|
1940
|
+
),
|
|
1941
|
+
label != null ? label : "Verified"
|
|
1942
|
+
]
|
|
1943
|
+
}
|
|
1944
|
+
);
|
|
1945
|
+
}
|
|
1946
|
+
return /* @__PURE__ */ jsxs14(
|
|
1947
|
+
Badge,
|
|
1948
|
+
{
|
|
1949
|
+
variant: "outline",
|
|
1950
|
+
className: cn17(
|
|
1951
|
+
"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-normal",
|
|
1952
|
+
className
|
|
1953
|
+
),
|
|
1954
|
+
children: [
|
|
1955
|
+
/* @__PURE__ */ jsx20(
|
|
1956
|
+
XIcon3,
|
|
1957
|
+
{
|
|
1958
|
+
"data-icon": "inline-start",
|
|
1959
|
+
className: "text-amber-600 dark:text-amber-400"
|
|
1960
|
+
}
|
|
1961
|
+
),
|
|
1962
|
+
label != null ? label : "Unverified"
|
|
1963
|
+
]
|
|
1964
|
+
}
|
|
1965
|
+
);
|
|
1569
1966
|
});
|
|
1570
1967
|
|
|
1571
1968
|
// src/components/composed/columns/joined-label.tsx
|
|
1572
|
-
import { memo as
|
|
1573
|
-
import { jsx as
|
|
1574
|
-
var JoinedLabel =
|
|
1969
|
+
import { memo as memo9 } from "react";
|
|
1970
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1971
|
+
var JoinedLabel = memo9(function JoinedLabel2({
|
|
1575
1972
|
joined,
|
|
1576
1973
|
locale = "id-ID"
|
|
1577
1974
|
}) {
|
|
1578
1975
|
if (!joined) return null;
|
|
1579
1976
|
const date = typeof joined === "string" ? new Date(joined) : joined;
|
|
1580
1977
|
if (Number.isNaN(date.getTime())) return null;
|
|
1581
|
-
return /* @__PURE__ */
|
|
1978
|
+
return /* @__PURE__ */ jsx21("span", { className: "text-xs font-mono", children: new Intl.DateTimeFormat(locale, {
|
|
1582
1979
|
day: "numeric",
|
|
1583
1980
|
month: "long",
|
|
1584
1981
|
year: "numeric"
|
|
1585
1982
|
}).format(date) });
|
|
1586
1983
|
});
|
|
1587
1984
|
|
|
1588
|
-
// src/components/composed/columns/
|
|
1589
|
-
import {
|
|
1590
|
-
import { memo as
|
|
1591
|
-
import { jsx as
|
|
1592
|
-
var
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1985
|
+
// src/components/composed/columns/metadata-progress.tsx
|
|
1986
|
+
import { cn as cn18 } from "cn";
|
|
1987
|
+
import { memo as memo10, useMemo as useMemo2 } from "react";
|
|
1988
|
+
import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1989
|
+
var DEFAULT_METADATA_FIELDS = [
|
|
1990
|
+
{ key: "title", label: "Page Title" },
|
|
1991
|
+
{ key: "description", label: "Meta Description" },
|
|
1992
|
+
{ key: "keywords", label: "Keywords" },
|
|
1993
|
+
{ key: "author", label: "Author" },
|
|
1994
|
+
{ key: "canonicalUrl", label: "Canonical URL" },
|
|
1995
|
+
{ key: "favicon", label: "Favicon URL" },
|
|
1996
|
+
{ key: "ogImage", label: "OG Image URL" },
|
|
1997
|
+
{ key: "ogType", label: "OG Type" },
|
|
1998
|
+
{ key: "twitterCard", label: "Twitter Card" },
|
|
1999
|
+
{ key: "twitterHandle", label: "Twitter Handle" },
|
|
2000
|
+
{ key: "robots", label: "Robots" },
|
|
2001
|
+
{ key: "customJsonLd", label: "Custom JSON-LD" }
|
|
2002
|
+
];
|
|
2003
|
+
var MetadataProgress = memo10(function MetadataProgress2({
|
|
2004
|
+
metadata,
|
|
2005
|
+
fields = DEFAULT_METADATA_FIELDS,
|
|
2006
|
+
completedCount: propCompleted,
|
|
2007
|
+
totalCount: propTotal,
|
|
2008
|
+
title = "Metadata",
|
|
2009
|
+
fallback = null,
|
|
2010
|
+
className
|
|
2011
|
+
}) {
|
|
2012
|
+
const stats = useMemo2(() => {
|
|
2013
|
+
if (propCompleted !== void 0 && propTotal !== void 0) {
|
|
2014
|
+
const total3 = Math.max(1, propTotal);
|
|
2015
|
+
const completed3 = Math.min(propCompleted, total3);
|
|
2016
|
+
const percentage3 = Math.round(completed3 / total3 * 100);
|
|
2017
|
+
return {
|
|
2018
|
+
completed: completed3,
|
|
2019
|
+
total: total3,
|
|
2020
|
+
percentage: percentage3,
|
|
2021
|
+
missing: []
|
|
2022
|
+
};
|
|
2023
|
+
}
|
|
2024
|
+
if (!metadata) {
|
|
2025
|
+
return {
|
|
2026
|
+
completed: 0,
|
|
2027
|
+
total: fields.length,
|
|
2028
|
+
percentage: 0,
|
|
2029
|
+
missing: fields.map((f) => f.label)
|
|
2030
|
+
};
|
|
2031
|
+
}
|
|
2032
|
+
const completedList = [];
|
|
2033
|
+
const missingList = [];
|
|
2034
|
+
for (const field of fields) {
|
|
2035
|
+
const val = metadata[field.key];
|
|
2036
|
+
let isFilled = false;
|
|
2037
|
+
if (field.key === "keywords") {
|
|
2038
|
+
isFilled = Array.isArray(val) ? val.length > 0 : Boolean(typeof val === "string" && val.trim().length > 0);
|
|
2039
|
+
} else if (typeof val === "string") {
|
|
2040
|
+
isFilled = val.trim().length > 0;
|
|
2041
|
+
} else {
|
|
2042
|
+
isFilled = Boolean(val);
|
|
2043
|
+
}
|
|
2044
|
+
if (isFilled) {
|
|
2045
|
+
completedList.push(field.label);
|
|
2046
|
+
} else {
|
|
2047
|
+
missingList.push(field.label);
|
|
2048
|
+
}
|
|
2049
|
+
}
|
|
2050
|
+
const total2 = fields.length;
|
|
2051
|
+
const completed2 = completedList.length;
|
|
2052
|
+
const percentage2 = Math.round(completed2 / Math.max(1, total2) * 100);
|
|
2053
|
+
return {
|
|
2054
|
+
completed: completed2,
|
|
2055
|
+
total: total2,
|
|
2056
|
+
percentage: percentage2,
|
|
2057
|
+
missing: missingList
|
|
2058
|
+
};
|
|
2059
|
+
}, [metadata, fields, propCompleted, propTotal]);
|
|
2060
|
+
const { completed, total, percentage, missing } = stats;
|
|
2061
|
+
if (completed === 0 && fallback !== null) {
|
|
2062
|
+
return /* @__PURE__ */ jsx22(Fragment5, { children: fallback });
|
|
2063
|
+
}
|
|
2064
|
+
return /* @__PURE__ */ jsxs15(Tooltip, { children: [
|
|
2065
|
+
/* @__PURE__ */ jsx22(
|
|
2066
|
+
TooltipTrigger,
|
|
2067
|
+
{
|
|
2068
|
+
render: /* @__PURE__ */ jsx22(
|
|
2069
|
+
"div",
|
|
2070
|
+
{
|
|
2071
|
+
className: cn18(
|
|
2072
|
+
"inline-flex items-center gap-2 cursor-pointer select-none",
|
|
2073
|
+
className
|
|
2074
|
+
),
|
|
2075
|
+
children: percentage === 100 ? /* @__PURE__ */ jsxs15(
|
|
2076
|
+
Badge,
|
|
2077
|
+
{
|
|
2078
|
+
variant: "outline",
|
|
2079
|
+
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",
|
|
2080
|
+
children: [
|
|
2081
|
+
/* @__PURE__ */ jsx22("span", { className: "size-1.5 rounded-full bg-emerald-500" }),
|
|
2082
|
+
"100%"
|
|
2083
|
+
]
|
|
2084
|
+
}
|
|
2085
|
+
) : /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 w-24", children: [
|
|
2086
|
+
/* @__PURE__ */ jsx22("div", { className: "flex-1 h-1.5 rounded-full bg-muted/60 overflow-hidden", children: /* @__PURE__ */ jsx22(
|
|
2087
|
+
"div",
|
|
2088
|
+
{
|
|
2089
|
+
className: cn18(
|
|
2090
|
+
"h-full rounded-full transition-all duration-300",
|
|
2091
|
+
percentage >= 50 ? "bg-primary" : "bg-amber-500"
|
|
2092
|
+
),
|
|
2093
|
+
style: { width: `${percentage}%` }
|
|
2094
|
+
}
|
|
2095
|
+
) }),
|
|
2096
|
+
/* @__PURE__ */ jsxs15("span", { className: "font-mono text-[11px] text-muted-foreground shrink-0", children: [
|
|
2097
|
+
completed,
|
|
2098
|
+
"/",
|
|
2099
|
+
total
|
|
2100
|
+
] })
|
|
2101
|
+
] })
|
|
2102
|
+
}
|
|
2103
|
+
)
|
|
2104
|
+
}
|
|
2105
|
+
),
|
|
2106
|
+
/* @__PURE__ */ jsx22(TooltipContent, { className: "max-w-xs text-xs", children: completed === total ? /* @__PURE__ */ jsxs15("span", { children: [
|
|
2107
|
+
"All ",
|
|
2108
|
+
total,
|
|
2109
|
+
" metadata fields completed"
|
|
2110
|
+
] }) : /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 py-0.5", children: [
|
|
2111
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between gap-4 font-medium text-xs", children: [
|
|
2112
|
+
/* @__PURE__ */ jsx22("span", { children: title }),
|
|
2113
|
+
/* @__PURE__ */ jsxs15("span", { className: "font-mono text-[11px] opacity-80", children: [
|
|
2114
|
+
completed,
|
|
2115
|
+
"/",
|
|
2116
|
+
total,
|
|
2117
|
+
" (",
|
|
2118
|
+
percentage,
|
|
2119
|
+
"%)"
|
|
2120
|
+
] })
|
|
2121
|
+
] }),
|
|
2122
|
+
missing.length > 0 && /* @__PURE__ */ jsxs15("p", { className: "text-[11px] opacity-80 leading-normal", children: [
|
|
2123
|
+
"Missing: ",
|
|
2124
|
+
missing.slice(0, 3).join(", "),
|
|
2125
|
+
missing.length > 3 ? ` +${missing.length - 3} more` : ""
|
|
2126
|
+
] })
|
|
2127
|
+
] }) })
|
|
1597
2128
|
] });
|
|
1598
2129
|
});
|
|
2130
|
+
var MetadataStatus = MetadataProgress;
|
|
2131
|
+
var ProgressStatus = MetadataProgress;
|
|
1599
2132
|
|
|
1600
|
-
// src/components/composed/columns/
|
|
1601
|
-
import {
|
|
1602
|
-
import {
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
2133
|
+
// src/components/composed/columns/organization-roles.tsx
|
|
2134
|
+
import { cn as cn19 } from "cn";
|
|
2135
|
+
import {
|
|
2136
|
+
Building2Icon,
|
|
2137
|
+
CrownIcon,
|
|
2138
|
+
NewspaperIcon,
|
|
2139
|
+
PenLineIcon,
|
|
2140
|
+
ShieldCheckIcon,
|
|
2141
|
+
UserIcon
|
|
2142
|
+
} from "lucide-react";
|
|
2143
|
+
import { forwardRef, memo as memo11 } from "react";
|
|
2144
|
+
import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2145
|
+
var OrganizationRoleBadge = forwardRef(function OrganizationRoleBadge2(_a, ref) {
|
|
2146
|
+
var _b = _a, { role, roleName, className } = _b, props = __objRest(_b, ["role", "roleName", "className"]);
|
|
2147
|
+
const roleValue = roleName != null ? roleName : role;
|
|
2148
|
+
if (!roleValue) return null;
|
|
2149
|
+
const normalized = roleValue.toLowerCase().trim();
|
|
2150
|
+
if (normalized === "owner") {
|
|
2151
|
+
return /* @__PURE__ */ jsxs16(
|
|
2152
|
+
Badge,
|
|
2153
|
+
__spreadProps(__spreadValues({
|
|
2154
|
+
ref,
|
|
2155
|
+
variant: "outline",
|
|
2156
|
+
className: cn19(
|
|
2157
|
+
"capitalize border-purple-500/30 bg-purple-500/10 text-purple-700 dark:text-purple-300 font-normal",
|
|
2158
|
+
className
|
|
2159
|
+
)
|
|
2160
|
+
}, props), {
|
|
2161
|
+
children: [
|
|
2162
|
+
/* @__PURE__ */ jsx23(
|
|
2163
|
+
CrownIcon,
|
|
2164
|
+
{
|
|
2165
|
+
"data-icon": "inline-start",
|
|
2166
|
+
className: "text-purple-600 dark:text-purple-400"
|
|
2167
|
+
}
|
|
2168
|
+
),
|
|
2169
|
+
roleValue
|
|
2170
|
+
]
|
|
2171
|
+
})
|
|
2172
|
+
);
|
|
2173
|
+
}
|
|
2174
|
+
if (normalized === "admin") {
|
|
2175
|
+
return /* @__PURE__ */ jsxs16(
|
|
2176
|
+
Badge,
|
|
2177
|
+
__spreadProps(__spreadValues({
|
|
2178
|
+
ref,
|
|
2179
|
+
variant: "outline",
|
|
2180
|
+
className: cn19(
|
|
2181
|
+
"capitalize border-blue-500/30 bg-blue-500/10 text-blue-700 dark:text-blue-300 font-normal",
|
|
2182
|
+
className
|
|
2183
|
+
)
|
|
2184
|
+
}, props), {
|
|
2185
|
+
children: [
|
|
2186
|
+
/* @__PURE__ */ jsx23(
|
|
2187
|
+
ShieldCheckIcon,
|
|
2188
|
+
{
|
|
2189
|
+
"data-icon": "inline-start",
|
|
2190
|
+
className: "text-blue-600 dark:text-blue-400"
|
|
2191
|
+
}
|
|
2192
|
+
),
|
|
2193
|
+
roleValue
|
|
2194
|
+
]
|
|
2195
|
+
})
|
|
2196
|
+
);
|
|
2197
|
+
}
|
|
2198
|
+
if (normalized === "redaktur") {
|
|
2199
|
+
return /* @__PURE__ */ jsxs16(
|
|
2200
|
+
Badge,
|
|
2201
|
+
__spreadProps(__spreadValues({
|
|
2202
|
+
ref,
|
|
2203
|
+
variant: "outline",
|
|
2204
|
+
className: cn19(
|
|
2205
|
+
"capitalize border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 font-normal",
|
|
2206
|
+
className
|
|
2207
|
+
)
|
|
2208
|
+
}, props), {
|
|
2209
|
+
children: [
|
|
2210
|
+
/* @__PURE__ */ jsx23(
|
|
2211
|
+
NewspaperIcon,
|
|
2212
|
+
{
|
|
2213
|
+
"data-icon": "inline-start",
|
|
2214
|
+
className: "text-amber-600 dark:text-amber-400"
|
|
2215
|
+
}
|
|
2216
|
+
),
|
|
2217
|
+
roleValue
|
|
2218
|
+
]
|
|
2219
|
+
})
|
|
2220
|
+
);
|
|
2221
|
+
}
|
|
2222
|
+
if (normalized === "editor") {
|
|
2223
|
+
return /* @__PURE__ */ jsxs16(
|
|
2224
|
+
Badge,
|
|
2225
|
+
__spreadProps(__spreadValues({
|
|
2226
|
+
ref,
|
|
2227
|
+
variant: "outline",
|
|
2228
|
+
className: cn19(
|
|
2229
|
+
"capitalize border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 font-normal",
|
|
2230
|
+
className
|
|
2231
|
+
)
|
|
2232
|
+
}, props), {
|
|
2233
|
+
children: [
|
|
2234
|
+
/* @__PURE__ */ jsx23(
|
|
2235
|
+
PenLineIcon,
|
|
2236
|
+
{
|
|
2237
|
+
"data-icon": "inline-start",
|
|
2238
|
+
className: "text-emerald-600 dark:text-emerald-400"
|
|
2239
|
+
}
|
|
2240
|
+
),
|
|
2241
|
+
roleValue
|
|
2242
|
+
]
|
|
2243
|
+
})
|
|
2244
|
+
);
|
|
2245
|
+
}
|
|
2246
|
+
if (normalized === "staff") {
|
|
2247
|
+
return /* @__PURE__ */ jsxs16(
|
|
2248
|
+
Badge,
|
|
2249
|
+
__spreadProps(__spreadValues({
|
|
2250
|
+
ref,
|
|
2251
|
+
variant: "outline",
|
|
2252
|
+
className: cn19(
|
|
2253
|
+
"capitalize border-slate-500/30 bg-slate-500/10 text-slate-700 dark:text-slate-300 font-normal",
|
|
2254
|
+
className
|
|
2255
|
+
)
|
|
2256
|
+
}, props), {
|
|
2257
|
+
children: [
|
|
2258
|
+
/* @__PURE__ */ jsx23(
|
|
2259
|
+
UserIcon,
|
|
2260
|
+
{
|
|
2261
|
+
"data-icon": "inline-start",
|
|
2262
|
+
className: "text-slate-600 dark:text-slate-400"
|
|
2263
|
+
}
|
|
2264
|
+
),
|
|
2265
|
+
roleValue
|
|
2266
|
+
]
|
|
2267
|
+
})
|
|
2268
|
+
);
|
|
2269
|
+
}
|
|
2270
|
+
return /* @__PURE__ */ jsxs16(
|
|
2271
|
+
Badge,
|
|
2272
|
+
__spreadProps(__spreadValues({
|
|
2273
|
+
ref,
|
|
2274
|
+
variant: "secondary",
|
|
2275
|
+
className: cn19("capitalize font-normal", className)
|
|
2276
|
+
}, props), {
|
|
2277
|
+
children: [
|
|
2278
|
+
/* @__PURE__ */ jsx23(
|
|
2279
|
+
Building2Icon,
|
|
2280
|
+
{
|
|
2281
|
+
"data-icon": "inline-start",
|
|
2282
|
+
className: "text-muted-foreground"
|
|
2283
|
+
}
|
|
2284
|
+
),
|
|
2285
|
+
roleValue
|
|
2286
|
+
]
|
|
2287
|
+
})
|
|
2288
|
+
);
|
|
2289
|
+
});
|
|
2290
|
+
OrganizationRoleBadge.displayName = "OrganizationRoleBadge";
|
|
2291
|
+
var OrganizationRoles = memo11(function OrganizationRoles2({
|
|
2292
|
+
roles,
|
|
2293
|
+
className
|
|
1606
2294
|
}) {
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
/* @__PURE__ */
|
|
1612
|
-
|
|
2295
|
+
const orgRoles = roles != null ? roles : [];
|
|
2296
|
+
if (orgRoles.length === 0) return null;
|
|
2297
|
+
if (orgRoles.length === 1) {
|
|
2298
|
+
const item = orgRoles[0];
|
|
2299
|
+
return /* @__PURE__ */ jsxs16(Tooltip, { children: [
|
|
2300
|
+
/* @__PURE__ */ jsx23(
|
|
2301
|
+
TooltipTrigger,
|
|
2302
|
+
{
|
|
2303
|
+
render: /* @__PURE__ */ jsx23(
|
|
2304
|
+
OrganizationRoleBadge,
|
|
2305
|
+
{
|
|
2306
|
+
roleName: item.roleName,
|
|
2307
|
+
className
|
|
2308
|
+
}
|
|
2309
|
+
)
|
|
2310
|
+
}
|
|
2311
|
+
),
|
|
2312
|
+
/* @__PURE__ */ jsxs16(TooltipContent, { children: [
|
|
2313
|
+
item.roleName,
|
|
2314
|
+
" at ",
|
|
2315
|
+
item.organizationName
|
|
2316
|
+
] })
|
|
2317
|
+
] });
|
|
2318
|
+
}
|
|
2319
|
+
return /* @__PURE__ */ jsxs16("div", { className: cn19("flex items-center gap-1.5", className), children: [
|
|
2320
|
+
/* @__PURE__ */ jsxs16(Tooltip, { children: [
|
|
2321
|
+
/* @__PURE__ */ jsx23(
|
|
2322
|
+
TooltipTrigger,
|
|
2323
|
+
{
|
|
2324
|
+
render: /* @__PURE__ */ jsx23(OrganizationRoleBadge, { roleName: orgRoles[0].roleName })
|
|
2325
|
+
}
|
|
2326
|
+
),
|
|
2327
|
+
/* @__PURE__ */ jsxs16(TooltipContent, { children: [
|
|
2328
|
+
orgRoles[0].roleName,
|
|
2329
|
+
" at ",
|
|
2330
|
+
orgRoles[0].organizationName
|
|
2331
|
+
] })
|
|
2332
|
+
] }),
|
|
2333
|
+
/* @__PURE__ */ jsxs16(Tooltip, { children: [
|
|
2334
|
+
/* @__PURE__ */ jsx23(
|
|
2335
|
+
TooltipTrigger,
|
|
2336
|
+
{
|
|
2337
|
+
render: /* @__PURE__ */ jsxs16(Badge, { variant: "secondary", className: "font-mono", children: [
|
|
2338
|
+
"+",
|
|
2339
|
+
orgRoles.length - 1
|
|
2340
|
+
] })
|
|
2341
|
+
}
|
|
2342
|
+
),
|
|
2343
|
+
/* @__PURE__ */ jsx23(TooltipContent, { children: /* @__PURE__ */ jsx23("div", { className: "flex flex-col", children: orgRoles.slice(1).map((item, index) => {
|
|
2344
|
+
var _a, _b;
|
|
2345
|
+
return /* @__PURE__ */ jsxs16(
|
|
2346
|
+
"span",
|
|
2347
|
+
{
|
|
2348
|
+
children: [
|
|
2349
|
+
item.roleName,
|
|
2350
|
+
" at ",
|
|
2351
|
+
item.organizationName
|
|
2352
|
+
]
|
|
2353
|
+
},
|
|
2354
|
+
(_b = item.membershipId) != null ? _b : `${(_a = item.organizationName) != null ? _a : ""}-${index}`
|
|
2355
|
+
);
|
|
2356
|
+
}) }) })
|
|
2357
|
+
] })
|
|
2358
|
+
] });
|
|
2359
|
+
});
|
|
2360
|
+
|
|
2361
|
+
// src/components/composed/columns/permission-badges.tsx
|
|
2362
|
+
import { cn as cn20 } from "cn";
|
|
2363
|
+
import { memo as memo12 } from "react";
|
|
2364
|
+
import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2365
|
+
var PermissionBadges = memo12(function PermissionBadges2({
|
|
2366
|
+
permissions,
|
|
2367
|
+
maxDisplay = 3,
|
|
2368
|
+
className
|
|
2369
|
+
}) {
|
|
2370
|
+
const perms = permissions != null ? permissions : [];
|
|
2371
|
+
if (perms.length === 0) return null;
|
|
2372
|
+
const visible = perms.slice(0, maxDisplay);
|
|
2373
|
+
const remaining = perms.slice(maxDisplay);
|
|
2374
|
+
return /* @__PURE__ */ jsxs17("div", { className: cn20("flex flex-wrap items-center gap-1", className), children: [
|
|
2375
|
+
visible.map((p) => /* @__PURE__ */ jsx24(
|
|
2376
|
+
Badge,
|
|
2377
|
+
{
|
|
2378
|
+
variant: "outline",
|
|
2379
|
+
className: "text-[10px] font-mono py-0 font-normal",
|
|
2380
|
+
children: p
|
|
2381
|
+
},
|
|
2382
|
+
p
|
|
2383
|
+
)),
|
|
2384
|
+
remaining.length > 0 && /* @__PURE__ */ jsxs17(Tooltip, { children: [
|
|
2385
|
+
/* @__PURE__ */ jsx24(
|
|
2386
|
+
TooltipTrigger,
|
|
2387
|
+
{
|
|
2388
|
+
render: /* @__PURE__ */ jsxs17(
|
|
2389
|
+
Badge,
|
|
2390
|
+
{
|
|
2391
|
+
variant: "secondary",
|
|
2392
|
+
className: "text-[10px] font-mono py-0 cursor-default font-normal",
|
|
2393
|
+
children: [
|
|
2394
|
+
"+",
|
|
2395
|
+
remaining.length
|
|
2396
|
+
]
|
|
2397
|
+
}
|
|
2398
|
+
)
|
|
2399
|
+
}
|
|
2400
|
+
),
|
|
2401
|
+
/* @__PURE__ */ jsx24(TooltipContent, { className: "max-w-xs", children: /* @__PURE__ */ jsx24("div", { className: "flex flex-col gap-0.5 text-xs font-mono", children: remaining.map((p) => /* @__PURE__ */ jsx24("span", { children: p }, p)) }) })
|
|
2402
|
+
] })
|
|
1613
2403
|
] });
|
|
1614
2404
|
});
|
|
2405
|
+
var PermissionsBadges = PermissionBadges;
|
|
2406
|
+
|
|
2407
|
+
// src/components/composed/columns/redirect-uris.tsx
|
|
2408
|
+
import { cn as cn21 } from "cn";
|
|
2409
|
+
import { memo as memo13, useMemo as useMemo3 } from "react";
|
|
2410
|
+
import { Fragment as Fragment6, jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2411
|
+
var RedirectUris = memo13(function RedirectUris2({
|
|
2412
|
+
uris,
|
|
2413
|
+
maxDisplay = 1,
|
|
2414
|
+
fallback = null,
|
|
2415
|
+
tooltipTitle = "All Redirect URIs:",
|
|
2416
|
+
className
|
|
2417
|
+
}) {
|
|
2418
|
+
const list = useMemo3(() => {
|
|
2419
|
+
if (!uris) return [];
|
|
2420
|
+
if (Array.isArray(uris)) return uris.filter(Boolean);
|
|
2421
|
+
return [uris];
|
|
2422
|
+
}, [uris]);
|
|
2423
|
+
if (list.length === 0) {
|
|
2424
|
+
if (!fallback) return null;
|
|
2425
|
+
return /* @__PURE__ */ jsx25(Fragment6, { children: fallback });
|
|
2426
|
+
}
|
|
2427
|
+
const primaryUri = list[0];
|
|
2428
|
+
const remainingCount = list.length - maxDisplay;
|
|
2429
|
+
return /* @__PURE__ */ jsxs18("div", { className: cn21("flex items-center gap-2", className), children: [
|
|
2430
|
+
/* @__PURE__ */ jsx25(
|
|
2431
|
+
"p",
|
|
2432
|
+
{
|
|
2433
|
+
className: "text-xs text-muted-foreground font-mono truncate",
|
|
2434
|
+
title: primaryUri,
|
|
2435
|
+
children: primaryUri
|
|
2436
|
+
}
|
|
2437
|
+
),
|
|
2438
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs18(Tooltip, { children: [
|
|
2439
|
+
/* @__PURE__ */ jsx25(
|
|
2440
|
+
TooltipTrigger,
|
|
2441
|
+
{
|
|
2442
|
+
render: /* @__PURE__ */ jsxs18(Badge, { variant: "outline", className: "font-mono cursor-pointer", children: [
|
|
2443
|
+
"+",
|
|
2444
|
+
remainingCount
|
|
2445
|
+
] })
|
|
2446
|
+
}
|
|
2447
|
+
),
|
|
2448
|
+
/* @__PURE__ */ jsx25(TooltipContent, { className: "text-xs font-mono", children: /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-1", children: [
|
|
2449
|
+
tooltipTitle && /* @__PURE__ */ jsx25("p", { className: "font-semibold text-xs", children: tooltipTitle }),
|
|
2450
|
+
list.map((uri) => /* @__PURE__ */ jsx25("span", { children: uri }, uri))
|
|
2451
|
+
] }) })
|
|
2452
|
+
] })
|
|
2453
|
+
] });
|
|
2454
|
+
});
|
|
2455
|
+
var RedirectUriLabel = RedirectUris;
|
|
2456
|
+
var UrisList = RedirectUris;
|
|
2457
|
+
var UrisLabel = RedirectUris;
|
|
2458
|
+
|
|
2459
|
+
// src/components/composed/columns/running-status.tsx
|
|
2460
|
+
import { cn as cn22 } from "cn";
|
|
2461
|
+
import { memo as memo14 } from "react";
|
|
2462
|
+
import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2463
|
+
var RunningStatus = memo14(function RunningStatus2({
|
|
2464
|
+
count = 0,
|
|
2465
|
+
isRunning,
|
|
2466
|
+
accessTokens,
|
|
2467
|
+
refreshTokens,
|
|
2468
|
+
usersCount,
|
|
2469
|
+
runningLabel = "Running",
|
|
2470
|
+
idleLabel = "Idle",
|
|
2471
|
+
tooltipTitle,
|
|
2472
|
+
className
|
|
2473
|
+
}) {
|
|
2474
|
+
const activeCount = count != null ? count : 0;
|
|
2475
|
+
const running = isRunning != null ? isRunning : activeCount > 0;
|
|
2476
|
+
const hasDetails = accessTokens != null && accessTokens > 0 || refreshTokens != null && refreshTokens > 0 || usersCount != null && usersCount > 0;
|
|
2477
|
+
const title = tooltipTitle != null ? tooltipTitle : `${activeCount} Active Token${activeCount === 1 ? "" : "s"}`;
|
|
2478
|
+
return /* @__PURE__ */ jsxs19(Tooltip, { children: [
|
|
2479
|
+
/* @__PURE__ */ jsx26(
|
|
2480
|
+
TooltipTrigger,
|
|
2481
|
+
{
|
|
2482
|
+
render: /* @__PURE__ */ jsx26(
|
|
2483
|
+
"div",
|
|
2484
|
+
{
|
|
2485
|
+
className: cn22(
|
|
2486
|
+
"inline-flex items-center cursor-pointer select-none",
|
|
2487
|
+
className
|
|
2488
|
+
),
|
|
2489
|
+
children: running ? /* @__PURE__ */ jsxs19(
|
|
2490
|
+
Badge,
|
|
2491
|
+
{
|
|
2492
|
+
variant: "outline",
|
|
2493
|
+
className: "border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 gap-1.5 text-xs font-normal",
|
|
2494
|
+
children: [
|
|
2495
|
+
/* @__PURE__ */ jsx26("span", { className: "size-1.5 rounded-full bg-emerald-500 animate-pulse" }),
|
|
2496
|
+
runningLabel,
|
|
2497
|
+
" (",
|
|
2498
|
+
activeCount,
|
|
2499
|
+
")"
|
|
2500
|
+
]
|
|
2501
|
+
}
|
|
2502
|
+
) : /* @__PURE__ */ jsxs19(
|
|
2503
|
+
Badge,
|
|
2504
|
+
{
|
|
2505
|
+
variant: "outline",
|
|
2506
|
+
className: "border-border/60 bg-muted/40 text-muted-foreground gap-1.5 text-xs font-normal",
|
|
2507
|
+
children: [
|
|
2508
|
+
/* @__PURE__ */ jsx26("span", { className: "size-1.5 rounded-full bg-muted-foreground/40" }),
|
|
2509
|
+
idleLabel
|
|
2510
|
+
]
|
|
2511
|
+
}
|
|
2512
|
+
)
|
|
2513
|
+
}
|
|
2514
|
+
)
|
|
2515
|
+
}
|
|
2516
|
+
),
|
|
2517
|
+
/* @__PURE__ */ jsx26(TooltipContent, { className: "text-xs", children: running ? hasDetails ? /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-1 py-0.5", children: [
|
|
2518
|
+
/* @__PURE__ */ jsx26("span", { className: "font-medium text-xs", children: title }),
|
|
2519
|
+
/* @__PURE__ */ jsxs19("div", { className: "space-y-0.5 text-[11px] opacity-80", children: [
|
|
2520
|
+
accessTokens != null && /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between gap-4", children: [
|
|
2521
|
+
/* @__PURE__ */ jsx26("span", { children: "Access tokens" }),
|
|
2522
|
+
/* @__PURE__ */ jsx26("span", { className: "font-mono", children: accessTokens })
|
|
2523
|
+
] }),
|
|
2524
|
+
refreshTokens != null && /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between gap-4", children: [
|
|
2525
|
+
/* @__PURE__ */ jsx26("span", { children: "Refresh tokens" }),
|
|
2526
|
+
/* @__PURE__ */ jsx26("span", { className: "font-mono", children: refreshTokens })
|
|
2527
|
+
] }),
|
|
2528
|
+
usersCount != null && usersCount > 0 && /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between gap-4", children: [
|
|
2529
|
+
/* @__PURE__ */ jsx26("span", { children: "Authorized users" }),
|
|
2530
|
+
/* @__PURE__ */ jsx26("span", { className: "font-mono", children: usersCount })
|
|
2531
|
+
] })
|
|
2532
|
+
] })
|
|
2533
|
+
] }) : /* @__PURE__ */ jsx26("span", { children: title }) : /* @__PURE__ */ jsx26("span", { children: "No active tokens" }) })
|
|
2534
|
+
] });
|
|
2535
|
+
});
|
|
2536
|
+
var TokenActivity = RunningStatus;
|
|
2537
|
+
var ActiveTokensStatus = RunningStatus;
|
|
2538
|
+
|
|
2539
|
+
// src/components/composed/columns/user-role.tsx
|
|
2540
|
+
import { cn as cn23 } from "cn";
|
|
2541
|
+
import {
|
|
2542
|
+
BriefcaseIcon,
|
|
2543
|
+
ShieldIcon,
|
|
2544
|
+
UserIcon as UserIcon2,
|
|
2545
|
+
UserStarIcon
|
|
2546
|
+
} from "lucide-react";
|
|
2547
|
+
import { memo as memo15 } from "react";
|
|
2548
|
+
import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2549
|
+
var UserRole = memo15(function UserRole2({
|
|
2550
|
+
role,
|
|
2551
|
+
className
|
|
2552
|
+
}) {
|
|
2553
|
+
if (!role) return null;
|
|
2554
|
+
const normalized = role.toLowerCase().trim();
|
|
2555
|
+
if (normalized === "admin") {
|
|
2556
|
+
return /* @__PURE__ */ jsxs20(
|
|
2557
|
+
Badge,
|
|
2558
|
+
{
|
|
2559
|
+
variant: "outline",
|
|
2560
|
+
className: cn23(
|
|
2561
|
+
"capitalize border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300",
|
|
2562
|
+
className
|
|
2563
|
+
),
|
|
2564
|
+
children: [
|
|
2565
|
+
/* @__PURE__ */ jsx27(
|
|
2566
|
+
UserStarIcon,
|
|
2567
|
+
{
|
|
2568
|
+
"data-icon": "inline-start",
|
|
2569
|
+
className: "text-amber-500 dark:text-amber-400"
|
|
2570
|
+
}
|
|
2571
|
+
),
|
|
2572
|
+
role
|
|
2573
|
+
]
|
|
2574
|
+
}
|
|
2575
|
+
);
|
|
2576
|
+
}
|
|
2577
|
+
if (normalized === "client") {
|
|
2578
|
+
return /* @__PURE__ */ jsxs20(
|
|
2579
|
+
Badge,
|
|
2580
|
+
{
|
|
2581
|
+
variant: "outline",
|
|
2582
|
+
className: cn23(
|
|
2583
|
+
"capitalize border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-300",
|
|
2584
|
+
className
|
|
2585
|
+
),
|
|
2586
|
+
children: [
|
|
2587
|
+
/* @__PURE__ */ jsx27(
|
|
2588
|
+
BriefcaseIcon,
|
|
2589
|
+
{
|
|
2590
|
+
"data-icon": "inline-start",
|
|
2591
|
+
className: "text-sky-500 dark:text-sky-400"
|
|
2592
|
+
}
|
|
2593
|
+
),
|
|
2594
|
+
role
|
|
2595
|
+
]
|
|
2596
|
+
}
|
|
2597
|
+
);
|
|
2598
|
+
}
|
|
2599
|
+
if (normalized === "user") {
|
|
2600
|
+
return /* @__PURE__ */ jsxs20(Badge, { variant: "outline", className: cn23("capitalize", className), children: [
|
|
2601
|
+
/* @__PURE__ */ jsx27(UserIcon2, { "data-icon": "inline-start", className: "text-muted-foreground" }),
|
|
2602
|
+
role
|
|
2603
|
+
] });
|
|
2604
|
+
}
|
|
2605
|
+
return /* @__PURE__ */ jsxs20(
|
|
2606
|
+
Badge,
|
|
2607
|
+
{
|
|
2608
|
+
variant: "secondary",
|
|
2609
|
+
className: cn23("capitalize font-normal", className),
|
|
2610
|
+
children: [
|
|
2611
|
+
/* @__PURE__ */ jsx27(ShieldIcon, { "data-icon": "inline-start", className: "text-muted-foreground" }),
|
|
2612
|
+
role
|
|
2613
|
+
]
|
|
2614
|
+
}
|
|
2615
|
+
);
|
|
2616
|
+
});
|
|
2617
|
+
|
|
2618
|
+
// src/components/composed/columns/user-status.tsx
|
|
2619
|
+
import { cn as cn24 } from "cn";
|
|
2620
|
+
import { memo as memo16 } from "react";
|
|
2621
|
+
import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2622
|
+
var UserStatus = memo16(function UserStatus2({
|
|
2623
|
+
status,
|
|
2624
|
+
label,
|
|
2625
|
+
activeLabel = "Active",
|
|
2626
|
+
inactiveLabel,
|
|
2627
|
+
className
|
|
2628
|
+
}) {
|
|
2629
|
+
var _a;
|
|
2630
|
+
const isInactive = typeof status === "string" ? status.toLowerCase() !== "active" : Boolean(status);
|
|
2631
|
+
if (isInactive) {
|
|
2632
|
+
const displayLabel = (_a = label != null ? label : inactiveLabel) != null ? _a : typeof status === "string" ? status : "Inactive";
|
|
2633
|
+
return /* @__PURE__ */ jsxs21(
|
|
2634
|
+
Badge,
|
|
2635
|
+
{
|
|
2636
|
+
variant: "outline",
|
|
2637
|
+
className: cn24(
|
|
2638
|
+
"capitalize border-destructive/30 bg-destructive/10 text-destructive dark:text-red-400 gap-1.5 font-normal",
|
|
2639
|
+
className
|
|
2640
|
+
),
|
|
2641
|
+
children: [
|
|
2642
|
+
/* @__PURE__ */ jsx28("span", { className: "size-1.5 rounded-full bg-destructive" }),
|
|
2643
|
+
displayLabel
|
|
2644
|
+
]
|
|
2645
|
+
}
|
|
2646
|
+
);
|
|
2647
|
+
}
|
|
2648
|
+
return /* @__PURE__ */ jsxs21(
|
|
2649
|
+
Badge,
|
|
2650
|
+
{
|
|
2651
|
+
variant: "outline",
|
|
2652
|
+
className: cn24(
|
|
2653
|
+
"capitalize border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 gap-1.5 font-normal",
|
|
2654
|
+
className
|
|
2655
|
+
),
|
|
2656
|
+
children: [
|
|
2657
|
+
/* @__PURE__ */ jsx28("span", { className: "size-1.5 rounded-full bg-emerald-500" }),
|
|
2658
|
+
label != null ? label : activeLabel
|
|
2659
|
+
]
|
|
2660
|
+
}
|
|
2661
|
+
);
|
|
2662
|
+
});
|
|
2663
|
+
var ItemStatus = UserStatus;
|
|
2664
|
+
var StatusBadge = UserStatus;
|
|
1615
2665
|
|
|
1616
2666
|
// src/components/composed/data-table/data-table.tsx
|
|
1617
2667
|
import {
|
|
@@ -1620,22 +2670,22 @@ import {
|
|
|
1620
2670
|
} from "@tanstack/react-table";
|
|
1621
2671
|
import { FolderOpenIcon } from "lucide-react";
|
|
1622
2672
|
import { useRouter as useRouter2 } from "next/navigation";
|
|
1623
|
-
import { useMemo as
|
|
2673
|
+
import { useMemo as useMemo5, useState as useState6 } from "react";
|
|
1624
2674
|
|
|
1625
2675
|
// src/components/composed/state-empty.tsx
|
|
1626
|
-
import { memo as
|
|
2676
|
+
import { memo as memo17 } from "react";
|
|
1627
2677
|
|
|
1628
2678
|
// src/components/ui/empty.tsx
|
|
1629
2679
|
import { cva as cva4 } from "class-variance-authority";
|
|
1630
|
-
import { cn as
|
|
1631
|
-
import { jsx as
|
|
2680
|
+
import { cn as cn25 } from "cn";
|
|
2681
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1632
2682
|
function Empty(_a) {
|
|
1633
2683
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1634
|
-
return /* @__PURE__ */
|
|
2684
|
+
return /* @__PURE__ */ jsx29(
|
|
1635
2685
|
"div",
|
|
1636
2686
|
__spreadValues({
|
|
1637
2687
|
"data-slot": "empty",
|
|
1638
|
-
className:
|
|
2688
|
+
className: cn25(
|
|
1639
2689
|
"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",
|
|
1640
2690
|
className
|
|
1641
2691
|
)
|
|
@@ -1644,11 +2694,11 @@ function Empty(_a) {
|
|
|
1644
2694
|
}
|
|
1645
2695
|
function EmptyHeader(_a) {
|
|
1646
2696
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1647
|
-
return /* @__PURE__ */
|
|
2697
|
+
return /* @__PURE__ */ jsx29(
|
|
1648
2698
|
"div",
|
|
1649
2699
|
__spreadValues({
|
|
1650
2700
|
"data-slot": "empty-header",
|
|
1651
|
-
className:
|
|
2701
|
+
className: cn25("flex max-w-sm flex-col items-center gap-1", className)
|
|
1652
2702
|
}, props)
|
|
1653
2703
|
);
|
|
1654
2704
|
}
|
|
@@ -1674,22 +2724,22 @@ function EmptyMedia(_a) {
|
|
|
1674
2724
|
"className",
|
|
1675
2725
|
"variant"
|
|
1676
2726
|
]);
|
|
1677
|
-
return /* @__PURE__ */
|
|
2727
|
+
return /* @__PURE__ */ jsx29(
|
|
1678
2728
|
"div",
|
|
1679
2729
|
__spreadValues({
|
|
1680
2730
|
"data-slot": "empty-icon",
|
|
1681
2731
|
"data-variant": variant,
|
|
1682
|
-
className:
|
|
2732
|
+
className: cn25(emptyMediaVariants({ variant, className }))
|
|
1683
2733
|
}, props)
|
|
1684
2734
|
);
|
|
1685
2735
|
}
|
|
1686
2736
|
function EmptyTitle(_a) {
|
|
1687
2737
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1688
|
-
return /* @__PURE__ */
|
|
2738
|
+
return /* @__PURE__ */ jsx29(
|
|
1689
2739
|
"div",
|
|
1690
2740
|
__spreadValues({
|
|
1691
2741
|
"data-slot": "empty-title",
|
|
1692
|
-
className:
|
|
2742
|
+
className: cn25(
|
|
1693
2743
|
"font-heading text-sm font-medium tracking-tight",
|
|
1694
2744
|
className
|
|
1695
2745
|
)
|
|
@@ -1698,11 +2748,11 @@ function EmptyTitle(_a) {
|
|
|
1698
2748
|
}
|
|
1699
2749
|
function EmptyDescription(_a) {
|
|
1700
2750
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1701
|
-
return /* @__PURE__ */
|
|
2751
|
+
return /* @__PURE__ */ jsx29(
|
|
1702
2752
|
"div",
|
|
1703
2753
|
__spreadValues({
|
|
1704
2754
|
"data-slot": "empty-description",
|
|
1705
|
-
className:
|
|
2755
|
+
className: cn25(
|
|
1706
2756
|
"text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
1707
2757
|
className
|
|
1708
2758
|
)
|
|
@@ -1711,11 +2761,11 @@ function EmptyDescription(_a) {
|
|
|
1711
2761
|
}
|
|
1712
2762
|
function EmptyContent(_a) {
|
|
1713
2763
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1714
|
-
return /* @__PURE__ */
|
|
2764
|
+
return /* @__PURE__ */ jsx29(
|
|
1715
2765
|
"div",
|
|
1716
2766
|
__spreadValues({
|
|
1717
2767
|
"data-slot": "empty-content",
|
|
1718
|
-
className:
|
|
2768
|
+
className: cn25(
|
|
1719
2769
|
"flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance",
|
|
1720
2770
|
className
|
|
1721
2771
|
)
|
|
@@ -1724,18 +2774,18 @@ function EmptyContent(_a) {
|
|
|
1724
2774
|
}
|
|
1725
2775
|
|
|
1726
2776
|
// src/lib/utils.ts
|
|
1727
|
-
import { cn as
|
|
2777
|
+
import { cn as cn26 } from "cn";
|
|
1728
2778
|
|
|
1729
2779
|
// src/components/composed/state-empty.tsx
|
|
1730
|
-
import { jsx as
|
|
2780
|
+
import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1731
2781
|
function renderStateIcon(icon) {
|
|
1732
2782
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
1733
2783
|
const IconComp = icon;
|
|
1734
|
-
return /* @__PURE__ */
|
|
2784
|
+
return /* @__PURE__ */ jsx30(IconComp, {});
|
|
1735
2785
|
}
|
|
1736
2786
|
return icon;
|
|
1737
2787
|
}
|
|
1738
|
-
var StateEmpty =
|
|
2788
|
+
var StateEmpty = memo17(function StateEmpty2({
|
|
1739
2789
|
icon,
|
|
1740
2790
|
title,
|
|
1741
2791
|
description,
|
|
@@ -1748,17 +2798,17 @@ var StateEmpty = memo8(function StateEmpty2({
|
|
|
1748
2798
|
const actionHandler = isFunctionAction ? render : onClick;
|
|
1749
2799
|
const buttonRender = isFunctionAction ? void 0 : render;
|
|
1750
2800
|
const hasAction = Boolean(buttonText || render || onClick);
|
|
1751
|
-
return /* @__PURE__ */
|
|
2801
|
+
return /* @__PURE__ */ jsxs22(
|
|
1752
2802
|
Empty,
|
|
1753
2803
|
{
|
|
1754
|
-
className:
|
|
2804
|
+
className: cn26("w-full", state === "outline" && "border border-dashed"),
|
|
1755
2805
|
children: [
|
|
1756
|
-
/* @__PURE__ */
|
|
1757
|
-
/* @__PURE__ */
|
|
1758
|
-
/* @__PURE__ */
|
|
1759
|
-
/* @__PURE__ */
|
|
2806
|
+
/* @__PURE__ */ jsxs22(EmptyHeader, { children: [
|
|
2807
|
+
/* @__PURE__ */ jsx30(EmptyMedia, { variant: "icon", children: renderStateIcon(icon) }),
|
|
2808
|
+
/* @__PURE__ */ jsx30(EmptyTitle, { children: title }),
|
|
2809
|
+
/* @__PURE__ */ jsx30(EmptyDescription, { children: description })
|
|
1760
2810
|
] }),
|
|
1761
|
-
hasAction && /* @__PURE__ */
|
|
2811
|
+
hasAction && /* @__PURE__ */ jsx30(EmptyContent, { children: /* @__PURE__ */ jsx30(
|
|
1762
2812
|
Button,
|
|
1763
2813
|
{
|
|
1764
2814
|
variant: "outline",
|
|
@@ -1775,20 +2825,20 @@ var StateEmpty = memo8(function StateEmpty2({
|
|
|
1775
2825
|
});
|
|
1776
2826
|
|
|
1777
2827
|
// src/components/ui/table.tsx
|
|
1778
|
-
import { cn as
|
|
1779
|
-
import { jsx as
|
|
2828
|
+
import { cn as cn27 } from "cn";
|
|
2829
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1780
2830
|
function Table(_a) {
|
|
1781
2831
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1782
|
-
return /* @__PURE__ */
|
|
2832
|
+
return /* @__PURE__ */ jsx31(
|
|
1783
2833
|
"div",
|
|
1784
2834
|
{
|
|
1785
2835
|
"data-slot": "table-container",
|
|
1786
2836
|
className: "relative w-full overflow-x-auto",
|
|
1787
|
-
children: /* @__PURE__ */
|
|
2837
|
+
children: /* @__PURE__ */ jsx31(
|
|
1788
2838
|
"table",
|
|
1789
2839
|
__spreadValues({
|
|
1790
2840
|
"data-slot": "table",
|
|
1791
|
-
className:
|
|
2841
|
+
className: cn27("w-full caption-bottom text-xs", className)
|
|
1792
2842
|
}, props)
|
|
1793
2843
|
)
|
|
1794
2844
|
}
|
|
@@ -1796,31 +2846,31 @@ function Table(_a) {
|
|
|
1796
2846
|
}
|
|
1797
2847
|
function TableHeader(_a) {
|
|
1798
2848
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1799
|
-
return /* @__PURE__ */
|
|
2849
|
+
return /* @__PURE__ */ jsx31(
|
|
1800
2850
|
"thead",
|
|
1801
2851
|
__spreadValues({
|
|
1802
2852
|
"data-slot": "table-header",
|
|
1803
|
-
className:
|
|
2853
|
+
className: cn27("[&_tr]:border-b", className)
|
|
1804
2854
|
}, props)
|
|
1805
2855
|
);
|
|
1806
2856
|
}
|
|
1807
2857
|
function TableBody(_a) {
|
|
1808
2858
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1809
|
-
return /* @__PURE__ */
|
|
2859
|
+
return /* @__PURE__ */ jsx31(
|
|
1810
2860
|
"tbody",
|
|
1811
2861
|
__spreadValues({
|
|
1812
2862
|
"data-slot": "table-body",
|
|
1813
|
-
className:
|
|
2863
|
+
className: cn27("[&_tr:last-child]:border-0", className)
|
|
1814
2864
|
}, props)
|
|
1815
2865
|
);
|
|
1816
2866
|
}
|
|
1817
2867
|
function TableRow(_a) {
|
|
1818
2868
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1819
|
-
return /* @__PURE__ */
|
|
2869
|
+
return /* @__PURE__ */ jsx31(
|
|
1820
2870
|
"tr",
|
|
1821
2871
|
__spreadValues({
|
|
1822
2872
|
"data-slot": "table-row",
|
|
1823
|
-
className:
|
|
2873
|
+
className: cn27(
|
|
1824
2874
|
"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",
|
|
1825
2875
|
className
|
|
1826
2876
|
)
|
|
@@ -1829,11 +2879,11 @@ function TableRow(_a) {
|
|
|
1829
2879
|
}
|
|
1830
2880
|
function TableHead(_a) {
|
|
1831
2881
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1832
|
-
return /* @__PURE__ */
|
|
2882
|
+
return /* @__PURE__ */ jsx31(
|
|
1833
2883
|
"th",
|
|
1834
2884
|
__spreadValues({
|
|
1835
2885
|
"data-slot": "table-head",
|
|
1836
|
-
className:
|
|
2886
|
+
className: cn27(
|
|
1837
2887
|
"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
|
|
1838
2888
|
className
|
|
1839
2889
|
)
|
|
@@ -1842,11 +2892,11 @@ function TableHead(_a) {
|
|
|
1842
2892
|
}
|
|
1843
2893
|
function TableCell(_a) {
|
|
1844
2894
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1845
|
-
return /* @__PURE__ */
|
|
2895
|
+
return /* @__PURE__ */ jsx31(
|
|
1846
2896
|
"td",
|
|
1847
2897
|
__spreadValues({
|
|
1848
2898
|
"data-slot": "table-cell",
|
|
1849
|
-
className:
|
|
2899
|
+
className: cn27(
|
|
1850
2900
|
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
|
|
1851
2901
|
className
|
|
1852
2902
|
)
|
|
@@ -1899,19 +2949,19 @@ import {
|
|
|
1899
2949
|
flexRender
|
|
1900
2950
|
} from "@tanstack/react-table";
|
|
1901
2951
|
import { SearchXIcon } from "lucide-react";
|
|
1902
|
-
import { jsx as
|
|
2952
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1903
2953
|
function DataTableContentBody({
|
|
1904
2954
|
table,
|
|
1905
2955
|
columns
|
|
1906
2956
|
}) {
|
|
1907
2957
|
const rows = table.getRowModel().rows;
|
|
1908
2958
|
if (rows == null ? void 0 : rows.length) {
|
|
1909
|
-
return /* @__PURE__ */
|
|
2959
|
+
return /* @__PURE__ */ jsx32(TableBody, { children: rows.map((row) => /* @__PURE__ */ jsx32(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx32(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) });
|
|
1910
2960
|
}
|
|
1911
|
-
return /* @__PURE__ */
|
|
2961
|
+
return /* @__PURE__ */ jsx32(TableBody, { children: /* @__PURE__ */ jsx32(TableRow, { children: /* @__PURE__ */ jsx32(TableCell, { colSpan: columns.length, className: "h-48 text-center", children: /* @__PURE__ */ jsx32(
|
|
1912
2962
|
StateEmpty,
|
|
1913
2963
|
{
|
|
1914
|
-
icon: /* @__PURE__ */
|
|
2964
|
+
icon: /* @__PURE__ */ jsx32(SearchXIcon, {}),
|
|
1915
2965
|
title: "No matching results",
|
|
1916
2966
|
description: "No records matched your search query or filter criteria.",
|
|
1917
2967
|
buttonText: "Clear search & filters",
|
|
@@ -1925,18 +2975,18 @@ function DataTableContentBody({
|
|
|
1925
2975
|
|
|
1926
2976
|
// src/components/composed/data-table/table-content-header.tsx
|
|
1927
2977
|
import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
1928
|
-
import { jsx as
|
|
2978
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1929
2979
|
function DataTableContentHeader({
|
|
1930
2980
|
table
|
|
1931
2981
|
}) {
|
|
1932
|
-
return /* @__PURE__ */
|
|
2982
|
+
return /* @__PURE__ */ jsx33(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx33(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx33(TableHead, { children: header.isPlaceholder ? null : flexRender2(
|
|
1933
2983
|
header.column.columnDef.header,
|
|
1934
2984
|
header.getContext()
|
|
1935
2985
|
) }, header.id)) }, headerGroup.id)) });
|
|
1936
2986
|
}
|
|
1937
2987
|
|
|
1938
2988
|
// src/components/composed/data-table/table-footer-entries.tsx
|
|
1939
|
-
import { jsx as
|
|
2989
|
+
import { jsx as jsx34, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1940
2990
|
function DataTableFooterEntries({
|
|
1941
2991
|
table
|
|
1942
2992
|
}) {
|
|
@@ -1947,17 +2997,17 @@ function DataTableFooterEntries({
|
|
|
1947
2997
|
const totalRows = table.getFilteredRowModel().rows.length;
|
|
1948
2998
|
const startRow = totalRows === 0 ? 0 : pageIndex * pageSize + 1;
|
|
1949
2999
|
const endRow = Math.min((pageIndex + 1) * pageSize, totalRows);
|
|
1950
|
-
return /* @__PURE__ */
|
|
3000
|
+
return /* @__PURE__ */ jsxs23("div", { className: "flex-1 text-xs text-muted-foreground", children: [
|
|
1951
3001
|
"Showing",
|
|
1952
3002
|
" ",
|
|
1953
|
-
/* @__PURE__ */
|
|
3003
|
+
/* @__PURE__ */ jsxs23("span", { className: "font-medium text-foreground", children: [
|
|
1954
3004
|
startRow,
|
|
1955
3005
|
"-",
|
|
1956
3006
|
endRow
|
|
1957
3007
|
] }),
|
|
1958
3008
|
" ",
|
|
1959
3009
|
"of ",
|
|
1960
|
-
/* @__PURE__ */
|
|
3010
|
+
/* @__PURE__ */ jsx34("span", { className: "font-medium text-foreground", children: totalRows }),
|
|
1961
3011
|
" ",
|
|
1962
3012
|
"entries."
|
|
1963
3013
|
] });
|
|
@@ -1970,106 +3020,106 @@ import {
|
|
|
1970
3020
|
ChevronsLeftIcon,
|
|
1971
3021
|
ChevronsRightIcon
|
|
1972
3022
|
} from "lucide-react";
|
|
1973
|
-
import { jsx as
|
|
3023
|
+
import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1974
3024
|
function DataTableFooterPagination({
|
|
1975
3025
|
table
|
|
1976
3026
|
}) {
|
|
1977
|
-
return /* @__PURE__ */
|
|
1978
|
-
/* @__PURE__ */
|
|
1979
|
-
/* @__PURE__ */
|
|
3027
|
+
return /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1", children: [
|
|
3028
|
+
/* @__PURE__ */ jsxs24(Tooltip, { children: [
|
|
3029
|
+
/* @__PURE__ */ jsx35(
|
|
1980
3030
|
TooltipTrigger,
|
|
1981
3031
|
{
|
|
1982
|
-
render: /* @__PURE__ */
|
|
3032
|
+
render: /* @__PURE__ */ jsx35(
|
|
1983
3033
|
Button,
|
|
1984
3034
|
{
|
|
1985
3035
|
variant: "outline",
|
|
1986
3036
|
size: "icon-xs",
|
|
1987
3037
|
onClick: () => table.firstPage(),
|
|
1988
3038
|
disabled: !table.getCanPreviousPage(),
|
|
1989
|
-
children: /* @__PURE__ */
|
|
3039
|
+
children: /* @__PURE__ */ jsx35(ChevronsLeftIcon, {})
|
|
1990
3040
|
}
|
|
1991
3041
|
)
|
|
1992
3042
|
}
|
|
1993
3043
|
),
|
|
1994
|
-
/* @__PURE__ */
|
|
3044
|
+
/* @__PURE__ */ jsx35(TooltipContent, { children: "Go to first page" })
|
|
1995
3045
|
] }),
|
|
1996
|
-
/* @__PURE__ */
|
|
1997
|
-
/* @__PURE__ */
|
|
3046
|
+
/* @__PURE__ */ jsxs24(Tooltip, { children: [
|
|
3047
|
+
/* @__PURE__ */ jsx35(
|
|
1998
3048
|
TooltipTrigger,
|
|
1999
3049
|
{
|
|
2000
|
-
render: /* @__PURE__ */
|
|
3050
|
+
render: /* @__PURE__ */ jsx35(
|
|
2001
3051
|
Button,
|
|
2002
3052
|
{
|
|
2003
3053
|
variant: "outline",
|
|
2004
3054
|
size: "icon-xs",
|
|
2005
3055
|
onClick: () => table.previousPage(),
|
|
2006
3056
|
disabled: !table.getCanPreviousPage(),
|
|
2007
|
-
children: /* @__PURE__ */
|
|
3057
|
+
children: /* @__PURE__ */ jsx35(ChevronLeftIcon, {})
|
|
2008
3058
|
}
|
|
2009
3059
|
)
|
|
2010
3060
|
}
|
|
2011
3061
|
),
|
|
2012
|
-
/* @__PURE__ */
|
|
3062
|
+
/* @__PURE__ */ jsx35(TooltipContent, { children: "Go to previous page" })
|
|
2013
3063
|
] }),
|
|
2014
|
-
/* @__PURE__ */
|
|
2015
|
-
/* @__PURE__ */
|
|
3064
|
+
/* @__PURE__ */ jsxs24(Tooltip, { children: [
|
|
3065
|
+
/* @__PURE__ */ jsx35(
|
|
2016
3066
|
TooltipTrigger,
|
|
2017
3067
|
{
|
|
2018
|
-
render: /* @__PURE__ */
|
|
3068
|
+
render: /* @__PURE__ */ jsx35(
|
|
2019
3069
|
Button,
|
|
2020
3070
|
{
|
|
2021
3071
|
variant: "outline",
|
|
2022
3072
|
size: "icon-xs",
|
|
2023
3073
|
onClick: () => table.nextPage(),
|
|
2024
3074
|
disabled: !table.getCanNextPage(),
|
|
2025
|
-
children: /* @__PURE__ */
|
|
3075
|
+
children: /* @__PURE__ */ jsx35(ChevronRightIcon3, {})
|
|
2026
3076
|
}
|
|
2027
3077
|
)
|
|
2028
3078
|
}
|
|
2029
3079
|
),
|
|
2030
|
-
/* @__PURE__ */
|
|
3080
|
+
/* @__PURE__ */ jsx35(TooltipContent, { children: "Go to next page" })
|
|
2031
3081
|
] }),
|
|
2032
|
-
/* @__PURE__ */
|
|
2033
|
-
/* @__PURE__ */
|
|
3082
|
+
/* @__PURE__ */ jsxs24(Tooltip, { children: [
|
|
3083
|
+
/* @__PURE__ */ jsx35(
|
|
2034
3084
|
TooltipTrigger,
|
|
2035
3085
|
{
|
|
2036
|
-
render: /* @__PURE__ */
|
|
3086
|
+
render: /* @__PURE__ */ jsx35(
|
|
2037
3087
|
Button,
|
|
2038
3088
|
{
|
|
2039
3089
|
variant: "outline",
|
|
2040
3090
|
size: "icon-xs",
|
|
2041
3091
|
onClick: () => table.lastPage(),
|
|
2042
3092
|
disabled: !table.getCanNextPage(),
|
|
2043
|
-
children: /* @__PURE__ */
|
|
3093
|
+
children: /* @__PURE__ */ jsx35(ChevronsRightIcon, {})
|
|
2044
3094
|
}
|
|
2045
3095
|
)
|
|
2046
3096
|
}
|
|
2047
3097
|
),
|
|
2048
|
-
/* @__PURE__ */
|
|
3098
|
+
/* @__PURE__ */ jsx35(TooltipContent, { children: "Go to last page" })
|
|
2049
3099
|
] })
|
|
2050
3100
|
] });
|
|
2051
3101
|
}
|
|
2052
3102
|
|
|
2053
3103
|
// src/components/composed/data-table/table-header-add.tsx
|
|
2054
3104
|
import { PlusIcon } from "lucide-react";
|
|
2055
|
-
import { Fragment, jsx as
|
|
3105
|
+
import { Fragment as Fragment7, jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2056
3106
|
function DataTableHeaderAdd({
|
|
2057
3107
|
onAdd,
|
|
2058
3108
|
addLabel
|
|
2059
3109
|
}) {
|
|
2060
|
-
return /* @__PURE__ */
|
|
2061
|
-
/* @__PURE__ */
|
|
2062
|
-
/* @__PURE__ */
|
|
3110
|
+
return /* @__PURE__ */ jsxs25(Fragment7, { children: [
|
|
3111
|
+
/* @__PURE__ */ jsxs25(Tooltip, { children: [
|
|
3112
|
+
/* @__PURE__ */ jsx36(
|
|
2063
3113
|
TooltipTrigger,
|
|
2064
3114
|
{
|
|
2065
3115
|
className: "flex sm:hidden",
|
|
2066
|
-
render: /* @__PURE__ */
|
|
3116
|
+
render: /* @__PURE__ */ jsx36(Button, { variant: "default", size: "icon", onClick: onAdd, children: /* @__PURE__ */ jsx36(PlusIcon, {}) })
|
|
2067
3117
|
}
|
|
2068
3118
|
),
|
|
2069
|
-
/* @__PURE__ */
|
|
3119
|
+
/* @__PURE__ */ jsx36(TooltipContent, { children: addLabel != null ? addLabel : "Add" })
|
|
2070
3120
|
] }),
|
|
2071
|
-
/* @__PURE__ */
|
|
2072
|
-
/* @__PURE__ */
|
|
3121
|
+
/* @__PURE__ */ jsxs25(Button, { variant: "default", onClick: onAdd, className: "hidden sm:flex", children: [
|
|
3122
|
+
/* @__PURE__ */ jsx36(PlusIcon, {}),
|
|
2073
3123
|
addLabel != null ? addLabel : "Add"
|
|
2074
3124
|
] })
|
|
2075
3125
|
] });
|
|
@@ -2222,7 +3272,7 @@ function printTable(headers, rows, title = "Data Export") {
|
|
|
2222
3272
|
}
|
|
2223
3273
|
|
|
2224
3274
|
// src/components/composed/data-table/table-header-download.tsx
|
|
2225
|
-
import { jsx as
|
|
3275
|
+
import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2226
3276
|
function getTableExportData(table) {
|
|
2227
3277
|
const columns = table.getAllColumns().filter(
|
|
2228
3278
|
(col) => typeof col.accessorFn !== "undefined" && col.getIsVisible()
|
|
@@ -2265,25 +3315,25 @@ function DataTableHeaderDownload({
|
|
|
2265
3315
|
exportFilename,
|
|
2266
3316
|
onDownload
|
|
2267
3317
|
}) {
|
|
2268
|
-
return /* @__PURE__ */
|
|
2269
|
-
/* @__PURE__ */
|
|
2270
|
-
/* @__PURE__ */
|
|
3318
|
+
return /* @__PURE__ */ jsxs26(DropdownMenu, { children: [
|
|
3319
|
+
/* @__PURE__ */ jsxs26(Tooltip, { children: [
|
|
3320
|
+
/* @__PURE__ */ jsx37(
|
|
2271
3321
|
DropdownMenuTrigger,
|
|
2272
3322
|
{
|
|
2273
|
-
render: /* @__PURE__ */
|
|
3323
|
+
render: /* @__PURE__ */ jsx37(
|
|
2274
3324
|
TooltipTrigger,
|
|
2275
3325
|
{
|
|
2276
|
-
render: /* @__PURE__ */
|
|
3326
|
+
render: /* @__PURE__ */ jsx37(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx37(DownloadIcon, {}) })
|
|
2277
3327
|
}
|
|
2278
3328
|
)
|
|
2279
3329
|
}
|
|
2280
3330
|
),
|
|
2281
|
-
/* @__PURE__ */
|
|
3331
|
+
/* @__PURE__ */ jsx37(TooltipContent, { children: "Download options" })
|
|
2282
3332
|
] }),
|
|
2283
|
-
/* @__PURE__ */
|
|
2284
|
-
/* @__PURE__ */
|
|
2285
|
-
/* @__PURE__ */
|
|
2286
|
-
/* @__PURE__ */
|
|
3333
|
+
/* @__PURE__ */ jsx37(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs26(DropdownMenuGroup, { children: [
|
|
3334
|
+
/* @__PURE__ */ jsx37(DropdownMenuLabel, { children: "Download data" }),
|
|
3335
|
+
/* @__PURE__ */ jsx37(DropdownMenuSeparator, {}),
|
|
3336
|
+
/* @__PURE__ */ jsxs26(
|
|
2287
3337
|
DropdownMenuItem,
|
|
2288
3338
|
{
|
|
2289
3339
|
className: "hover:cursor-pointer",
|
|
@@ -2293,12 +3343,12 @@ function DataTableHeaderDownload({
|
|
|
2293
3343
|
onDownload == null ? void 0 : onDownload();
|
|
2294
3344
|
},
|
|
2295
3345
|
children: [
|
|
2296
|
-
/* @__PURE__ */
|
|
3346
|
+
/* @__PURE__ */ jsx37(FileTextIcon, {}),
|
|
2297
3347
|
"Download PDF"
|
|
2298
3348
|
]
|
|
2299
3349
|
}
|
|
2300
3350
|
),
|
|
2301
|
-
/* @__PURE__ */
|
|
3351
|
+
/* @__PURE__ */ jsxs26(
|
|
2302
3352
|
DropdownMenuItem,
|
|
2303
3353
|
{
|
|
2304
3354
|
className: "hover:cursor-pointer",
|
|
@@ -2308,12 +3358,12 @@ function DataTableHeaderDownload({
|
|
|
2308
3358
|
onDownload == null ? void 0 : onDownload();
|
|
2309
3359
|
},
|
|
2310
3360
|
children: [
|
|
2311
|
-
/* @__PURE__ */
|
|
3361
|
+
/* @__PURE__ */ jsx37(FileSpreadsheetIcon, {}),
|
|
2312
3362
|
"Download Excel"
|
|
2313
3363
|
]
|
|
2314
3364
|
}
|
|
2315
3365
|
),
|
|
2316
|
-
/* @__PURE__ */
|
|
3366
|
+
/* @__PURE__ */ jsxs26(
|
|
2317
3367
|
DropdownMenuItem,
|
|
2318
3368
|
{
|
|
2319
3369
|
className: "hover:cursor-pointer",
|
|
@@ -2323,13 +3373,13 @@ function DataTableHeaderDownload({
|
|
|
2323
3373
|
onDownload == null ? void 0 : onDownload();
|
|
2324
3374
|
},
|
|
2325
3375
|
children: [
|
|
2326
|
-
/* @__PURE__ */
|
|
3376
|
+
/* @__PURE__ */ jsx37(FileCodeIcon, {}),
|
|
2327
3377
|
"Download CSV"
|
|
2328
3378
|
]
|
|
2329
3379
|
}
|
|
2330
3380
|
),
|
|
2331
|
-
/* @__PURE__ */
|
|
2332
|
-
/* @__PURE__ */
|
|
3381
|
+
/* @__PURE__ */ jsx37(DropdownMenuSeparator, {}),
|
|
3382
|
+
/* @__PURE__ */ jsxs26(
|
|
2333
3383
|
DropdownMenuItem,
|
|
2334
3384
|
{
|
|
2335
3385
|
className: "hover:cursor-pointer",
|
|
@@ -2338,7 +3388,7 @@ function DataTableHeaderDownload({
|
|
|
2338
3388
|
printTable(headers, rows, exportFilename);
|
|
2339
3389
|
},
|
|
2340
3390
|
children: [
|
|
2341
|
-
/* @__PURE__ */
|
|
3391
|
+
/* @__PURE__ */ jsx37(PrinterIcon, {}),
|
|
2342
3392
|
"Print Table"
|
|
2343
3393
|
]
|
|
2344
3394
|
}
|
|
@@ -2350,10 +3400,10 @@ function DataTableHeaderDownload({
|
|
|
2350
3400
|
// src/components/composed/data-table/table-header-filter.tsx
|
|
2351
3401
|
import { format } from "date-fns";
|
|
2352
3402
|
import { CalendarIcon, ListFilterIcon } from "lucide-react";
|
|
2353
|
-
import { useMemo as
|
|
3403
|
+
import { useMemo as useMemo4, useState as useState4 } from "react";
|
|
2354
3404
|
|
|
2355
3405
|
// src/components/ui/calendar.tsx
|
|
2356
|
-
import { cn as
|
|
3406
|
+
import { cn as cn28 } from "cn";
|
|
2357
3407
|
import {
|
|
2358
3408
|
ChevronDownIcon,
|
|
2359
3409
|
ChevronLeftIcon as ChevronLeftIcon2,
|
|
@@ -2364,7 +3414,7 @@ import {
|
|
|
2364
3414
|
DayPicker,
|
|
2365
3415
|
getDefaultClassNames
|
|
2366
3416
|
} from "react-day-picker";
|
|
2367
|
-
import { jsx as
|
|
3417
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2368
3418
|
function Calendar(_a) {
|
|
2369
3419
|
var _b = _a, {
|
|
2370
3420
|
className,
|
|
@@ -2386,11 +3436,11 @@ function Calendar(_a) {
|
|
|
2386
3436
|
"components"
|
|
2387
3437
|
]);
|
|
2388
3438
|
const defaultClassNames = getDefaultClassNames();
|
|
2389
|
-
return /* @__PURE__ */
|
|
3439
|
+
return /* @__PURE__ */ jsx38(
|
|
2390
3440
|
DayPicker,
|
|
2391
3441
|
__spreadValues({
|
|
2392
3442
|
showOutsideDays,
|
|
2393
|
-
className:
|
|
3443
|
+
className: cn28(
|
|
2394
3444
|
"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",
|
|
2395
3445
|
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
2396
3446
|
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
@@ -2402,124 +3452,124 @@ function Calendar(_a) {
|
|
|
2402
3452
|
formatMonthDropdown: (date) => date.toLocaleString(locale == null ? void 0 : locale.code, { month: "short" })
|
|
2403
3453
|
}, formatters),
|
|
2404
3454
|
classNames: __spreadValues({
|
|
2405
|
-
root:
|
|
2406
|
-
months:
|
|
3455
|
+
root: cn28("w-fit", defaultClassNames.root),
|
|
3456
|
+
months: cn28(
|
|
2407
3457
|
"relative flex flex-col gap-4 md:flex-row",
|
|
2408
3458
|
defaultClassNames.months
|
|
2409
3459
|
),
|
|
2410
|
-
month:
|
|
2411
|
-
nav:
|
|
3460
|
+
month: cn28("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
3461
|
+
nav: cn28(
|
|
2412
3462
|
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
2413
3463
|
defaultClassNames.nav
|
|
2414
3464
|
),
|
|
2415
|
-
button_previous:
|
|
3465
|
+
button_previous: cn28(
|
|
2416
3466
|
buttonVariants({ variant: buttonVariant }),
|
|
2417
3467
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2418
3468
|
defaultClassNames.button_previous
|
|
2419
3469
|
),
|
|
2420
|
-
button_next:
|
|
3470
|
+
button_next: cn28(
|
|
2421
3471
|
buttonVariants({ variant: buttonVariant }),
|
|
2422
3472
|
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
2423
3473
|
defaultClassNames.button_next
|
|
2424
3474
|
),
|
|
2425
|
-
month_caption:
|
|
3475
|
+
month_caption: cn28(
|
|
2426
3476
|
"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
2427
3477
|
defaultClassNames.month_caption
|
|
2428
3478
|
),
|
|
2429
|
-
dropdowns:
|
|
3479
|
+
dropdowns: cn28(
|
|
2430
3480
|
"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
2431
3481
|
defaultClassNames.dropdowns
|
|
2432
3482
|
),
|
|
2433
|
-
dropdown_root:
|
|
3483
|
+
dropdown_root: cn28(
|
|
2434
3484
|
"relative rounded-(--cell-radius)",
|
|
2435
3485
|
defaultClassNames.dropdown_root
|
|
2436
3486
|
),
|
|
2437
|
-
dropdown:
|
|
3487
|
+
dropdown: cn28(
|
|
2438
3488
|
"absolute inset-0 bg-popover opacity-0",
|
|
2439
3489
|
defaultClassNames.dropdown
|
|
2440
3490
|
),
|
|
2441
|
-
caption_label:
|
|
3491
|
+
caption_label: cn28(
|
|
2442
3492
|
"font-medium select-none",
|
|
2443
3493
|
captionLayout === "label" ? "text-sm" : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
|
|
2444
3494
|
defaultClassNames.caption_label
|
|
2445
3495
|
),
|
|
2446
|
-
month_grid:
|
|
2447
|
-
weekdays:
|
|
2448
|
-
weekday:
|
|
3496
|
+
month_grid: cn28("w-full border-collapse", defaultClassNames.month_grid),
|
|
3497
|
+
weekdays: cn28("flex", defaultClassNames.weekdays),
|
|
3498
|
+
weekday: cn28(
|
|
2449
3499
|
"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
2450
3500
|
defaultClassNames.weekday
|
|
2451
3501
|
),
|
|
2452
|
-
week:
|
|
2453
|
-
week_number_header:
|
|
3502
|
+
week: cn28("mt-2 flex w-full", defaultClassNames.week),
|
|
3503
|
+
week_number_header: cn28(
|
|
2454
3504
|
"w-(--cell-size) select-none",
|
|
2455
3505
|
defaultClassNames.week_number_header
|
|
2456
3506
|
),
|
|
2457
|
-
week_number:
|
|
3507
|
+
week_number: cn28(
|
|
2458
3508
|
"text-[0.8rem] text-muted-foreground select-none",
|
|
2459
3509
|
defaultClassNames.week_number
|
|
2460
3510
|
),
|
|
2461
|
-
day:
|
|
3511
|
+
day: cn28(
|
|
2462
3512
|
"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)",
|
|
2463
3513
|
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
|
|
2464
3514
|
defaultClassNames.day
|
|
2465
3515
|
),
|
|
2466
|
-
range_start:
|
|
3516
|
+
range_start: cn28(
|
|
2467
3517
|
"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",
|
|
2468
3518
|
defaultClassNames.range_start
|
|
2469
3519
|
),
|
|
2470
|
-
range_middle:
|
|
2471
|
-
range_end:
|
|
3520
|
+
range_middle: cn28("rounded-none", defaultClassNames.range_middle),
|
|
3521
|
+
range_end: cn28(
|
|
2472
3522
|
"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",
|
|
2473
3523
|
defaultClassNames.range_end
|
|
2474
3524
|
),
|
|
2475
|
-
today:
|
|
3525
|
+
today: cn28(
|
|
2476
3526
|
"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
|
|
2477
3527
|
defaultClassNames.today
|
|
2478
3528
|
),
|
|
2479
|
-
outside:
|
|
3529
|
+
outside: cn28(
|
|
2480
3530
|
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
2481
3531
|
defaultClassNames.outside
|
|
2482
3532
|
),
|
|
2483
|
-
disabled:
|
|
3533
|
+
disabled: cn28(
|
|
2484
3534
|
"text-muted-foreground opacity-50",
|
|
2485
3535
|
defaultClassNames.disabled
|
|
2486
3536
|
),
|
|
2487
|
-
hidden:
|
|
3537
|
+
hidden: cn28("invisible", defaultClassNames.hidden)
|
|
2488
3538
|
}, classNames),
|
|
2489
3539
|
components: __spreadValues({
|
|
2490
3540
|
Root: (_a2) => {
|
|
2491
3541
|
var _b2 = _a2, { className: className2, rootRef } = _b2, props2 = __objRest(_b2, ["className", "rootRef"]);
|
|
2492
|
-
return /* @__PURE__ */
|
|
3542
|
+
return /* @__PURE__ */ jsx38(
|
|
2493
3543
|
"div",
|
|
2494
3544
|
__spreadValues({
|
|
2495
3545
|
"data-slot": "calendar",
|
|
2496
3546
|
ref: rootRef,
|
|
2497
|
-
className:
|
|
3547
|
+
className: cn28(className2)
|
|
2498
3548
|
}, props2)
|
|
2499
3549
|
);
|
|
2500
3550
|
},
|
|
2501
3551
|
Chevron: (_c) => {
|
|
2502
3552
|
var _d = _c, { className: className2, orientation } = _d, props2 = __objRest(_d, ["className", "orientation"]);
|
|
2503
3553
|
if (orientation === "left") {
|
|
2504
|
-
return /* @__PURE__ */
|
|
3554
|
+
return /* @__PURE__ */ jsx38(ChevronLeftIcon2, __spreadValues({ className: cn28("size-4", className2) }, props2));
|
|
2505
3555
|
}
|
|
2506
3556
|
if (orientation === "right") {
|
|
2507
|
-
return /* @__PURE__ */
|
|
3557
|
+
return /* @__PURE__ */ jsx38(
|
|
2508
3558
|
ChevronRightIcon4,
|
|
2509
3559
|
__spreadValues({
|
|
2510
|
-
className:
|
|
3560
|
+
className: cn28("size-4", className2)
|
|
2511
3561
|
}, props2)
|
|
2512
3562
|
);
|
|
2513
3563
|
}
|
|
2514
|
-
return /* @__PURE__ */
|
|
3564
|
+
return /* @__PURE__ */ jsx38(ChevronDownIcon, __spreadValues({ className: cn28("size-4", className2) }, props2));
|
|
2515
3565
|
},
|
|
2516
3566
|
DayButton: (_e) => {
|
|
2517
3567
|
var props2 = __objRest(_e, []);
|
|
2518
|
-
return /* @__PURE__ */
|
|
3568
|
+
return /* @__PURE__ */ jsx38(CalendarDayButton, __spreadValues({ locale }, props2));
|
|
2519
3569
|
},
|
|
2520
3570
|
WeekNumber: (_f) => {
|
|
2521
3571
|
var _g = _f, { children } = _g, props2 = __objRest(_g, ["children"]);
|
|
2522
|
-
return /* @__PURE__ */
|
|
3572
|
+
return /* @__PURE__ */ jsx38("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ jsx38("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
2523
3573
|
}
|
|
2524
3574
|
}, components)
|
|
2525
3575
|
}, props)
|
|
@@ -2543,7 +3593,7 @@ function CalendarDayButton(_a) {
|
|
|
2543
3593
|
var _a2;
|
|
2544
3594
|
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
2545
3595
|
}, [modifiers.focused]);
|
|
2546
|
-
return /* @__PURE__ */
|
|
3596
|
+
return /* @__PURE__ */ jsx38(
|
|
2547
3597
|
Button,
|
|
2548
3598
|
__spreadValues({
|
|
2549
3599
|
variant: "ghost",
|
|
@@ -2553,7 +3603,7 @@ function CalendarDayButton(_a) {
|
|
|
2553
3603
|
"data-range-start": modifiers.range_start,
|
|
2554
3604
|
"data-range-end": modifiers.range_end,
|
|
2555
3605
|
"data-range-middle": modifiers.range_middle,
|
|
2556
|
-
className:
|
|
3606
|
+
className: cn28(
|
|
2557
3607
|
"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",
|
|
2558
3608
|
defaultClassNames.day,
|
|
2559
3609
|
className
|
|
@@ -2564,15 +3614,15 @@ function CalendarDayButton(_a) {
|
|
|
2564
3614
|
|
|
2565
3615
|
// src/components/ui/popover.tsx
|
|
2566
3616
|
import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
|
|
2567
|
-
import { cn as
|
|
2568
|
-
import { jsx as
|
|
3617
|
+
import { cn as cn29 } from "cn";
|
|
3618
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
2569
3619
|
function Popover(_a) {
|
|
2570
3620
|
var props = __objRest(_a, []);
|
|
2571
|
-
return /* @__PURE__ */
|
|
3621
|
+
return /* @__PURE__ */ jsx39(PopoverPrimitive.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
2572
3622
|
}
|
|
2573
3623
|
function PopoverTrigger(_a) {
|
|
2574
3624
|
var props = __objRest(_a, []);
|
|
2575
|
-
return /* @__PURE__ */
|
|
3625
|
+
return /* @__PURE__ */ jsx39(PopoverPrimitive.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
2576
3626
|
}
|
|
2577
3627
|
function PopoverContent(_a) {
|
|
2578
3628
|
var _b = _a, {
|
|
@@ -2588,7 +3638,7 @@ function PopoverContent(_a) {
|
|
|
2588
3638
|
"side",
|
|
2589
3639
|
"sideOffset"
|
|
2590
3640
|
]);
|
|
2591
|
-
return /* @__PURE__ */
|
|
3641
|
+
return /* @__PURE__ */ jsx39(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx39(
|
|
2592
3642
|
PopoverPrimitive.Positioner,
|
|
2593
3643
|
{
|
|
2594
3644
|
align,
|
|
@@ -2596,11 +3646,11 @@ function PopoverContent(_a) {
|
|
|
2596
3646
|
side,
|
|
2597
3647
|
sideOffset,
|
|
2598
3648
|
className: "isolate z-50",
|
|
2599
|
-
children: /* @__PURE__ */
|
|
3649
|
+
children: /* @__PURE__ */ jsx39(
|
|
2600
3650
|
PopoverPrimitive.Popup,
|
|
2601
3651
|
__spreadValues({
|
|
2602
3652
|
"data-slot": "popover-content",
|
|
2603
|
-
className:
|
|
3653
|
+
className: cn29(
|
|
2604
3654
|
"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",
|
|
2605
3655
|
className
|
|
2606
3656
|
)
|
|
@@ -2612,17 +3662,17 @@ function PopoverContent(_a) {
|
|
|
2612
3662
|
|
|
2613
3663
|
// src/components/ui/select.tsx
|
|
2614
3664
|
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
2615
|
-
import { cn as
|
|
2616
|
-
import { CheckIcon as
|
|
2617
|
-
import { jsx as
|
|
3665
|
+
import { cn as cn30 } from "cn";
|
|
3666
|
+
import { CheckIcon as CheckIcon4, ChevronDownIcon as ChevronDownIcon2, ChevronUpIcon } from "lucide-react";
|
|
3667
|
+
import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2618
3668
|
var Select = SelectPrimitive.Root;
|
|
2619
3669
|
function SelectValue(_a) {
|
|
2620
3670
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2621
|
-
return /* @__PURE__ */
|
|
3671
|
+
return /* @__PURE__ */ jsx40(
|
|
2622
3672
|
SelectPrimitive.Value,
|
|
2623
3673
|
__spreadValues({
|
|
2624
3674
|
"data-slot": "select-value",
|
|
2625
|
-
className:
|
|
3675
|
+
className: cn30("flex flex-1 text-left", className)
|
|
2626
3676
|
}, props)
|
|
2627
3677
|
);
|
|
2628
3678
|
}
|
|
@@ -2636,22 +3686,22 @@ function SelectTrigger(_a) {
|
|
|
2636
3686
|
"size",
|
|
2637
3687
|
"children"
|
|
2638
3688
|
]);
|
|
2639
|
-
return /* @__PURE__ */
|
|
3689
|
+
return /* @__PURE__ */ jsxs27(
|
|
2640
3690
|
SelectPrimitive.Trigger,
|
|
2641
3691
|
__spreadProps(__spreadValues({
|
|
2642
3692
|
"data-slot": "select-trigger",
|
|
2643
3693
|
"data-size": size,
|
|
2644
|
-
className:
|
|
3694
|
+
className: cn30(
|
|
2645
3695
|
"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",
|
|
2646
3696
|
className
|
|
2647
3697
|
)
|
|
2648
3698
|
}, props), {
|
|
2649
3699
|
children: [
|
|
2650
3700
|
children,
|
|
2651
|
-
/* @__PURE__ */
|
|
3701
|
+
/* @__PURE__ */ jsx40(
|
|
2652
3702
|
SelectPrimitive.Icon,
|
|
2653
3703
|
{
|
|
2654
|
-
render: /* @__PURE__ */
|
|
3704
|
+
render: /* @__PURE__ */ jsx40(ChevronDownIcon2, { className: "pointer-events-none size-3.5 text-muted-foreground" })
|
|
2655
3705
|
}
|
|
2656
3706
|
)
|
|
2657
3707
|
]
|
|
@@ -2676,7 +3726,7 @@ function SelectContent(_a) {
|
|
|
2676
3726
|
"alignOffset",
|
|
2677
3727
|
"alignItemWithTrigger"
|
|
2678
3728
|
]);
|
|
2679
|
-
return /* @__PURE__ */
|
|
3729
|
+
return /* @__PURE__ */ jsx40(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx40(
|
|
2680
3730
|
SelectPrimitive.Positioner,
|
|
2681
3731
|
{
|
|
2682
3732
|
side,
|
|
@@ -2685,20 +3735,20 @@ function SelectContent(_a) {
|
|
|
2685
3735
|
alignOffset,
|
|
2686
3736
|
alignItemWithTrigger,
|
|
2687
3737
|
className: "isolate z-50",
|
|
2688
|
-
children: /* @__PURE__ */
|
|
3738
|
+
children: /* @__PURE__ */ jsxs27(
|
|
2689
3739
|
SelectPrimitive.Popup,
|
|
2690
3740
|
__spreadProps(__spreadValues({
|
|
2691
3741
|
"data-slot": "select-content",
|
|
2692
3742
|
"data-align-trigger": alignItemWithTrigger,
|
|
2693
|
-
className:
|
|
3743
|
+
className: cn30(
|
|
2694
3744
|
"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",
|
|
2695
3745
|
className
|
|
2696
3746
|
)
|
|
2697
3747
|
}, props), {
|
|
2698
3748
|
children: [
|
|
2699
|
-
/* @__PURE__ */
|
|
2700
|
-
/* @__PURE__ */
|
|
2701
|
-
/* @__PURE__ */
|
|
3749
|
+
/* @__PURE__ */ jsx40(SelectScrollUpButton, {}),
|
|
3750
|
+
/* @__PURE__ */ jsx40(SelectPrimitive.List, { children }),
|
|
3751
|
+
/* @__PURE__ */ jsx40(SelectScrollDownButton, {})
|
|
2702
3752
|
]
|
|
2703
3753
|
})
|
|
2704
3754
|
)
|
|
@@ -2713,22 +3763,22 @@ function SelectItem(_a) {
|
|
|
2713
3763
|
"className",
|
|
2714
3764
|
"children"
|
|
2715
3765
|
]);
|
|
2716
|
-
return /* @__PURE__ */
|
|
3766
|
+
return /* @__PURE__ */ jsxs27(
|
|
2717
3767
|
SelectPrimitive.Item,
|
|
2718
3768
|
__spreadProps(__spreadValues({
|
|
2719
3769
|
"data-slot": "select-item",
|
|
2720
|
-
className:
|
|
3770
|
+
className: cn30(
|
|
2721
3771
|
"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",
|
|
2722
3772
|
className
|
|
2723
3773
|
)
|
|
2724
3774
|
}, props), {
|
|
2725
3775
|
children: [
|
|
2726
|
-
/* @__PURE__ */
|
|
2727
|
-
/* @__PURE__ */
|
|
3776
|
+
/* @__PURE__ */ jsx40(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
3777
|
+
/* @__PURE__ */ jsx40(
|
|
2728
3778
|
SelectPrimitive.ItemIndicator,
|
|
2729
3779
|
{
|
|
2730
|
-
render: /* @__PURE__ */
|
|
2731
|
-
children: /* @__PURE__ */
|
|
3780
|
+
render: /* @__PURE__ */ jsx40("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center" }),
|
|
3781
|
+
children: /* @__PURE__ */ jsx40(CheckIcon4, { className: "pointer-events-none" })
|
|
2732
3782
|
}
|
|
2733
3783
|
)
|
|
2734
3784
|
]
|
|
@@ -2741,16 +3791,16 @@ function SelectScrollUpButton(_a) {
|
|
|
2741
3791
|
} = _b, props = __objRest(_b, [
|
|
2742
3792
|
"className"
|
|
2743
3793
|
]);
|
|
2744
|
-
return /* @__PURE__ */
|
|
3794
|
+
return /* @__PURE__ */ jsx40(
|
|
2745
3795
|
SelectPrimitive.ScrollUpArrow,
|
|
2746
3796
|
__spreadProps(__spreadValues({
|
|
2747
3797
|
"data-slot": "select-scroll-up-button",
|
|
2748
|
-
className:
|
|
3798
|
+
className: cn30(
|
|
2749
3799
|
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2750
3800
|
className
|
|
2751
3801
|
)
|
|
2752
3802
|
}, props), {
|
|
2753
|
-
children: /* @__PURE__ */
|
|
3803
|
+
children: /* @__PURE__ */ jsx40(ChevronUpIcon, {})
|
|
2754
3804
|
})
|
|
2755
3805
|
);
|
|
2756
3806
|
}
|
|
@@ -2760,22 +3810,22 @@ function SelectScrollDownButton(_a) {
|
|
|
2760
3810
|
} = _b, props = __objRest(_b, [
|
|
2761
3811
|
"className"
|
|
2762
3812
|
]);
|
|
2763
|
-
return /* @__PURE__ */
|
|
3813
|
+
return /* @__PURE__ */ jsx40(
|
|
2764
3814
|
SelectPrimitive.ScrollDownArrow,
|
|
2765
3815
|
__spreadProps(__spreadValues({
|
|
2766
3816
|
"data-slot": "select-scroll-down-button",
|
|
2767
|
-
className:
|
|
3817
|
+
className: cn30(
|
|
2768
3818
|
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2769
3819
|
className
|
|
2770
3820
|
)
|
|
2771
3821
|
}, props), {
|
|
2772
|
-
children: /* @__PURE__ */
|
|
3822
|
+
children: /* @__PURE__ */ jsx40(ChevronDownIcon2, {})
|
|
2773
3823
|
})
|
|
2774
3824
|
);
|
|
2775
3825
|
}
|
|
2776
3826
|
|
|
2777
3827
|
// src/components/composed/data-table/table-header-filter.tsx
|
|
2778
|
-
import { Fragment as
|
|
3828
|
+
import { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2779
3829
|
function smartFilterFn(row, columnId, filterValue) {
|
|
2780
3830
|
var _a, _b, _c;
|
|
2781
3831
|
if (filterValue === void 0 || filterValue === null || filterValue === "" || filterValue === "all") {
|
|
@@ -2916,13 +3966,13 @@ function ColumnFilterInput({
|
|
|
2916
3966
|
table,
|
|
2917
3967
|
headerText
|
|
2918
3968
|
}) {
|
|
2919
|
-
const [calendarOpen, setCalendarOpen] =
|
|
3969
|
+
const [calendarOpen, setCalendarOpen] = useState4(false);
|
|
2920
3970
|
const filterValue = column.getFilterValue();
|
|
2921
|
-
const variant =
|
|
3971
|
+
const variant = useMemo4(
|
|
2922
3972
|
() => getFilterVariant(column, table),
|
|
2923
3973
|
[column, table]
|
|
2924
3974
|
);
|
|
2925
|
-
const options =
|
|
3975
|
+
const options = useMemo4(() => {
|
|
2926
3976
|
if (variant === "boolean") {
|
|
2927
3977
|
return [
|
|
2928
3978
|
{ label: "True / Yes", value: "true" },
|
|
@@ -2936,7 +3986,7 @@ function ColumnFilterInput({
|
|
|
2936
3986
|
}, [column, table, variant]);
|
|
2937
3987
|
if (variant === "boolean" || variant === "select") {
|
|
2938
3988
|
const currentValue = filterValue === void 0 || filterValue === null || filterValue === "" ? "all" : String(filterValue);
|
|
2939
|
-
return /* @__PURE__ */
|
|
3989
|
+
return /* @__PURE__ */ jsx41("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs28(
|
|
2940
3990
|
Select,
|
|
2941
3991
|
{
|
|
2942
3992
|
value: currentValue,
|
|
@@ -2948,13 +3998,13 @@ function ColumnFilterInput({
|
|
|
2948
3998
|
}
|
|
2949
3999
|
},
|
|
2950
4000
|
children: [
|
|
2951
|
-
/* @__PURE__ */
|
|
4001
|
+
/* @__PURE__ */ jsx41(
|
|
2952
4002
|
SelectTrigger,
|
|
2953
4003
|
{
|
|
2954
4004
|
className: "w-full",
|
|
2955
4005
|
onKeyDown: (e) => e.stopPropagation(),
|
|
2956
4006
|
onPointerDown: (e) => e.stopPropagation(),
|
|
2957
|
-
children: /* @__PURE__ */
|
|
4007
|
+
children: /* @__PURE__ */ jsx41(
|
|
2958
4008
|
SelectValue,
|
|
2959
4009
|
{
|
|
2960
4010
|
placeholder: `Select ${headerText.toLowerCase()}...`,
|
|
@@ -2963,9 +4013,9 @@ function ColumnFilterInput({
|
|
|
2963
4013
|
)
|
|
2964
4014
|
}
|
|
2965
4015
|
),
|
|
2966
|
-
/* @__PURE__ */
|
|
2967
|
-
/* @__PURE__ */
|
|
2968
|
-
options.map((opt) => /* @__PURE__ */
|
|
4016
|
+
/* @__PURE__ */ jsxs28(SelectContent, { align: "start", children: [
|
|
4017
|
+
/* @__PURE__ */ jsx41(SelectItem, { value: "all", children: "All" }),
|
|
4018
|
+
options.map((opt) => /* @__PURE__ */ jsx41(
|
|
2969
4019
|
SelectItem,
|
|
2970
4020
|
{
|
|
2971
4021
|
value: opt.value,
|
|
@@ -2992,36 +4042,36 @@ function ColumnFilterInput({
|
|
|
2992
4042
|
}
|
|
2993
4043
|
}
|
|
2994
4044
|
const formattedDateLabel = dateObj ? format(dateObj, "yyyy-MM-dd") : "";
|
|
2995
|
-
return /* @__PURE__ */
|
|
2996
|
-
/* @__PURE__ */
|
|
4045
|
+
return /* @__PURE__ */ jsx41("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs28(Popover, { open: calendarOpen, onOpenChange: setCalendarOpen, children: [
|
|
4046
|
+
/* @__PURE__ */ jsx41(
|
|
2997
4047
|
PopoverTrigger,
|
|
2998
4048
|
{
|
|
2999
|
-
render: /* @__PURE__ */
|
|
4049
|
+
render: /* @__PURE__ */ jsxs28(
|
|
3000
4050
|
Button,
|
|
3001
4051
|
{
|
|
3002
4052
|
variant: "outline",
|
|
3003
|
-
className:
|
|
4053
|
+
className: cn26(
|
|
3004
4054
|
"w-full justify-start",
|
|
3005
4055
|
!formattedDateLabel && "text-muted-foreground"
|
|
3006
4056
|
),
|
|
3007
4057
|
onKeyDown: (e) => e.stopPropagation(),
|
|
3008
4058
|
onPointerDown: (e) => e.stopPropagation(),
|
|
3009
4059
|
children: [
|
|
3010
|
-
/* @__PURE__ */
|
|
3011
|
-
/* @__PURE__ */
|
|
4060
|
+
/* @__PURE__ */ jsx41(CalendarIcon, { className: "mr-1 size-3 shrink-0" }),
|
|
4061
|
+
/* @__PURE__ */ jsx41("span", { className: "truncate", children: formattedDateLabel || `Pick ${headerText.toLowerCase()}...` })
|
|
3012
4062
|
]
|
|
3013
4063
|
}
|
|
3014
4064
|
)
|
|
3015
4065
|
}
|
|
3016
4066
|
),
|
|
3017
|
-
/* @__PURE__ */
|
|
4067
|
+
/* @__PURE__ */ jsx41(
|
|
3018
4068
|
PopoverContent,
|
|
3019
4069
|
{
|
|
3020
4070
|
className: "w-auto p-0",
|
|
3021
4071
|
align: "start",
|
|
3022
4072
|
onPointerDown: (e) => e.stopPropagation(),
|
|
3023
4073
|
onKeyDown: (e) => e.stopPropagation(),
|
|
3024
|
-
children: /* @__PURE__ */
|
|
4074
|
+
children: /* @__PURE__ */ jsx41(
|
|
3025
4075
|
Calendar,
|
|
3026
4076
|
{
|
|
3027
4077
|
mode: "single",
|
|
@@ -3040,7 +4090,7 @@ function ColumnFilterInput({
|
|
|
3040
4090
|
)
|
|
3041
4091
|
] }) });
|
|
3042
4092
|
}
|
|
3043
|
-
return /* @__PURE__ */
|
|
4093
|
+
return /* @__PURE__ */ jsx41("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsx41(
|
|
3044
4094
|
Input,
|
|
3045
4095
|
{
|
|
3046
4096
|
id: `filter-${column.id}`,
|
|
@@ -3057,46 +4107,46 @@ function DataTableHeaderFilter({
|
|
|
3057
4107
|
table,
|
|
3058
4108
|
columnFilters
|
|
3059
4109
|
}) {
|
|
3060
|
-
const filterableColumns =
|
|
4110
|
+
const filterableColumns = useMemo4(
|
|
3061
4111
|
() => table.getAllColumns().filter(
|
|
3062
4112
|
(column) => typeof column.accessorFn !== "undefined" && column.getCanFilter()
|
|
3063
4113
|
),
|
|
3064
4114
|
[table]
|
|
3065
4115
|
);
|
|
3066
4116
|
if (filterableColumns.length === 0) return null;
|
|
3067
|
-
return /* @__PURE__ */
|
|
3068
|
-
/* @__PURE__ */
|
|
3069
|
-
/* @__PURE__ */
|
|
4117
|
+
return /* @__PURE__ */ jsxs28(DropdownMenu, { children: [
|
|
4118
|
+
/* @__PURE__ */ jsxs28(Tooltip, { children: [
|
|
4119
|
+
/* @__PURE__ */ jsx41(
|
|
3070
4120
|
DropdownMenuTrigger,
|
|
3071
4121
|
{
|
|
3072
|
-
render: /* @__PURE__ */
|
|
4122
|
+
render: /* @__PURE__ */ jsx41(
|
|
3073
4123
|
TooltipTrigger,
|
|
3074
4124
|
{
|
|
3075
|
-
render: /* @__PURE__ */
|
|
4125
|
+
render: /* @__PURE__ */ jsx41(
|
|
3076
4126
|
Button,
|
|
3077
4127
|
{
|
|
3078
4128
|
variant: columnFilters.length > 0 ? "secondary" : "outline",
|
|
3079
4129
|
size: "icon",
|
|
3080
|
-
children: /* @__PURE__ */
|
|
4130
|
+
children: /* @__PURE__ */ jsx41(ListFilterIcon, {})
|
|
3081
4131
|
}
|
|
3082
4132
|
)
|
|
3083
4133
|
}
|
|
3084
4134
|
)
|
|
3085
4135
|
}
|
|
3086
4136
|
),
|
|
3087
|
-
/* @__PURE__ */
|
|
4137
|
+
/* @__PURE__ */ jsx41(TooltipContent, { children: "Filter options" })
|
|
3088
4138
|
] }),
|
|
3089
|
-
/* @__PURE__ */
|
|
3090
|
-
/* @__PURE__ */
|
|
3091
|
-
/* @__PURE__ */
|
|
3092
|
-
/* @__PURE__ */
|
|
4139
|
+
/* @__PURE__ */ jsx41(DropdownMenuContent, { align: "end", className: "w-80", children: /* @__PURE__ */ jsxs28(DropdownMenuGroup, { children: [
|
|
4140
|
+
/* @__PURE__ */ jsx41(DropdownMenuLabel, { children: "Filter by column" }),
|
|
4141
|
+
/* @__PURE__ */ jsx41(DropdownMenuSeparator, {}),
|
|
4142
|
+
/* @__PURE__ */ jsx41("div", { className: "max-h-64 overflow-y-auto space-y-2.5 p-1", children: filterableColumns.map((column) => {
|
|
3093
4143
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3094
|
-
return /* @__PURE__ */
|
|
4144
|
+
return /* @__PURE__ */ jsxs28(
|
|
3095
4145
|
"div",
|
|
3096
4146
|
{
|
|
3097
4147
|
className: "flex items-center justify-between px-1",
|
|
3098
4148
|
children: [
|
|
3099
|
-
/* @__PURE__ */
|
|
4149
|
+
/* @__PURE__ */ jsx41(
|
|
3100
4150
|
"label",
|
|
3101
4151
|
{
|
|
3102
4152
|
htmlFor: `filter-${column.id}`,
|
|
@@ -3104,7 +4154,7 @@ function DataTableHeaderFilter({
|
|
|
3104
4154
|
children: headerText
|
|
3105
4155
|
}
|
|
3106
4156
|
),
|
|
3107
|
-
/* @__PURE__ */
|
|
4157
|
+
/* @__PURE__ */ jsx41("div", { className: "flex-1", children: /* @__PURE__ */ jsx41(
|
|
3108
4158
|
ColumnFilterInput,
|
|
3109
4159
|
{
|
|
3110
4160
|
column,
|
|
@@ -3117,9 +4167,9 @@ function DataTableHeaderFilter({
|
|
|
3117
4167
|
column.id
|
|
3118
4168
|
);
|
|
3119
4169
|
}) }),
|
|
3120
|
-
columnFilters.length > 0 && /* @__PURE__ */
|
|
3121
|
-
/* @__PURE__ */
|
|
3122
|
-
/* @__PURE__ */
|
|
4170
|
+
columnFilters.length > 0 && /* @__PURE__ */ jsxs28(Fragment8, { children: [
|
|
4171
|
+
/* @__PURE__ */ jsx41(DropdownMenuSeparator, {}),
|
|
4172
|
+
/* @__PURE__ */ jsx41(
|
|
3123
4173
|
DropdownMenuItem,
|
|
3124
4174
|
{
|
|
3125
4175
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -3135,11 +4185,11 @@ function DataTableHeaderFilter({
|
|
|
3135
4185
|
// src/components/composed/data-table/table-header-refresh.tsx
|
|
3136
4186
|
import { RotateCwIcon } from "lucide-react";
|
|
3137
4187
|
import { useRouter } from "next/navigation";
|
|
3138
|
-
import { useState as
|
|
3139
|
-
import { jsx as
|
|
4188
|
+
import { useState as useState5 } from "react";
|
|
4189
|
+
import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3140
4190
|
function DataTableHeaderRefresh() {
|
|
3141
4191
|
const router = useRouter();
|
|
3142
|
-
const [isRefreshing, setIsRefreshing] =
|
|
4192
|
+
const [isRefreshing, setIsRefreshing] = useState5(false);
|
|
3143
4193
|
const handleRefresh = () => {
|
|
3144
4194
|
setIsRefreshing(true);
|
|
3145
4195
|
router.refresh();
|
|
@@ -3147,21 +4197,21 @@ function DataTableHeaderRefresh() {
|
|
|
3147
4197
|
setIsRefreshing(false);
|
|
3148
4198
|
}, 750);
|
|
3149
4199
|
};
|
|
3150
|
-
return /* @__PURE__ */
|
|
3151
|
-
/* @__PURE__ */
|
|
4200
|
+
return /* @__PURE__ */ jsxs29(Tooltip, { children: [
|
|
4201
|
+
/* @__PURE__ */ jsx42(
|
|
3152
4202
|
TooltipTrigger,
|
|
3153
4203
|
{
|
|
3154
|
-
render: /* @__PURE__ */
|
|
4204
|
+
render: /* @__PURE__ */ jsx42(
|
|
3155
4205
|
Button,
|
|
3156
4206
|
{
|
|
3157
4207
|
variant: "outline",
|
|
3158
4208
|
size: "icon",
|
|
3159
4209
|
onClick: handleRefresh,
|
|
3160
4210
|
disabled: isRefreshing,
|
|
3161
|
-
children: /* @__PURE__ */
|
|
4211
|
+
children: /* @__PURE__ */ jsx42(
|
|
3162
4212
|
RotateCwIcon,
|
|
3163
4213
|
{
|
|
3164
|
-
className:
|
|
4214
|
+
className: cn26(
|
|
3165
4215
|
"transition-transform duration-750",
|
|
3166
4216
|
isRefreshing && "animate-spin"
|
|
3167
4217
|
)
|
|
@@ -3171,19 +4221,19 @@ function DataTableHeaderRefresh() {
|
|
|
3171
4221
|
)
|
|
3172
4222
|
}
|
|
3173
4223
|
),
|
|
3174
|
-
/* @__PURE__ */
|
|
4224
|
+
/* @__PURE__ */ jsx42(TooltipContent, { children: "Refresh data" })
|
|
3175
4225
|
] });
|
|
3176
4226
|
}
|
|
3177
4227
|
|
|
3178
4228
|
// src/components/composed/data-table/table-header-search.tsx
|
|
3179
|
-
import { XIcon as
|
|
3180
|
-
import { jsx as
|
|
4229
|
+
import { XIcon as XIcon4 } from "lucide-react";
|
|
4230
|
+
import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3181
4231
|
function DataTableHeaderSearch({
|
|
3182
4232
|
value = "",
|
|
3183
4233
|
onChange
|
|
3184
4234
|
}) {
|
|
3185
|
-
return /* @__PURE__ */
|
|
3186
|
-
/* @__PURE__ */
|
|
4235
|
+
return /* @__PURE__ */ jsxs30("div", { className: "relative flex items-center max-w-sm w-full", children: [
|
|
4236
|
+
/* @__PURE__ */ jsx43(
|
|
3187
4237
|
Input,
|
|
3188
4238
|
{
|
|
3189
4239
|
placeholder: "Search...",
|
|
@@ -3192,14 +4242,14 @@ function DataTableHeaderSearch({
|
|
|
3192
4242
|
className: "pr-7"
|
|
3193
4243
|
}
|
|
3194
4244
|
),
|
|
3195
|
-
Boolean(value) && /* @__PURE__ */
|
|
4245
|
+
Boolean(value) && /* @__PURE__ */ jsx43(
|
|
3196
4246
|
"button",
|
|
3197
4247
|
{
|
|
3198
4248
|
type: "button",
|
|
3199
4249
|
onClick: () => onChange(""),
|
|
3200
4250
|
className: "absolute right-2 text-muted-foreground hover:text-foreground p-0.5 rounded cursor-pointer",
|
|
3201
4251
|
"aria-label": "Clear search text",
|
|
3202
|
-
children: /* @__PURE__ */
|
|
4252
|
+
children: /* @__PURE__ */ jsx43(XIcon4, { className: "size-3.5" })
|
|
3203
4253
|
}
|
|
3204
4254
|
)
|
|
3205
4255
|
] });
|
|
@@ -3207,41 +4257,41 @@ function DataTableHeaderSearch({
|
|
|
3207
4257
|
|
|
3208
4258
|
// src/components/composed/data-table/table-header-sort.tsx
|
|
3209
4259
|
import { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon } from "lucide-react";
|
|
3210
|
-
import { Fragment as
|
|
4260
|
+
import { Fragment as Fragment9, jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3211
4261
|
function DataTableHeaderSort({
|
|
3212
4262
|
table,
|
|
3213
4263
|
sorting
|
|
3214
4264
|
}) {
|
|
3215
4265
|
const sortableColumns = table.getAllColumns().filter((column) => column.getCanSort());
|
|
3216
|
-
return /* @__PURE__ */
|
|
3217
|
-
/* @__PURE__ */
|
|
3218
|
-
/* @__PURE__ */
|
|
4266
|
+
return /* @__PURE__ */ jsxs31(DropdownMenu, { children: [
|
|
4267
|
+
/* @__PURE__ */ jsxs31(Tooltip, { children: [
|
|
4268
|
+
/* @__PURE__ */ jsx44(
|
|
3219
4269
|
DropdownMenuTrigger,
|
|
3220
4270
|
{
|
|
3221
|
-
render: /* @__PURE__ */
|
|
4271
|
+
render: /* @__PURE__ */ jsx44(
|
|
3222
4272
|
TooltipTrigger,
|
|
3223
4273
|
{
|
|
3224
|
-
render: /* @__PURE__ */
|
|
4274
|
+
render: /* @__PURE__ */ jsx44(
|
|
3225
4275
|
Button,
|
|
3226
4276
|
{
|
|
3227
4277
|
variant: sorting.length > 0 ? "secondary" : "outline",
|
|
3228
4278
|
size: "icon",
|
|
3229
|
-
children: /* @__PURE__ */
|
|
4279
|
+
children: /* @__PURE__ */ jsx44(ArrowUpDownIcon, {})
|
|
3230
4280
|
}
|
|
3231
4281
|
)
|
|
3232
4282
|
}
|
|
3233
4283
|
)
|
|
3234
4284
|
}
|
|
3235
4285
|
),
|
|
3236
|
-
/* @__PURE__ */
|
|
4286
|
+
/* @__PURE__ */ jsx44(TooltipContent, { children: "Sort options" })
|
|
3237
4287
|
] }),
|
|
3238
|
-
/* @__PURE__ */
|
|
3239
|
-
/* @__PURE__ */
|
|
3240
|
-
/* @__PURE__ */
|
|
4288
|
+
/* @__PURE__ */ jsx44(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs31(DropdownMenuGroup, { children: [
|
|
4289
|
+
/* @__PURE__ */ jsx44(DropdownMenuLabel, { children: "Sort by column" }),
|
|
4290
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {}),
|
|
3241
4291
|
sortableColumns.map((column) => {
|
|
3242
4292
|
const isSorted = column.getIsSorted();
|
|
3243
4293
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3244
|
-
return /* @__PURE__ */
|
|
4294
|
+
return /* @__PURE__ */ jsxs31(
|
|
3245
4295
|
DropdownMenuItem,
|
|
3246
4296
|
{
|
|
3247
4297
|
className: "flex items-center justify-between hover:cursor-pointer capitalize",
|
|
@@ -3256,16 +4306,16 @@ function DataTableHeaderSort({
|
|
|
3256
4306
|
},
|
|
3257
4307
|
children: [
|
|
3258
4308
|
headerText,
|
|
3259
|
-
isSorted === "asc" && /* @__PURE__ */
|
|
3260
|
-
isSorted === "desc" && /* @__PURE__ */
|
|
4309
|
+
isSorted === "asc" && /* @__PURE__ */ jsx44(ArrowUpIcon, { className: "size-3.5" }),
|
|
4310
|
+
isSorted === "desc" && /* @__PURE__ */ jsx44(ArrowDownIcon, { className: "size-3.5" })
|
|
3261
4311
|
]
|
|
3262
4312
|
},
|
|
3263
4313
|
column.id
|
|
3264
4314
|
);
|
|
3265
4315
|
}),
|
|
3266
|
-
sorting.length > 0 && /* @__PURE__ */
|
|
3267
|
-
/* @__PURE__ */
|
|
3268
|
-
/* @__PURE__ */
|
|
4316
|
+
sorting.length > 0 && /* @__PURE__ */ jsxs31(Fragment9, { children: [
|
|
4317
|
+
/* @__PURE__ */ jsx44(DropdownMenuSeparator, {}),
|
|
4318
|
+
/* @__PURE__ */ jsx44(
|
|
3269
4319
|
DropdownMenuItem,
|
|
3270
4320
|
{
|
|
3271
4321
|
className: "hover:cursor-pointer text-destructive focus:text-destructive",
|
|
@@ -3280,33 +4330,33 @@ function DataTableHeaderSort({
|
|
|
3280
4330
|
|
|
3281
4331
|
// src/components/composed/data-table/table-header-toggle.tsx
|
|
3282
4332
|
import { Columns3CogIcon } from "lucide-react";
|
|
3283
|
-
import { jsx as
|
|
4333
|
+
import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3284
4334
|
function DataTableHeaderToggle({
|
|
3285
4335
|
table
|
|
3286
4336
|
}) {
|
|
3287
|
-
return /* @__PURE__ */
|
|
3288
|
-
/* @__PURE__ */
|
|
3289
|
-
/* @__PURE__ */
|
|
4337
|
+
return /* @__PURE__ */ jsxs32(DropdownMenu, { children: [
|
|
4338
|
+
/* @__PURE__ */ jsxs32(Tooltip, { children: [
|
|
4339
|
+
/* @__PURE__ */ jsx45(
|
|
3290
4340
|
DropdownMenuTrigger,
|
|
3291
4341
|
{
|
|
3292
|
-
render: /* @__PURE__ */
|
|
4342
|
+
render: /* @__PURE__ */ jsx45(
|
|
3293
4343
|
TooltipTrigger,
|
|
3294
4344
|
{
|
|
3295
|
-
render: /* @__PURE__ */
|
|
4345
|
+
render: /* @__PURE__ */ jsx45(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx45(Columns3CogIcon, {}) })
|
|
3296
4346
|
}
|
|
3297
4347
|
)
|
|
3298
4348
|
}
|
|
3299
4349
|
),
|
|
3300
|
-
/* @__PURE__ */
|
|
4350
|
+
/* @__PURE__ */ jsx45(TooltipContent, { children: "Toggle columns" })
|
|
3301
4351
|
] }),
|
|
3302
|
-
/* @__PURE__ */
|
|
3303
|
-
/* @__PURE__ */
|
|
3304
|
-
/* @__PURE__ */
|
|
4352
|
+
/* @__PURE__ */ jsx45(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs32(DropdownMenuGroup, { children: [
|
|
4353
|
+
/* @__PURE__ */ jsx45(DropdownMenuLabel, { children: "Toggle columns" }),
|
|
4354
|
+
/* @__PURE__ */ jsx45(DropdownMenuSeparator, {}),
|
|
3305
4355
|
table.getAllColumns().filter(
|
|
3306
4356
|
(column) => typeof column.accessorFn !== "undefined" && column.getCanHide()
|
|
3307
4357
|
).map((column) => {
|
|
3308
4358
|
const headerText = typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
|
|
3309
|
-
return /* @__PURE__ */
|
|
4359
|
+
return /* @__PURE__ */ jsx45(
|
|
3310
4360
|
DropdownMenuCheckboxItem,
|
|
3311
4361
|
{
|
|
3312
4362
|
className: "capitalize hover:cursor-pointer",
|
|
@@ -3323,8 +4373,8 @@ function DataTableHeaderToggle({
|
|
|
3323
4373
|
|
|
3324
4374
|
// src/components/composed/data-table/data-row-actions.tsx
|
|
3325
4375
|
import { MoreHorizontal } from "lucide-react";
|
|
3326
|
-
import { Fragment as
|
|
3327
|
-
import { Fragment as
|
|
4376
|
+
import { Fragment as Fragment10 } from "react";
|
|
4377
|
+
import { Fragment as Fragment11, jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3328
4378
|
function RowActions({
|
|
3329
4379
|
label = "Actions",
|
|
3330
4380
|
items = [],
|
|
@@ -3338,50 +4388,50 @@ function RowActions({
|
|
|
3338
4388
|
if (visibleItems.length === 0) {
|
|
3339
4389
|
return null;
|
|
3340
4390
|
}
|
|
3341
|
-
return /* @__PURE__ */
|
|
4391
|
+
return /* @__PURE__ */ jsx46(
|
|
3342
4392
|
"div",
|
|
3343
4393
|
{
|
|
3344
|
-
className:
|
|
3345
|
-
children: /* @__PURE__ */
|
|
3346
|
-
/* @__PURE__ */
|
|
4394
|
+
className: cn26("flex items-center justify-end w-full", containerClassName),
|
|
4395
|
+
children: /* @__PURE__ */ jsxs33(DropdownMenu, { children: [
|
|
4396
|
+
/* @__PURE__ */ jsx46(
|
|
3347
4397
|
DropdownMenuTrigger,
|
|
3348
4398
|
{
|
|
3349
|
-
render: /* @__PURE__ */
|
|
4399
|
+
render: /* @__PURE__ */ jsx46(Button, { variant: "ghost", size: "icon-xs", "aria-label": triggerLabel, children: triggerIcon != null ? triggerIcon : /* @__PURE__ */ jsx46(MoreHorizontal, { className: "size-4" }) })
|
|
3350
4400
|
}
|
|
3351
4401
|
),
|
|
3352
|
-
/* @__PURE__ */
|
|
4402
|
+
/* @__PURE__ */ jsx46(
|
|
3353
4403
|
DropdownMenuContent,
|
|
3354
4404
|
{
|
|
3355
4405
|
align,
|
|
3356
|
-
className:
|
|
3357
|
-
children: /* @__PURE__ */
|
|
3358
|
-
label && /* @__PURE__ */
|
|
3359
|
-
/* @__PURE__ */
|
|
3360
|
-
/* @__PURE__ */
|
|
4406
|
+
className: cn26("w-40", contentClassName),
|
|
4407
|
+
children: /* @__PURE__ */ jsxs33(DropdownMenuGroup, { children: [
|
|
4408
|
+
label && /* @__PURE__ */ jsxs33(Fragment11, { children: [
|
|
4409
|
+
/* @__PURE__ */ jsx46(DropdownMenuLabel, { children: label }),
|
|
4410
|
+
/* @__PURE__ */ jsx46(DropdownMenuSeparator, {})
|
|
3361
4411
|
] }),
|
|
3362
4412
|
visibleItems.map((item, index) => {
|
|
3363
4413
|
var _a;
|
|
3364
4414
|
const itemKey = (_a = item.id) != null ? _a : `${item.label}-${index}`;
|
|
3365
4415
|
const isDestructive = item.variant === "destructive";
|
|
3366
|
-
return /* @__PURE__ */
|
|
3367
|
-
item.separatorBefore && /* @__PURE__ */
|
|
3368
|
-
/* @__PURE__ */
|
|
4416
|
+
return /* @__PURE__ */ jsxs33(Fragment10, { children: [
|
|
4417
|
+
item.separatorBefore && /* @__PURE__ */ jsx46(DropdownMenuSeparator, {}),
|
|
4418
|
+
/* @__PURE__ */ jsxs33(
|
|
3369
4419
|
DropdownMenuItem,
|
|
3370
4420
|
{
|
|
3371
4421
|
onClick: item.onClick,
|
|
3372
4422
|
disabled: item.disabled,
|
|
3373
|
-
className:
|
|
4423
|
+
className: cn26(
|
|
3374
4424
|
"hover:cursor-pointer flex items-center gap-2",
|
|
3375
4425
|
isDestructive && "text-destructive focus:text-destructive",
|
|
3376
4426
|
item.className
|
|
3377
4427
|
),
|
|
3378
4428
|
children: [
|
|
3379
|
-
item.icon && /* @__PURE__ */
|
|
3380
|
-
/* @__PURE__ */
|
|
4429
|
+
item.icon && /* @__PURE__ */ jsx46("span", { className: "size-4 shrink-0 flex items-center justify-center", children: item.icon }),
|
|
4430
|
+
/* @__PURE__ */ jsx46("span", { children: item.label })
|
|
3381
4431
|
]
|
|
3382
4432
|
}
|
|
3383
4433
|
),
|
|
3384
|
-
item.separatorAfter && /* @__PURE__ */
|
|
4434
|
+
item.separatorAfter && /* @__PURE__ */ jsx46(DropdownMenuSeparator, {})
|
|
3385
4435
|
] }, itemKey);
|
|
3386
4436
|
})
|
|
3387
4437
|
] })
|
|
@@ -3393,7 +4443,7 @@ function RowActions({
|
|
|
3393
4443
|
}
|
|
3394
4444
|
|
|
3395
4445
|
// src/components/composed/data-table/data-table.tsx
|
|
3396
|
-
import { jsx as
|
|
4446
|
+
import { jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
3397
4447
|
function DataTable({
|
|
3398
4448
|
columns,
|
|
3399
4449
|
data,
|
|
@@ -3411,12 +4461,12 @@ function DataTable({
|
|
|
3411
4461
|
showAddButton = true
|
|
3412
4462
|
}) {
|
|
3413
4463
|
const router = useRouter2();
|
|
3414
|
-
const [createOpen, setCreateOpen] =
|
|
3415
|
-
const [sorting, setSorting] =
|
|
3416
|
-
const [columnFilters, setColumnFilters] =
|
|
3417
|
-
const [columnVisibility, setColumnVisibility] =
|
|
3418
|
-
const [globalFilter, setGlobalFilter] =
|
|
3419
|
-
const columnsWithSmartFilters =
|
|
4464
|
+
const [createOpen, setCreateOpen] = useState6(false);
|
|
4465
|
+
const [sorting, setSorting] = useState6([]);
|
|
4466
|
+
const [columnFilters, setColumnFilters] = useState6([]);
|
|
4467
|
+
const [columnVisibility, setColumnVisibility] = useState6(initialColumnVisibility != null ? initialColumnVisibility : {});
|
|
4468
|
+
const [globalFilter, setGlobalFilter] = useState6("");
|
|
4469
|
+
const columnsWithSmartFilters = useMemo5(() => {
|
|
3420
4470
|
return columns.map((col) => __spreadValues({
|
|
3421
4471
|
filterFn: smartFilterFn
|
|
3422
4472
|
}, col));
|
|
@@ -3446,12 +4496,12 @@ function DataTable({
|
|
|
3446
4496
|
});
|
|
3447
4497
|
if (data.length === 0) {
|
|
3448
4498
|
const hasCreateAction = Boolean(renderCreateDialog);
|
|
3449
|
-
return /* @__PURE__ */
|
|
3450
|
-
/* @__PURE__ */
|
|
4499
|
+
return /* @__PURE__ */ jsxs34("div", { className: "space-y-2", children: [
|
|
4500
|
+
/* @__PURE__ */ jsx47(
|
|
3451
4501
|
StateEmpty,
|
|
3452
4502
|
{
|
|
3453
4503
|
state: "outline",
|
|
3454
|
-
icon: /* @__PURE__ */
|
|
4504
|
+
icon: /* @__PURE__ */ jsx47(FolderOpenIcon, { className: "size-6 text-muted-foreground" }),
|
|
3455
4505
|
title: "No Data Available",
|
|
3456
4506
|
description: "There are currently no records to display. Create a new record to get started.",
|
|
3457
4507
|
buttonText: hasCreateAction ? addLabel != null ? addLabel : "Add Record" : "Refresh",
|
|
@@ -3461,26 +4511,26 @@ function DataTable({
|
|
|
3461
4511
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen)
|
|
3462
4512
|
] });
|
|
3463
4513
|
}
|
|
3464
|
-
return /* @__PURE__ */
|
|
3465
|
-
/* @__PURE__ */
|
|
3466
|
-
showSearchInput ? /* @__PURE__ */
|
|
4514
|
+
return /* @__PURE__ */ jsxs34("div", { className: "space-y-2", children: [
|
|
4515
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex flex-row items-center justify-between gap-1", children: [
|
|
4516
|
+
showSearchInput ? /* @__PURE__ */ jsx47(
|
|
3467
4517
|
DataTableHeaderSearch,
|
|
3468
4518
|
{
|
|
3469
4519
|
value: globalFilter,
|
|
3470
4520
|
onChange: setGlobalFilter
|
|
3471
4521
|
}
|
|
3472
|
-
) : /* @__PURE__ */
|
|
3473
|
-
/* @__PURE__ */
|
|
3474
|
-
showRefreshButton && /* @__PURE__ */
|
|
3475
|
-
showSortButton && /* @__PURE__ */
|
|
3476
|
-
showFilterButton && /* @__PURE__ */
|
|
4522
|
+
) : /* @__PURE__ */ jsx47("div", {}),
|
|
4523
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex flex-row items-center gap-1", children: [
|
|
4524
|
+
showRefreshButton && /* @__PURE__ */ jsx47(DataTableHeaderRefresh, {}),
|
|
4525
|
+
showSortButton && /* @__PURE__ */ jsx47(DataTableHeaderSort, { table, sorting }),
|
|
4526
|
+
showFilterButton && /* @__PURE__ */ jsx47(
|
|
3477
4527
|
DataTableHeaderFilter,
|
|
3478
4528
|
{
|
|
3479
4529
|
table,
|
|
3480
4530
|
columnFilters
|
|
3481
4531
|
}
|
|
3482
4532
|
),
|
|
3483
|
-
showDownloadButton && /* @__PURE__ */
|
|
4533
|
+
showDownloadButton && /* @__PURE__ */ jsx47(
|
|
3484
4534
|
DataTableHeaderDownload,
|
|
3485
4535
|
{
|
|
3486
4536
|
table,
|
|
@@ -3488,8 +4538,8 @@ function DataTable({
|
|
|
3488
4538
|
onDownload
|
|
3489
4539
|
}
|
|
3490
4540
|
),
|
|
3491
|
-
showColumnToggleButton && /* @__PURE__ */
|
|
3492
|
-
showAddButton && renderCreateDialog && /* @__PURE__ */
|
|
4541
|
+
showColumnToggleButton && /* @__PURE__ */ jsx47(DataTableHeaderToggle, { table }),
|
|
4542
|
+
showAddButton && renderCreateDialog && /* @__PURE__ */ jsx47(
|
|
3493
4543
|
DataTableHeaderAdd,
|
|
3494
4544
|
{
|
|
3495
4545
|
onAdd: () => setCreateOpen(true),
|
|
@@ -3499,13 +4549,13 @@ function DataTable({
|
|
|
3499
4549
|
] })
|
|
3500
4550
|
] }),
|
|
3501
4551
|
renderCreateDialog == null ? void 0 : renderCreateDialog(createOpen, setCreateOpen),
|
|
3502
|
-
/* @__PURE__ */
|
|
3503
|
-
/* @__PURE__ */
|
|
3504
|
-
/* @__PURE__ */
|
|
4552
|
+
/* @__PURE__ */ jsx47("div", { className: "overflow-hidden rounded-md border [&_[data-slot=table-container]]:no-scrollbar", children: /* @__PURE__ */ jsxs34(Table, { children: [
|
|
4553
|
+
/* @__PURE__ */ jsx47(DataTableContentHeader, { table }),
|
|
4554
|
+
/* @__PURE__ */ jsx47(DataTableContentBody, { table, columns })
|
|
3505
4555
|
] }) }),
|
|
3506
|
-
/* @__PURE__ */
|
|
3507
|
-
/* @__PURE__ */
|
|
3508
|
-
/* @__PURE__ */
|
|
4556
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between px-2", children: [
|
|
4557
|
+
/* @__PURE__ */ jsx47(DataTableFooterEntries, { table }),
|
|
4558
|
+
/* @__PURE__ */ jsx47(DataTableFooterPagination, { table })
|
|
3509
4559
|
] })
|
|
3510
4560
|
] });
|
|
3511
4561
|
}
|
|
@@ -3513,13 +4563,13 @@ function DataTable({
|
|
|
3513
4563
|
// src/components/composed/header-tabs.tsx
|
|
3514
4564
|
import Link2 from "next/link";
|
|
3515
4565
|
import { usePathname as usePathname2 } from "next/navigation";
|
|
3516
|
-
import { memo as
|
|
4566
|
+
import { memo as memo18 } from "react";
|
|
3517
4567
|
|
|
3518
4568
|
// src/components/ui/tabs.tsx
|
|
3519
4569
|
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
3520
4570
|
import { cva as cva5 } from "class-variance-authority";
|
|
3521
|
-
import { cn as
|
|
3522
|
-
import { jsx as
|
|
4571
|
+
import { cn as cn31 } from "cn";
|
|
4572
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
3523
4573
|
function Tabs(_a) {
|
|
3524
4574
|
var _b = _a, {
|
|
3525
4575
|
className,
|
|
@@ -3528,12 +4578,12 @@ function Tabs(_a) {
|
|
|
3528
4578
|
"className",
|
|
3529
4579
|
"orientation"
|
|
3530
4580
|
]);
|
|
3531
|
-
return /* @__PURE__ */
|
|
4581
|
+
return /* @__PURE__ */ jsx48(
|
|
3532
4582
|
TabsPrimitive.Root,
|
|
3533
4583
|
__spreadValues({
|
|
3534
4584
|
"data-slot": "tabs",
|
|
3535
4585
|
"data-orientation": orientation,
|
|
3536
|
-
className:
|
|
4586
|
+
className: cn31(
|
|
3537
4587
|
"group/tabs flex gap-2 data-horizontal:flex-col",
|
|
3538
4588
|
className
|
|
3539
4589
|
)
|
|
@@ -3562,22 +4612,22 @@ function TabsList(_a) {
|
|
|
3562
4612
|
"className",
|
|
3563
4613
|
"variant"
|
|
3564
4614
|
]);
|
|
3565
|
-
return /* @__PURE__ */
|
|
4615
|
+
return /* @__PURE__ */ jsx48(
|
|
3566
4616
|
TabsPrimitive.List,
|
|
3567
4617
|
__spreadValues({
|
|
3568
4618
|
"data-slot": "tabs-list",
|
|
3569
4619
|
"data-variant": variant,
|
|
3570
|
-
className:
|
|
4620
|
+
className: cn31(tabsListVariants({ variant }), className)
|
|
3571
4621
|
}, props)
|
|
3572
4622
|
);
|
|
3573
4623
|
}
|
|
3574
4624
|
function TabsTrigger(_a) {
|
|
3575
4625
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3576
|
-
return /* @__PURE__ */
|
|
4626
|
+
return /* @__PURE__ */ jsx48(
|
|
3577
4627
|
TabsPrimitive.Tab,
|
|
3578
4628
|
__spreadValues({
|
|
3579
4629
|
"data-slot": "tabs-trigger",
|
|
3580
|
-
className:
|
|
4630
|
+
className: cn31(
|
|
3581
4631
|
"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",
|
|
3582
4632
|
"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",
|
|
3583
4633
|
"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
|
|
@@ -3589,16 +4639,16 @@ function TabsTrigger(_a) {
|
|
|
3589
4639
|
}
|
|
3590
4640
|
|
|
3591
4641
|
// src/components/composed/header-tabs.tsx
|
|
3592
|
-
import { jsx as
|
|
4642
|
+
import { jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
3593
4643
|
function renderTabIcon(icon) {
|
|
3594
4644
|
if (!icon) return null;
|
|
3595
4645
|
if (typeof icon === "function" || typeof icon === "object" && icon !== null && "render" in icon) {
|
|
3596
4646
|
const IconComp = icon;
|
|
3597
|
-
return /* @__PURE__ */
|
|
4647
|
+
return /* @__PURE__ */ jsx49(IconComp, {});
|
|
3598
4648
|
}
|
|
3599
4649
|
return icon;
|
|
3600
4650
|
}
|
|
3601
|
-
var HeaderTabs =
|
|
4651
|
+
var HeaderTabs = memo18(function HeaderTabs2({
|
|
3602
4652
|
items,
|
|
3603
4653
|
value,
|
|
3604
4654
|
onValueChange,
|
|
@@ -3610,12 +4660,12 @@ var HeaderTabs = memo9(function HeaderTabs2({
|
|
|
3610
4660
|
(item) => item.url === pathname || pathname.endsWith(item.url) || pathname.split("/").includes(item.value)
|
|
3611
4661
|
) : void 0;
|
|
3612
4662
|
const activeTab = (_b = value != null ? value : matchedItem == null ? void 0 : matchedItem.value) != null ? _b : (_a = items[0]) == null ? void 0 : _a.value;
|
|
3613
|
-
return /* @__PURE__ */
|
|
3614
|
-
/* @__PURE__ */
|
|
4663
|
+
return /* @__PURE__ */ jsxs35(Tabs, { value: activeTab, onValueChange, className: "space-y-4", children: [
|
|
4664
|
+
/* @__PURE__ */ jsx49("div", { className: "w-full overflow-x-auto overflow-y-hidden border-b no-scrollbar", children: /* @__PURE__ */ jsx49(TabsList, { variant: "line", className: "inline-flex w-max justify-start", children: items.map(({ title, value: tabValue, url, icon }) => /* @__PURE__ */ jsxs35(
|
|
3615
4665
|
TabsTrigger,
|
|
3616
4666
|
{
|
|
3617
4667
|
nativeButton: false,
|
|
3618
|
-
render: /* @__PURE__ */
|
|
4668
|
+
render: /* @__PURE__ */ jsx49(Link2, { href: url }),
|
|
3619
4669
|
value: tabValue,
|
|
3620
4670
|
children: [
|
|
3621
4671
|
renderTabIcon(icon),
|
|
@@ -3629,27 +4679,27 @@ var HeaderTabs = memo9(function HeaderTabs2({
|
|
|
3629
4679
|
});
|
|
3630
4680
|
|
|
3631
4681
|
// src/components/composed/header-title.tsx
|
|
3632
|
-
import { memo as
|
|
3633
|
-
import { jsx as
|
|
3634
|
-
var HeaderTitle =
|
|
4682
|
+
import { memo as memo19 } from "react";
|
|
4683
|
+
import { jsx as jsx50, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
4684
|
+
var HeaderTitle = memo19(function HeaderTitle2({
|
|
3635
4685
|
title,
|
|
3636
4686
|
subtitle,
|
|
3637
4687
|
children
|
|
3638
4688
|
}) {
|
|
3639
|
-
return /* @__PURE__ */
|
|
3640
|
-
/* @__PURE__ */
|
|
3641
|
-
/* @__PURE__ */
|
|
3642
|
-
/* @__PURE__ */
|
|
4689
|
+
return /* @__PURE__ */ jsxs36("div", { className: "w-full space-y-4", children: [
|
|
4690
|
+
/* @__PURE__ */ jsxs36("div", { children: [
|
|
4691
|
+
/* @__PURE__ */ jsx50("h1", { className: "font-semibold", children: title }),
|
|
4692
|
+
/* @__PURE__ */ jsx50("p", { className: "text-xs text-muted-foreground", children: subtitle })
|
|
3643
4693
|
] }),
|
|
3644
4694
|
children
|
|
3645
4695
|
] });
|
|
3646
4696
|
});
|
|
3647
4697
|
|
|
3648
4698
|
// src/components/composed/icons/google.tsx
|
|
3649
|
-
import { jsx as
|
|
4699
|
+
import { jsx as jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
3650
4700
|
function GoogleIcon(_a) {
|
|
3651
4701
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3652
|
-
return /* @__PURE__ */
|
|
4702
|
+
return /* @__PURE__ */ jsxs37(
|
|
3653
4703
|
"svg",
|
|
3654
4704
|
__spreadProps(__spreadValues({
|
|
3655
4705
|
role: "img",
|
|
@@ -3659,28 +4709,28 @@ function GoogleIcon(_a) {
|
|
|
3659
4709
|
xmlns: "http://www.w3.org/2000/svg"
|
|
3660
4710
|
}, props), {
|
|
3661
4711
|
children: [
|
|
3662
|
-
/* @__PURE__ */
|
|
4712
|
+
/* @__PURE__ */ jsx51(
|
|
3663
4713
|
"path",
|
|
3664
4714
|
{
|
|
3665
4715
|
fill: "#4285F4",
|
|
3666
4716
|
d: "M23.745 12.27c0-.7-.06-1.4-.19-2.07H12v4.51h6.6c-.29 1.52-1.14 2.82-2.4 3.68v3.05h3.88c2.27-2.09 3.665-5.17 3.665-9.17z"
|
|
3667
4717
|
}
|
|
3668
4718
|
),
|
|
3669
|
-
/* @__PURE__ */
|
|
4719
|
+
/* @__PURE__ */ jsx51(
|
|
3670
4720
|
"path",
|
|
3671
4721
|
{
|
|
3672
4722
|
fill: "#34A853",
|
|
3673
4723
|
d: "M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.88-3.05c-1.08.72-2.45 1.16-4.05 1.16-3.12 0-5.77-2.1-6.72-4.93H1.24v3.15C3.26 21.36 7.33 24 12 24z"
|
|
3674
4724
|
}
|
|
3675
4725
|
),
|
|
3676
|
-
/* @__PURE__ */
|
|
4726
|
+
/* @__PURE__ */ jsx51(
|
|
3677
4727
|
"path",
|
|
3678
4728
|
{
|
|
3679
4729
|
fill: "#FBBC05",
|
|
3680
4730
|
d: "M5.28 14.27c-.25-.72-.38-1.49-.38-2.27s.13-1.55.38-2.27V6.58H1.24C.45 8.16 0 9.97 0 12s.45 3.84 1.24 5.42l4.04-3.15z"
|
|
3681
4731
|
}
|
|
3682
4732
|
),
|
|
3683
|
-
/* @__PURE__ */
|
|
4733
|
+
/* @__PURE__ */ jsx51(
|
|
3684
4734
|
"path",
|
|
3685
4735
|
{
|
|
3686
4736
|
fill: "#EA4335",
|
|
@@ -3692,8 +4742,16 @@ function GoogleIcon(_a) {
|
|
|
3692
4742
|
);
|
|
3693
4743
|
}
|
|
3694
4744
|
export {
|
|
4745
|
+
ActiveTokensStatus,
|
|
3695
4746
|
AppSidebar,
|
|
4747
|
+
AvatarGroupInvitations,
|
|
4748
|
+
AvatarGroupUsers,
|
|
4749
|
+
AvatarInvitations,
|
|
3696
4750
|
AvatarUser,
|
|
4751
|
+
AvatarUsers,
|
|
4752
|
+
CodeLabel,
|
|
4753
|
+
CopyableCode,
|
|
4754
|
+
DEFAULT_METADATA_FIELDS,
|
|
3697
4755
|
DataTable,
|
|
3698
4756
|
DataTableContentBody,
|
|
3699
4757
|
DataTableContentHeader,
|
|
@@ -3706,14 +4764,32 @@ export {
|
|
|
3706
4764
|
DataTableHeaderSearch,
|
|
3707
4765
|
DataTableHeaderSort,
|
|
3708
4766
|
DataTableHeaderToggle,
|
|
4767
|
+
DescriptionLabel,
|
|
3709
4768
|
EmailLabel,
|
|
3710
4769
|
EmailVerified,
|
|
3711
4770
|
GoogleIcon,
|
|
3712
4771
|
HeaderTabs,
|
|
3713
4772
|
HeaderTitle,
|
|
4773
|
+
ItemStatus,
|
|
3714
4774
|
JoinedLabel,
|
|
4775
|
+
MetadataProgress,
|
|
4776
|
+
MetadataStatus,
|
|
4777
|
+
OrganizationInvitations,
|
|
4778
|
+
OrganizationRoleBadge,
|
|
4779
|
+
OrganizationRoles,
|
|
4780
|
+
PermissionBadges,
|
|
4781
|
+
PermissionsBadges,
|
|
4782
|
+
ProgressStatus,
|
|
4783
|
+
RedirectUriLabel,
|
|
4784
|
+
RedirectUris,
|
|
3715
4785
|
RowActions,
|
|
4786
|
+
RunningStatus,
|
|
4787
|
+
SlugLabel,
|
|
3716
4788
|
StateEmpty,
|
|
4789
|
+
StatusBadge,
|
|
4790
|
+
TokenActivity,
|
|
4791
|
+
UrisLabel,
|
|
4792
|
+
UrisList,
|
|
3717
4793
|
UserRole,
|
|
3718
4794
|
UserStatus,
|
|
3719
4795
|
exportToCSV,
|