@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.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
- var AppSidebar = memo(function AppSidebar2({
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(SidebarProvider, { defaultOpen, children: [
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(SidebarMenuButton, { size: "lg", render: /* @__PURE__ */ jsx12(Link, { href: "/" }), children: [
1356
- /* @__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" }) }),
1357
- /* @__PURE__ */ jsxs7("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1358
- /* @__PURE__ */ jsx12("span", { className: "truncate font-medium", children: brand }),
1359
- /* @__PURE__ */ jsx12("span", { className: "truncate text-xs capitalize", children: orgRole })
1360
- ] })
1361
- ] }) }) }) }),
1362
- /* @__PURE__ */ jsxs7(SidebarContent, { children: [
1363
- /* @__PURE__ */ jsxs7(SidebarGroup, { children: [
1364
- /* @__PURE__ */ jsx12(SidebarGroupLabel, { children: "Platform" }),
1365
- /* @__PURE__ */ jsx12(SidebarMenu, { children: navMainItems.map(({ title, url, icon, locked }) => {
1366
- const isActive = isRouteActive(url, pathname);
1367
- return /* @__PURE__ */ jsxs7(SidebarMenuItem, { children: [
1368
- /* @__PURE__ */ jsxs7(
1369
- SidebarMenuButton,
1370
- {
1371
- isActive,
1372
- tooltip: title,
1373
- render: /* @__PURE__ */ jsx12(Link, { href: url }),
1374
- children: [
1375
- renderNavIcon(icon),
1376
- /* @__PURE__ */ jsx12("span", { children: title })
1377
- ]
1378
- }
1379
- ),
1380
- locked && /* @__PURE__ */ jsx12(SidebarMenuBadge, { children: /* @__PURE__ */ jsx12(LockIcon, { size: 12 }) })
1381
- ] }, title);
1382
- }) })
1383
- ] }),
1384
- /* @__PURE__ */ jsx12(SidebarGroup, { className: "mt-auto", children: /* @__PURE__ */ jsx12(SidebarGroupContent, { children: /* @__PURE__ */ jsx12(SidebarMenu, { children: navSecondaryItems.map(({ title, url, icon, locked }) => {
1385
- const isActive = isRouteActive(url, pathname);
1386
- return /* @__PURE__ */ jsxs7(SidebarMenuItem, { children: [
1387
- /* @__PURE__ */ jsxs7(
1388
- SidebarMenuButton,
1389
- {
1390
- size: "sm",
1391
- isActive,
1392
- tooltip: title,
1393
- render: /* @__PURE__ */ jsx12(Link, { href: url }),
1394
- children: [
1395
- renderNavIcon(icon),
1396
- /* @__PURE__ */ jsx12("span", { children: title })
1397
- ]
1398
- }
1399
- ),
1400
- locked && /* @__PURE__ */ jsx12(SidebarMenuBadge, { children: /* @__PURE__ */ jsx12(LockIcon, { size: 12 }) })
1401
- ] }, title);
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(Link, { href, target: "_blank" }),
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(SidebarMenuButton, { size: "lg", render: /* @__PURE__ */ jsx12(Link, { href }), children: [
1438
- /* @__PURE__ */ jsxs7(Avatar, { children: [
1439
- /* @__PURE__ */ jsx12(AvatarImage, { src: image || "", alt: name || "" }),
1440
- /* @__PURE__ */ jsx12(AvatarFallback, { children: initials })
1441
- ] }),
1442
- /* @__PURE__ */ jsxs7("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [
1443
- /* @__PURE__ */ jsx12("span", { className: "truncate font-medium", children: name }),
1444
- /* @__PURE__ */ jsx12("span", { className: "truncate text-xs text-muted-foreground", children: email })
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-user.tsx
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 = memo2(function AvatarUser2({
1711
+ var AvatarUser = memo4(function AvatarUser2({
1485
1712
  name,
1486
- image
1713
+ image,
1714
+ className,
1715
+ size = "sm"
1487
1716
  }) {
1488
- return /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
1489
- /* @__PURE__ */ jsxs8(Avatar, { size: "sm", children: [
1490
- /* @__PURE__ */ jsx13(AvatarImage, { src: image != null ? image : void 0, alt: name != null ? name : void 0 }),
1491
- /* @__PURE__ */ jsx13(AvatarFallback, { children: getInitials(name) })
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__ */ jsx13("p", { className: "text-xs font-medium", children: name })
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 memo3 } from "react";
1499
- import { jsx as jsx14 } from "react/jsx-runtime";
1500
- var EmailLabel = memo3(function EmailLabel2({ email }) {
1501
- return /* @__PURE__ */ jsx14("span", { className: "text-xs font-mono", children: email });
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 { BadgeCheck } from "lucide-react";
1506
- import { memo as memo4 } from "react";
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 cn12 } from "cn";
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: cn12(badgeVariants({ variant }), 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 jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1559
- var EmailVerified = memo4(function EmailVerified2({
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
- return verified ? /* @__PURE__ */ jsxs9(Badge, { variant: "default", children: [
1563
- /* @__PURE__ */ jsx15(BadgeCheck, { "data-icon": "inline-start" }),
1564
- "Verified"
1565
- ] }) : /* @__PURE__ */ jsxs9(Badge, { variant: "destructive", children: [
1566
- /* @__PURE__ */ jsx15(BadgeCheck, { "data-icon": "inline-start" }),
1567
- "Unverified"
1568
- ] });
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 memo5 } from "react";
1573
- import { jsx as jsx16 } from "react/jsx-runtime";
1574
- var JoinedLabel = memo5(function JoinedLabel2({
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__ */ jsx16("span", { className: "text-xs font-mono", children: new Intl.DateTimeFormat(locale, {
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/user-role.tsx
1589
- import { UserIcon, UserStarIcon } from "lucide-react";
1590
- import { memo as memo6 } from "react";
1591
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
1592
- var UserRole = memo6(function UserRole2({ role }) {
1593
- const isAdmin = role === "admin";
1594
- return /* @__PURE__ */ jsxs10(Badge, { variant: "outline", className: "capitalize", children: [
1595
- isAdmin ? /* @__PURE__ */ jsx17(UserStarIcon, { "data-icon": "inline-start" }) : /* @__PURE__ */ jsx17(UserIcon, { "data-icon": "inline-start" }),
1596
- role
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/user-status.tsx
1601
- import { BadgeCheck as BadgeCheck2 } from "lucide-react";
1602
- import { memo as memo7 } from "react";
1603
- import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
1604
- var UserStatus = memo7(function UserStatus2({
1605
- status
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
- return status ? /* @__PURE__ */ jsxs11(Badge, { variant: "destructive", children: [
1608
- /* @__PURE__ */ jsx18(BadgeCheck2, { "data-icon": "inline-start" }),
1609
- "Inactive"
1610
- ] }) : /* @__PURE__ */ jsxs11(Badge, { variant: "default", children: [
1611
- /* @__PURE__ */ jsx18(BadgeCheck2, { "data-icon": "inline-start" }),
1612
- "Active"
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 useMemo3, useState as useState5 } from "react";
2673
+ import { useMemo as useMemo5, useState as useState6 } from "react";
1624
2674
 
1625
2675
  // src/components/composed/state-empty.tsx
1626
- import { memo as memo8 } from "react";
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 cn13 } from "cn";
1631
- import { jsx as jsx19 } from "react/jsx-runtime";
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__ */ jsx19(
2684
+ return /* @__PURE__ */ jsx29(
1635
2685
  "div",
1636
2686
  __spreadValues({
1637
2687
  "data-slot": "empty",
1638
- className: cn13(
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__ */ jsx19(
2697
+ return /* @__PURE__ */ jsx29(
1648
2698
  "div",
1649
2699
  __spreadValues({
1650
2700
  "data-slot": "empty-header",
1651
- className: cn13("flex max-w-sm flex-col items-center gap-1", 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__ */ jsx19(
2727
+ return /* @__PURE__ */ jsx29(
1678
2728
  "div",
1679
2729
  __spreadValues({
1680
2730
  "data-slot": "empty-icon",
1681
2731
  "data-variant": variant,
1682
- className: cn13(emptyMediaVariants({ variant, 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__ */ jsx19(
2738
+ return /* @__PURE__ */ jsx29(
1689
2739
  "div",
1690
2740
  __spreadValues({
1691
2741
  "data-slot": "empty-title",
1692
- className: cn13(
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__ */ jsx19(
2751
+ return /* @__PURE__ */ jsx29(
1702
2752
  "div",
1703
2753
  __spreadValues({
1704
2754
  "data-slot": "empty-description",
1705
- className: cn13(
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__ */ jsx19(
2764
+ return /* @__PURE__ */ jsx29(
1715
2765
  "div",
1716
2766
  __spreadValues({
1717
2767
  "data-slot": "empty-content",
1718
- className: cn13(
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 cn14 } from "cn";
2777
+ import { cn as cn26 } from "cn";
1728
2778
 
1729
2779
  // src/components/composed/state-empty.tsx
1730
- import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
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__ */ jsx20(IconComp, {});
2784
+ return /* @__PURE__ */ jsx30(IconComp, {});
1735
2785
  }
1736
2786
  return icon;
1737
2787
  }
1738
- var StateEmpty = memo8(function StateEmpty2({
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__ */ jsxs12(
2801
+ return /* @__PURE__ */ jsxs22(
1752
2802
  Empty,
1753
2803
  {
1754
- className: cn14("w-full", state === "outline" && "border border-dashed"),
2804
+ className: cn26("w-full", state === "outline" && "border border-dashed"),
1755
2805
  children: [
1756
- /* @__PURE__ */ jsxs12(EmptyHeader, { children: [
1757
- /* @__PURE__ */ jsx20(EmptyMedia, { variant: "icon", children: renderStateIcon(icon) }),
1758
- /* @__PURE__ */ jsx20(EmptyTitle, { children: title }),
1759
- /* @__PURE__ */ jsx20(EmptyDescription, { children: description })
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__ */ jsx20(EmptyContent, { children: /* @__PURE__ */ jsx20(
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 cn15 } from "cn";
1779
- import { jsx as jsx21 } from "react/jsx-runtime";
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__ */ jsx21(
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__ */ jsx21(
2837
+ children: /* @__PURE__ */ jsx31(
1788
2838
  "table",
1789
2839
  __spreadValues({
1790
2840
  "data-slot": "table",
1791
- className: cn15("w-full caption-bottom text-xs", 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__ */ jsx21(
2849
+ return /* @__PURE__ */ jsx31(
1800
2850
  "thead",
1801
2851
  __spreadValues({
1802
2852
  "data-slot": "table-header",
1803
- className: cn15("[&_tr]:border-b", 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__ */ jsx21(
2859
+ return /* @__PURE__ */ jsx31(
1810
2860
  "tbody",
1811
2861
  __spreadValues({
1812
2862
  "data-slot": "table-body",
1813
- className: cn15("[&_tr:last-child]:border-0", 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__ */ jsx21(
2869
+ return /* @__PURE__ */ jsx31(
1820
2870
  "tr",
1821
2871
  __spreadValues({
1822
2872
  "data-slot": "table-row",
1823
- className: cn15(
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__ */ jsx21(
2882
+ return /* @__PURE__ */ jsx31(
1833
2883
  "th",
1834
2884
  __spreadValues({
1835
2885
  "data-slot": "table-head",
1836
- className: cn15(
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__ */ jsx21(
2895
+ return /* @__PURE__ */ jsx31(
1846
2896
  "td",
1847
2897
  __spreadValues({
1848
2898
  "data-slot": "table-cell",
1849
- className: cn15(
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 jsx22 } from "react/jsx-runtime";
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__ */ jsx22(TableBody, { children: rows.map((row) => /* @__PURE__ */ jsx22(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx22(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id)) }, row.id)) });
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__ */ jsx22(TableBody, { children: /* @__PURE__ */ jsx22(TableRow, { children: /* @__PURE__ */ jsx22(TableCell, { colSpan: columns.length, className: "h-48 text-center", children: /* @__PURE__ */ jsx22(
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__ */ jsx22(SearchXIcon, {}),
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 jsx23 } from "react/jsx-runtime";
2978
+ import { jsx as jsx33 } from "react/jsx-runtime";
1929
2979
  function DataTableContentHeader({
1930
2980
  table
1931
2981
  }) {
1932
- return /* @__PURE__ */ jsx23(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx23(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx23(TableHead, { children: header.isPlaceholder ? null : flexRender2(
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 jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
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__ */ jsxs13("div", { className: "flex-1 text-xs text-muted-foreground", children: [
3000
+ return /* @__PURE__ */ jsxs23("div", { className: "flex-1 text-xs text-muted-foreground", children: [
1951
3001
  "Showing",
1952
3002
  " ",
1953
- /* @__PURE__ */ jsxs13("span", { className: "font-medium text-foreground", children: [
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__ */ jsx24("span", { className: "font-medium text-foreground", children: totalRows }),
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 jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
3023
+ import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
1974
3024
  function DataTableFooterPagination({
1975
3025
  table
1976
3026
  }) {
1977
- return /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-1", children: [
1978
- /* @__PURE__ */ jsxs14(Tooltip, { children: [
1979
- /* @__PURE__ */ jsx25(
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__ */ jsx25(
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__ */ jsx25(ChevronsLeftIcon, {})
3039
+ children: /* @__PURE__ */ jsx35(ChevronsLeftIcon, {})
1990
3040
  }
1991
3041
  )
1992
3042
  }
1993
3043
  ),
1994
- /* @__PURE__ */ jsx25(TooltipContent, { children: "Go to first page" })
3044
+ /* @__PURE__ */ jsx35(TooltipContent, { children: "Go to first page" })
1995
3045
  ] }),
1996
- /* @__PURE__ */ jsxs14(Tooltip, { children: [
1997
- /* @__PURE__ */ jsx25(
3046
+ /* @__PURE__ */ jsxs24(Tooltip, { children: [
3047
+ /* @__PURE__ */ jsx35(
1998
3048
  TooltipTrigger,
1999
3049
  {
2000
- render: /* @__PURE__ */ jsx25(
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__ */ jsx25(ChevronLeftIcon, {})
3057
+ children: /* @__PURE__ */ jsx35(ChevronLeftIcon, {})
2008
3058
  }
2009
3059
  )
2010
3060
  }
2011
3061
  ),
2012
- /* @__PURE__ */ jsx25(TooltipContent, { children: "Go to previous page" })
3062
+ /* @__PURE__ */ jsx35(TooltipContent, { children: "Go to previous page" })
2013
3063
  ] }),
2014
- /* @__PURE__ */ jsxs14(Tooltip, { children: [
2015
- /* @__PURE__ */ jsx25(
3064
+ /* @__PURE__ */ jsxs24(Tooltip, { children: [
3065
+ /* @__PURE__ */ jsx35(
2016
3066
  TooltipTrigger,
2017
3067
  {
2018
- render: /* @__PURE__ */ jsx25(
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__ */ jsx25(ChevronRightIcon3, {})
3075
+ children: /* @__PURE__ */ jsx35(ChevronRightIcon3, {})
2026
3076
  }
2027
3077
  )
2028
3078
  }
2029
3079
  ),
2030
- /* @__PURE__ */ jsx25(TooltipContent, { children: "Go to next page" })
3080
+ /* @__PURE__ */ jsx35(TooltipContent, { children: "Go to next page" })
2031
3081
  ] }),
2032
- /* @__PURE__ */ jsxs14(Tooltip, { children: [
2033
- /* @__PURE__ */ jsx25(
3082
+ /* @__PURE__ */ jsxs24(Tooltip, { children: [
3083
+ /* @__PURE__ */ jsx35(
2034
3084
  TooltipTrigger,
2035
3085
  {
2036
- render: /* @__PURE__ */ jsx25(
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__ */ jsx25(ChevronsRightIcon, {})
3093
+ children: /* @__PURE__ */ jsx35(ChevronsRightIcon, {})
2044
3094
  }
2045
3095
  )
2046
3096
  }
2047
3097
  ),
2048
- /* @__PURE__ */ jsx25(TooltipContent, { children: "Go to last page" })
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 jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
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__ */ jsxs15(Fragment, { children: [
2061
- /* @__PURE__ */ jsxs15(Tooltip, { children: [
2062
- /* @__PURE__ */ jsx26(
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__ */ jsx26(Button, { variant: "default", size: "icon", onClick: onAdd, children: /* @__PURE__ */ jsx26(PlusIcon, {}) })
3116
+ render: /* @__PURE__ */ jsx36(Button, { variant: "default", size: "icon", onClick: onAdd, children: /* @__PURE__ */ jsx36(PlusIcon, {}) })
2067
3117
  }
2068
3118
  ),
2069
- /* @__PURE__ */ jsx26(TooltipContent, { children: addLabel != null ? addLabel : "Add" })
3119
+ /* @__PURE__ */ jsx36(TooltipContent, { children: addLabel != null ? addLabel : "Add" })
2070
3120
  ] }),
2071
- /* @__PURE__ */ jsxs15(Button, { variant: "default", onClick: onAdd, className: "hidden sm:flex", children: [
2072
- /* @__PURE__ */ jsx26(PlusIcon, {}),
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 jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
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__ */ jsxs16(DropdownMenu, { children: [
2269
- /* @__PURE__ */ jsxs16(Tooltip, { children: [
2270
- /* @__PURE__ */ jsx27(
3318
+ return /* @__PURE__ */ jsxs26(DropdownMenu, { children: [
3319
+ /* @__PURE__ */ jsxs26(Tooltip, { children: [
3320
+ /* @__PURE__ */ jsx37(
2271
3321
  DropdownMenuTrigger,
2272
3322
  {
2273
- render: /* @__PURE__ */ jsx27(
3323
+ render: /* @__PURE__ */ jsx37(
2274
3324
  TooltipTrigger,
2275
3325
  {
2276
- render: /* @__PURE__ */ jsx27(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx27(DownloadIcon, {}) })
3326
+ render: /* @__PURE__ */ jsx37(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx37(DownloadIcon, {}) })
2277
3327
  }
2278
3328
  )
2279
3329
  }
2280
3330
  ),
2281
- /* @__PURE__ */ jsx27(TooltipContent, { children: "Download options" })
3331
+ /* @__PURE__ */ jsx37(TooltipContent, { children: "Download options" })
2282
3332
  ] }),
2283
- /* @__PURE__ */ jsx27(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs16(DropdownMenuGroup, { children: [
2284
- /* @__PURE__ */ jsx27(DropdownMenuLabel, { children: "Download data" }),
2285
- /* @__PURE__ */ jsx27(DropdownMenuSeparator, {}),
2286
- /* @__PURE__ */ jsxs16(
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__ */ jsx27(FileTextIcon, {}),
3346
+ /* @__PURE__ */ jsx37(FileTextIcon, {}),
2297
3347
  "Download PDF"
2298
3348
  ]
2299
3349
  }
2300
3350
  ),
2301
- /* @__PURE__ */ jsxs16(
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__ */ jsx27(FileSpreadsheetIcon, {}),
3361
+ /* @__PURE__ */ jsx37(FileSpreadsheetIcon, {}),
2312
3362
  "Download Excel"
2313
3363
  ]
2314
3364
  }
2315
3365
  ),
2316
- /* @__PURE__ */ jsxs16(
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__ */ jsx27(FileCodeIcon, {}),
3376
+ /* @__PURE__ */ jsx37(FileCodeIcon, {}),
2327
3377
  "Download CSV"
2328
3378
  ]
2329
3379
  }
2330
3380
  ),
2331
- /* @__PURE__ */ jsx27(DropdownMenuSeparator, {}),
2332
- /* @__PURE__ */ jsxs16(
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__ */ jsx27(PrinterIcon, {}),
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 useMemo2, useState as useState3 } from "react";
3403
+ import { useMemo as useMemo4, useState as useState4 } from "react";
2354
3404
 
2355
3405
  // src/components/ui/calendar.tsx
2356
- import { cn as cn16 } from "cn";
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 jsx28 } from "react/jsx-runtime";
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__ */ jsx28(
3439
+ return /* @__PURE__ */ jsx38(
2390
3440
  DayPicker,
2391
3441
  __spreadValues({
2392
3442
  showOutsideDays,
2393
- className: cn16(
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: cn16("w-fit", defaultClassNames.root),
2406
- months: cn16(
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: cn16("flex w-full flex-col gap-4", defaultClassNames.month),
2411
- nav: cn16(
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: cn16(
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: cn16(
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: cn16(
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: cn16(
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: cn16(
3483
+ dropdown_root: cn28(
2434
3484
  "relative rounded-(--cell-radius)",
2435
3485
  defaultClassNames.dropdown_root
2436
3486
  ),
2437
- dropdown: cn16(
3487
+ dropdown: cn28(
2438
3488
  "absolute inset-0 bg-popover opacity-0",
2439
3489
  defaultClassNames.dropdown
2440
3490
  ),
2441
- caption_label: cn16(
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: cn16("w-full border-collapse", defaultClassNames.month_grid),
2447
- weekdays: cn16("flex", defaultClassNames.weekdays),
2448
- weekday: cn16(
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: cn16("mt-2 flex w-full", defaultClassNames.week),
2453
- week_number_header: cn16(
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: cn16(
3507
+ week_number: cn28(
2458
3508
  "text-[0.8rem] text-muted-foreground select-none",
2459
3509
  defaultClassNames.week_number
2460
3510
  ),
2461
- day: cn16(
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: cn16(
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: cn16("rounded-none", defaultClassNames.range_middle),
2471
- range_end: cn16(
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: cn16(
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: cn16(
3529
+ outside: cn28(
2480
3530
  "text-muted-foreground aria-selected:text-muted-foreground",
2481
3531
  defaultClassNames.outside
2482
3532
  ),
2483
- disabled: cn16(
3533
+ disabled: cn28(
2484
3534
  "text-muted-foreground opacity-50",
2485
3535
  defaultClassNames.disabled
2486
3536
  ),
2487
- hidden: cn16("invisible", defaultClassNames.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__ */ jsx28(
3542
+ return /* @__PURE__ */ jsx38(
2493
3543
  "div",
2494
3544
  __spreadValues({
2495
3545
  "data-slot": "calendar",
2496
3546
  ref: rootRef,
2497
- className: cn16(className2)
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__ */ jsx28(ChevronLeftIcon2, __spreadValues({ className: cn16("size-4", className2) }, props2));
3554
+ return /* @__PURE__ */ jsx38(ChevronLeftIcon2, __spreadValues({ className: cn28("size-4", className2) }, props2));
2505
3555
  }
2506
3556
  if (orientation === "right") {
2507
- return /* @__PURE__ */ jsx28(
3557
+ return /* @__PURE__ */ jsx38(
2508
3558
  ChevronRightIcon4,
2509
3559
  __spreadValues({
2510
- className: cn16("size-4", className2)
3560
+ className: cn28("size-4", className2)
2511
3561
  }, props2)
2512
3562
  );
2513
3563
  }
2514
- return /* @__PURE__ */ jsx28(ChevronDownIcon, __spreadValues({ className: cn16("size-4", className2) }, props2));
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__ */ jsx28(CalendarDayButton, __spreadValues({ locale }, props2));
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__ */ jsx28("td", __spreadProps(__spreadValues({}, props2), { children: /* @__PURE__ */ jsx28("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
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__ */ jsx28(
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: cn16(
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 cn17 } from "cn";
2568
- import { jsx as jsx29 } from "react/jsx-runtime";
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__ */ jsx29(PopoverPrimitive.Root, __spreadValues({ "data-slot": "popover" }, props));
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__ */ jsx29(PopoverPrimitive.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
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__ */ jsx29(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx29(
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__ */ jsx29(
3649
+ children: /* @__PURE__ */ jsx39(
2600
3650
  PopoverPrimitive.Popup,
2601
3651
  __spreadValues({
2602
3652
  "data-slot": "popover-content",
2603
- className: cn17(
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 cn18 } from "cn";
2616
- import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon2, ChevronUpIcon } from "lucide-react";
2617
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
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__ */ jsx30(
3671
+ return /* @__PURE__ */ jsx40(
2622
3672
  SelectPrimitive.Value,
2623
3673
  __spreadValues({
2624
3674
  "data-slot": "select-value",
2625
- className: cn18("flex flex-1 text-left", 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__ */ jsxs17(
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: cn18(
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__ */ jsx30(
3701
+ /* @__PURE__ */ jsx40(
2652
3702
  SelectPrimitive.Icon,
2653
3703
  {
2654
- render: /* @__PURE__ */ jsx30(ChevronDownIcon2, { className: "pointer-events-none size-3.5 text-muted-foreground" })
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__ */ jsx30(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx30(
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__ */ jsxs17(
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: cn18(
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__ */ jsx30(SelectScrollUpButton, {}),
2700
- /* @__PURE__ */ jsx30(SelectPrimitive.List, { children }),
2701
- /* @__PURE__ */ jsx30(SelectScrollDownButton, {})
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__ */ jsxs17(
3766
+ return /* @__PURE__ */ jsxs27(
2717
3767
  SelectPrimitive.Item,
2718
3768
  __spreadProps(__spreadValues({
2719
3769
  "data-slot": "select-item",
2720
- className: cn18(
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__ */ jsx30(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
2727
- /* @__PURE__ */ jsx30(
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__ */ jsx30("span", { className: "pointer-events-none absolute right-2 flex items-center justify-center" }),
2731
- children: /* @__PURE__ */ jsx30(CheckIcon2, { className: "pointer-events-none" })
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__ */ jsx30(
3794
+ return /* @__PURE__ */ jsx40(
2745
3795
  SelectPrimitive.ScrollUpArrow,
2746
3796
  __spreadProps(__spreadValues({
2747
3797
  "data-slot": "select-scroll-up-button",
2748
- className: cn18(
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__ */ jsx30(ChevronUpIcon, {})
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__ */ jsx30(
3813
+ return /* @__PURE__ */ jsx40(
2764
3814
  SelectPrimitive.ScrollDownArrow,
2765
3815
  __spreadProps(__spreadValues({
2766
3816
  "data-slot": "select-scroll-down-button",
2767
- className: cn18(
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__ */ jsx30(ChevronDownIcon2, {})
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 Fragment2, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
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] = useState3(false);
3969
+ const [calendarOpen, setCalendarOpen] = useState4(false);
2920
3970
  const filterValue = column.getFilterValue();
2921
- const variant = useMemo2(
3971
+ const variant = useMemo4(
2922
3972
  () => getFilterVariant(column, table),
2923
3973
  [column, table]
2924
3974
  );
2925
- const options = useMemo2(() => {
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__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs18(
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__ */ jsx31(
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__ */ jsx31(
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__ */ jsxs18(SelectContent, { align: "start", children: [
2967
- /* @__PURE__ */ jsx31(SelectItem, { value: "all", children: "All" }),
2968
- options.map((opt) => /* @__PURE__ */ jsx31(
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__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsxs18(Popover, { open: calendarOpen, onOpenChange: setCalendarOpen, children: [
2996
- /* @__PURE__ */ jsx31(
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__ */ jsxs18(
4049
+ render: /* @__PURE__ */ jsxs28(
3000
4050
  Button,
3001
4051
  {
3002
4052
  variant: "outline",
3003
- className: cn14(
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__ */ jsx31(CalendarIcon, { className: "mr-1 size-3 shrink-0" }),
3011
- /* @__PURE__ */ jsx31("span", { className: "truncate", children: formattedDateLabel || `Pick ${headerText.toLowerCase()}...` })
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__ */ jsx31(
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__ */ jsx31(
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__ */ jsx31("div", { className: "relative flex items-center w-full", children: /* @__PURE__ */ jsx31(
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 = useMemo2(
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__ */ jsxs18(DropdownMenu, { children: [
3068
- /* @__PURE__ */ jsxs18(Tooltip, { children: [
3069
- /* @__PURE__ */ jsx31(
4117
+ return /* @__PURE__ */ jsxs28(DropdownMenu, { children: [
4118
+ /* @__PURE__ */ jsxs28(Tooltip, { children: [
4119
+ /* @__PURE__ */ jsx41(
3070
4120
  DropdownMenuTrigger,
3071
4121
  {
3072
- render: /* @__PURE__ */ jsx31(
4122
+ render: /* @__PURE__ */ jsx41(
3073
4123
  TooltipTrigger,
3074
4124
  {
3075
- render: /* @__PURE__ */ jsx31(
4125
+ render: /* @__PURE__ */ jsx41(
3076
4126
  Button,
3077
4127
  {
3078
4128
  variant: columnFilters.length > 0 ? "secondary" : "outline",
3079
4129
  size: "icon",
3080
- children: /* @__PURE__ */ jsx31(ListFilterIcon, {})
4130
+ children: /* @__PURE__ */ jsx41(ListFilterIcon, {})
3081
4131
  }
3082
4132
  )
3083
4133
  }
3084
4134
  )
3085
4135
  }
3086
4136
  ),
3087
- /* @__PURE__ */ jsx31(TooltipContent, { children: "Filter options" })
4137
+ /* @__PURE__ */ jsx41(TooltipContent, { children: "Filter options" })
3088
4138
  ] }),
3089
- /* @__PURE__ */ jsx31(DropdownMenuContent, { align: "end", className: "w-80", children: /* @__PURE__ */ jsxs18(DropdownMenuGroup, { children: [
3090
- /* @__PURE__ */ jsx31(DropdownMenuLabel, { children: "Filter by column" }),
3091
- /* @__PURE__ */ jsx31(DropdownMenuSeparator, {}),
3092
- /* @__PURE__ */ jsx31("div", { className: "max-h-64 overflow-y-auto space-y-2.5 p-1", children: filterableColumns.map((column) => {
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__ */ jsxs18(
4144
+ return /* @__PURE__ */ jsxs28(
3095
4145
  "div",
3096
4146
  {
3097
4147
  className: "flex items-center justify-between px-1",
3098
4148
  children: [
3099
- /* @__PURE__ */ jsx31(
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__ */ jsx31("div", { className: "flex-1", children: /* @__PURE__ */ jsx31(
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__ */ jsxs18(Fragment2, { children: [
3121
- /* @__PURE__ */ jsx31(DropdownMenuSeparator, {}),
3122
- /* @__PURE__ */ jsx31(
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 useState4 } from "react";
3139
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
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] = useState4(false);
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__ */ jsxs19(Tooltip, { children: [
3151
- /* @__PURE__ */ jsx32(
4200
+ return /* @__PURE__ */ jsxs29(Tooltip, { children: [
4201
+ /* @__PURE__ */ jsx42(
3152
4202
  TooltipTrigger,
3153
4203
  {
3154
- render: /* @__PURE__ */ jsx32(
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__ */ jsx32(
4211
+ children: /* @__PURE__ */ jsx42(
3162
4212
  RotateCwIcon,
3163
4213
  {
3164
- className: cn14(
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__ */ jsx32(TooltipContent, { children: "Refresh data" })
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 XIcon2 } from "lucide-react";
3180
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
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__ */ jsxs20("div", { className: "relative flex items-center max-w-sm w-full", children: [
3186
- /* @__PURE__ */ jsx33(
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__ */ jsx33(
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__ */ jsx33(XIcon2, { className: "size-3.5" })
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 Fragment3, jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
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__ */ jsxs21(DropdownMenu, { children: [
3217
- /* @__PURE__ */ jsxs21(Tooltip, { children: [
3218
- /* @__PURE__ */ jsx34(
4266
+ return /* @__PURE__ */ jsxs31(DropdownMenu, { children: [
4267
+ /* @__PURE__ */ jsxs31(Tooltip, { children: [
4268
+ /* @__PURE__ */ jsx44(
3219
4269
  DropdownMenuTrigger,
3220
4270
  {
3221
- render: /* @__PURE__ */ jsx34(
4271
+ render: /* @__PURE__ */ jsx44(
3222
4272
  TooltipTrigger,
3223
4273
  {
3224
- render: /* @__PURE__ */ jsx34(
4274
+ render: /* @__PURE__ */ jsx44(
3225
4275
  Button,
3226
4276
  {
3227
4277
  variant: sorting.length > 0 ? "secondary" : "outline",
3228
4278
  size: "icon",
3229
- children: /* @__PURE__ */ jsx34(ArrowUpDownIcon, {})
4279
+ children: /* @__PURE__ */ jsx44(ArrowUpDownIcon, {})
3230
4280
  }
3231
4281
  )
3232
4282
  }
3233
4283
  )
3234
4284
  }
3235
4285
  ),
3236
- /* @__PURE__ */ jsx34(TooltipContent, { children: "Sort options" })
4286
+ /* @__PURE__ */ jsx44(TooltipContent, { children: "Sort options" })
3237
4287
  ] }),
3238
- /* @__PURE__ */ jsx34(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs21(DropdownMenuGroup, { children: [
3239
- /* @__PURE__ */ jsx34(DropdownMenuLabel, { children: "Sort by column" }),
3240
- /* @__PURE__ */ jsx34(DropdownMenuSeparator, {}),
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__ */ jsxs21(
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__ */ jsx34(ArrowUpIcon, { className: "size-3.5" }),
3260
- isSorted === "desc" && /* @__PURE__ */ jsx34(ArrowDownIcon, { className: "size-3.5" })
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__ */ jsxs21(Fragment3, { children: [
3267
- /* @__PURE__ */ jsx34(DropdownMenuSeparator, {}),
3268
- /* @__PURE__ */ jsx34(
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 jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
4333
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
3284
4334
  function DataTableHeaderToggle({
3285
4335
  table
3286
4336
  }) {
3287
- return /* @__PURE__ */ jsxs22(DropdownMenu, { children: [
3288
- /* @__PURE__ */ jsxs22(Tooltip, { children: [
3289
- /* @__PURE__ */ jsx35(
4337
+ return /* @__PURE__ */ jsxs32(DropdownMenu, { children: [
4338
+ /* @__PURE__ */ jsxs32(Tooltip, { children: [
4339
+ /* @__PURE__ */ jsx45(
3290
4340
  DropdownMenuTrigger,
3291
4341
  {
3292
- render: /* @__PURE__ */ jsx35(
4342
+ render: /* @__PURE__ */ jsx45(
3293
4343
  TooltipTrigger,
3294
4344
  {
3295
- render: /* @__PURE__ */ jsx35(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx35(Columns3CogIcon, {}) })
4345
+ render: /* @__PURE__ */ jsx45(Button, { variant: "outline", size: "icon", children: /* @__PURE__ */ jsx45(Columns3CogIcon, {}) })
3296
4346
  }
3297
4347
  )
3298
4348
  }
3299
4349
  ),
3300
- /* @__PURE__ */ jsx35(TooltipContent, { children: "Toggle columns" })
4350
+ /* @__PURE__ */ jsx45(TooltipContent, { children: "Toggle columns" })
3301
4351
  ] }),
3302
- /* @__PURE__ */ jsx35(DropdownMenuContent, { align: "end", className: "w-48", children: /* @__PURE__ */ jsxs22(DropdownMenuGroup, { children: [
3303
- /* @__PURE__ */ jsx35(DropdownMenuLabel, { children: "Toggle columns" }),
3304
- /* @__PURE__ */ jsx35(DropdownMenuSeparator, {}),
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__ */ jsx35(
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 Fragment4 } from "react";
3327
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
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__ */ jsx36(
4391
+ return /* @__PURE__ */ jsx46(
3342
4392
  "div",
3343
4393
  {
3344
- className: cn14("flex items-center justify-end w-full", containerClassName),
3345
- children: /* @__PURE__ */ jsxs23(DropdownMenu, { children: [
3346
- /* @__PURE__ */ jsx36(
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__ */ jsx36(Button, { variant: "ghost", size: "icon-xs", "aria-label": triggerLabel, children: triggerIcon != null ? triggerIcon : /* @__PURE__ */ jsx36(MoreHorizontal, { className: "size-4" }) })
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__ */ jsx36(
4402
+ /* @__PURE__ */ jsx46(
3353
4403
  DropdownMenuContent,
3354
4404
  {
3355
4405
  align,
3356
- className: cn14("w-40", contentClassName),
3357
- children: /* @__PURE__ */ jsxs23(DropdownMenuGroup, { children: [
3358
- label && /* @__PURE__ */ jsxs23(Fragment5, { children: [
3359
- /* @__PURE__ */ jsx36(DropdownMenuLabel, { children: label }),
3360
- /* @__PURE__ */ jsx36(DropdownMenuSeparator, {})
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__ */ jsxs23(Fragment4, { children: [
3367
- item.separatorBefore && /* @__PURE__ */ jsx36(DropdownMenuSeparator, {}),
3368
- /* @__PURE__ */ jsxs23(
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: cn14(
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__ */ jsx36("span", { className: "size-4 shrink-0 flex items-center justify-center", children: item.icon }),
3380
- /* @__PURE__ */ jsx36("span", { children: item.label })
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__ */ jsx36(DropdownMenuSeparator, {})
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 jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
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] = useState5(false);
3415
- const [sorting, setSorting] = useState5([]);
3416
- const [columnFilters, setColumnFilters] = useState5([]);
3417
- const [columnVisibility, setColumnVisibility] = useState5(initialColumnVisibility != null ? initialColumnVisibility : {});
3418
- const [globalFilter, setGlobalFilter] = useState5("");
3419
- const columnsWithSmartFilters = useMemo3(() => {
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__ */ jsxs24("div", { className: "space-y-2", children: [
3450
- /* @__PURE__ */ jsx37(
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__ */ jsx37(FolderOpenIcon, { className: "size-6 text-muted-foreground" }),
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__ */ jsxs24("div", { className: "space-y-2", children: [
3465
- /* @__PURE__ */ jsxs24("div", { className: "flex flex-row items-center justify-between gap-1", children: [
3466
- showSearchInput ? /* @__PURE__ */ jsx37(
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__ */ jsx37("div", {}),
3473
- /* @__PURE__ */ jsxs24("div", { className: "flex flex-row items-center gap-1", children: [
3474
- showRefreshButton && /* @__PURE__ */ jsx37(DataTableHeaderRefresh, {}),
3475
- showSortButton && /* @__PURE__ */ jsx37(DataTableHeaderSort, { table, sorting }),
3476
- showFilterButton && /* @__PURE__ */ jsx37(
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__ */ jsx37(
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__ */ jsx37(DataTableHeaderToggle, { table }),
3492
- showAddButton && renderCreateDialog && /* @__PURE__ */ jsx37(
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__ */ jsx37("div", { className: "overflow-hidden rounded-md border [&_[data-slot=table-container]]:no-scrollbar", children: /* @__PURE__ */ jsxs24(Table, { children: [
3503
- /* @__PURE__ */ jsx37(DataTableContentHeader, { table }),
3504
- /* @__PURE__ */ jsx37(DataTableContentBody, { table, columns })
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__ */ jsxs24("div", { className: "flex items-center justify-between px-2", children: [
3507
- /* @__PURE__ */ jsx37(DataTableFooterEntries, { table }),
3508
- /* @__PURE__ */ jsx37(DataTableFooterPagination, { table })
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 memo9 } from "react";
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 cn19 } from "cn";
3522
- import { jsx as jsx38 } from "react/jsx-runtime";
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__ */ jsx38(
4581
+ return /* @__PURE__ */ jsx48(
3532
4582
  TabsPrimitive.Root,
3533
4583
  __spreadValues({
3534
4584
  "data-slot": "tabs",
3535
4585
  "data-orientation": orientation,
3536
- className: cn19(
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__ */ jsx38(
4615
+ return /* @__PURE__ */ jsx48(
3566
4616
  TabsPrimitive.List,
3567
4617
  __spreadValues({
3568
4618
  "data-slot": "tabs-list",
3569
4619
  "data-variant": variant,
3570
- className: cn19(tabsListVariants({ variant }), 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__ */ jsx38(
4626
+ return /* @__PURE__ */ jsx48(
3577
4627
  TabsPrimitive.Tab,
3578
4628
  __spreadValues({
3579
4629
  "data-slot": "tabs-trigger",
3580
- className: cn19(
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 jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
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__ */ jsx39(IconComp, {});
4647
+ return /* @__PURE__ */ jsx49(IconComp, {});
3598
4648
  }
3599
4649
  return icon;
3600
4650
  }
3601
- var HeaderTabs = memo9(function HeaderTabs2({
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__ */ jsxs25(Tabs, { value: activeTab, onValueChange, className: "space-y-4", children: [
3614
- /* @__PURE__ */ jsx39("div", { className: "w-full overflow-x-auto overflow-y-hidden border-b no-scrollbar", children: /* @__PURE__ */ jsx39(TabsList, { variant: "line", className: "inline-flex w-max justify-start", children: items.map(({ title, value: tabValue, url, icon }) => /* @__PURE__ */ jsxs25(
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__ */ jsx39(Link2, { href: url }),
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 memo10 } from "react";
3633
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
3634
- var HeaderTitle = memo10(function HeaderTitle2({
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__ */ jsxs26("div", { className: "w-full space-y-4", children: [
3640
- /* @__PURE__ */ jsxs26("div", { children: [
3641
- /* @__PURE__ */ jsx40("h1", { className: "font-semibold", children: title }),
3642
- /* @__PURE__ */ jsx40("p", { className: "text-xs text-muted-foreground", children: subtitle })
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 jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
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__ */ jsxs27(
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__ */ jsx41(
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__ */ jsx41(
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__ */ jsx41(
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__ */ jsx41(
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,