@retinalabsllc/zairusjs 0.6.0 → 0.6.2

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.js CHANGED
@@ -35,6 +35,7 @@ __export(index_exports, {
35
35
  AiApproveDecline: () => AiApproveDecline,
36
36
  AiStageCheck: () => AiStageCheck,
37
37
  AppBento2: () => AppBento2,
38
+ Banner: () => Banner,
38
39
  Faq: () => Faq,
39
40
  FeatureScroll: () => FeatureScroll,
40
41
  Footer: () => Footer,
@@ -63,7 +64,6 @@ __export(index_exports, {
63
64
  UniversalDashboardPage: () => UniversalDashboardPage,
64
65
  UniversalDirectoryPage: () => UniversalDirectoryPage,
65
66
  UniversalErrorView: () => UniversalErrorView,
66
- UniversalHeader: () => UniversalHeader,
67
67
  UniversalIdentityPage: () => UniversalIdentityPage,
68
68
  UniversalLookupPage: () => UniversalLookupPage,
69
69
  UniversalMembersPage: () => UniversalMembersPage,
@@ -740,13 +740,13 @@ var import_react13 = __toESM(require("react"));
740
740
  var import_image3 = __toESM(require("next/image"));
741
741
  var import_react14 = require("@hugeicons/react");
742
742
  var import_core_free_icons3 = require("@hugeicons/core-free-icons");
743
- var FeatureCard = ({ feature }) => {
743
+ var FeatureCard = ({ feature, bgImage }) => {
744
744
  const [isBgLoading, setIsBgLoading] = (0, import_react13.useState)(true);
745
745
  const [isFgLoading, setIsFgLoading] = (0, import_react13.useState)(!!feature.image);
746
746
  return /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ import_react13.default.createElement(
747
747
  import_image3.default,
748
748
  {
749
- src: "/assets/webp/card-bg.webp",
749
+ src: bgImage,
750
750
  alt: "Card Background",
751
751
  fill: true,
752
752
  sizes: "(max-width: 768px) 90vw, 600px",
@@ -801,6 +801,11 @@ var FeatureScroll = ({ tagline, headline, features }) => {
801
801
  scrollRef.current.scrollBy({ left: scrollAmount, behavior: "smooth" });
802
802
  }
803
803
  };
804
+ const bgImages = [
805
+ "/assets/webp/card-bg.webp",
806
+ "/assets/webp/card-bg2.webp",
807
+ "/assets/webp/card-bg3.webp"
808
+ ];
804
809
  return /* @__PURE__ */ import_react13.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react13.default.createElement("h2", { className: " font-serif text-3xl md:text-5xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react13.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react13.default.createElement(
805
810
  "button",
806
811
  {
@@ -826,7 +831,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
826
831
  onScroll: checkScroll,
827
832
  className: "flex gap-6 overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] scrollbar-none pb-8 -mx-4 px-4 md:mx-0 md:px-0"
828
833
  },
829
- features.map((feature, idx) => /* @__PURE__ */ import_react13.default.createElement(FeatureCard, { key: idx, feature }))
834
+ features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react13.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
830
835
  ), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react13.default.createElement(
831
836
  "button",
832
837
  {
@@ -1521,12 +1526,27 @@ var import_react37 = __toESM(require("react"));
1521
1526
  var import_link9 = __toESM(require("next/link"));
1522
1527
  var import_react38 = require("@hugeicons/react");
1523
1528
  var import_core_free_icons9 = require("@hugeicons/core-free-icons");
1529
+ var ButtonSpinner = () => /* @__PURE__ */ import_react37.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react37.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react37.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1524
1530
  var UniversalSidebar = ({
1525
1531
  navItems,
1526
1532
  currentPath,
1527
1533
  isMobileOpen,
1528
1534
  closeMobile,
1535
+ openMobile,
1529
1536
  onNavClick,
1537
+ // Header integrations
1538
+ title = "App",
1539
+ subtitle,
1540
+ homeUrl = "/app",
1541
+ showBackButton = false,
1542
+ backUrl = "/app",
1543
+ showWorkspaceSwitcher = false,
1544
+ workspaces = [],
1545
+ activeWorkspaceId,
1546
+ onSwitchWorkspace,
1547
+ showLogoutAction = false,
1548
+ onLogout,
1549
+ // Intercept
1530
1550
  showInterceptDialog = false,
1531
1551
  onCancelIntercept,
1532
1552
  onConfirmIntercept,
@@ -1534,6 +1554,9 @@ var UniversalSidebar = ({
1534
1554
  interceptMessage = "Are you sure you want to leave? All unsaved changes will be lost."
1535
1555
  }) => {
1536
1556
  const [isCollapsed, setIsCollapsed] = (0, import_react37.useState)(false);
1557
+ const [showSwitcherDialog, setShowSwitcherDialog] = (0, import_react37.useState)(false);
1558
+ const [showLogoutDialog, setShowLogoutDialog] = (0, import_react37.useState)(false);
1559
+ const [isLoggingOut, setIsLoggingOut] = (0, import_react37.useState)(false);
1537
1560
  (0, import_react37.useEffect)(() => {
1538
1561
  if (isMobileOpen) {
1539
1562
  closeMobile();
@@ -1542,7 +1565,33 @@ var UniversalSidebar = ({
1542
1565
  const hasActiveMatch = navItems.some(
1543
1566
  (item) => item.path === "/mod" || item.path === "/app" ? currentPath === item.path : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
1544
1567
  );
1568
+ const handleLogoutInitiation = async () => {
1569
+ if (isLoggingOut || !onLogout) return;
1570
+ setIsLoggingOut(true);
1571
+ try {
1572
+ await onLogout();
1573
+ } catch (error) {
1574
+ setIsLoggingOut(false);
1575
+ setShowLogoutDialog(false);
1576
+ }
1577
+ };
1545
1578
  return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement(
1579
+ "button",
1580
+ {
1581
+ onClick: openMobile,
1582
+ className: `md:hidden fixed top-4 left-4 z-40 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-[0_4px_20px_rgba(0,0,0,0.08)] border border-neutral-100 text-black transition-all duration-300 outline-none ${isMobileOpen ? "opacity-0 pointer-events-none scale-90" : "opacity-100 scale-100"}`,
1583
+ "aria-label": "Open Menu"
1584
+ },
1585
+ /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.SidebarLeft01Icon, size: 18 })
1586
+ ), showBackButton && /* @__PURE__ */ import_react37.default.createElement(
1587
+ import_link9.default,
1588
+ {
1589
+ href: backUrl,
1590
+ className: "fixed top-4 right-4 md:top-6 md:right-8 z-40 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-[0_4px_20px_rgba(0,0,0,0.08)] border border-neutral-100 text-black hover:bg-neutral-50 transition-all duration-300 outline-none",
1591
+ "aria-label": "Go Back"
1592
+ },
1593
+ /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.ArrowLeft01Icon, size: 18 })
1594
+ ), /* @__PURE__ */ import_react37.default.createElement(
1546
1595
  "div",
1547
1596
  {
1548
1597
  className: `fixed inset-0 bg-black/30 shadow-2xl transition-opacity duration-300 md:hidden z-90 ${isMobileOpen ? "opacity-100 pointer-events-auto" : "opacity-0 pointer-events-none"}`,
@@ -1558,16 +1607,16 @@ var UniversalSidebar = ({
1558
1607
  ${isCollapsed ? "md:w-16 w-64" : "w-64"}
1559
1608
  `
1560
1609
  },
1561
- /* @__PURE__ */ import_react37.default.createElement("div", { className: "md:hidden flex justify-end p-4 shrink-0" }, /* @__PURE__ */ import_react37.default.createElement(
1610
+ /* @__PURE__ */ import_react37.default.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center min-h-18" : "justify-between"}` }, (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react37.default.createElement(import_link9.default, { href: homeUrl, className: "flex flex-col justify-center outline-none group min-w-0 pr-2" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[13px] font-serif text-black leading-none truncate tracking-wide mb-1 group-hover:opacity-70 transition-opacity" }, title), subtitle && /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none" }, subtitle)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ import_react37.default.createElement(
1562
1611
  "button",
1563
1612
  {
1564
1613
  onClick: closeMobile,
1565
1614
  className: "text-neutral-400 hover:text-black transition-colors outline-none",
1566
1615
  "aria-label": "Close Menu"
1567
1616
  },
1568
- /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 27 })
1569
- )),
1570
- /* @__PURE__ */ import_react37.default.createElement("nav", { className: "flex-1 py-6 flex flex-col gap-1.5 px-3 overflow-y-auto custom-scrollbar" }, navItems.map((item, index) => {
1617
+ /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 24 })
1618
+ ))),
1619
+ /* @__PURE__ */ import_react37.default.createElement("nav", { className: "flex-1 py-2 flex flex-col gap-1.5 px-3 overflow-y-auto custom-scrollbar" }, navItems.map((item, index) => {
1571
1620
  const isExactOrSubMatch = item.path === "/mod" || item.path === "/app" ? currentPath === item.path : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
1572
1621
  const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
1573
1622
  return /* @__PURE__ */ import_react37.default.createElement(
@@ -1576,7 +1625,7 @@ var UniversalSidebar = ({
1576
1625
  key: item.name,
1577
1626
  href: item.path,
1578
1627
  onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
1579
- className: `flex items-center gap-3 px-3 py-2 rounded-full transition-all outline-none group ${isCurrentRoute ? "bg-neutral-100 text-black " : "text-neutral-500 hover:text-black hover:bg-neutral-50"}`,
1628
+ className: `flex items-center gap-3 px-3 py-2 rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-neutral-100 text-black " : "text-neutral-500 hover:text-black hover:bg-neutral-50"}`,
1580
1629
  title: isCollapsed && !isMobileOpen ? item.name : void 0
1581
1630
  },
1582
1631
  /* @__PURE__ */ import_react37.default.createElement(
@@ -1590,7 +1639,23 @@ var UniversalSidebar = ({
1590
1639
  (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-xs tracking-wide truncate" }, item.name)
1591
1640
  );
1592
1641
  })),
1593
- /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-4 hidden md:block shrink-0" }, /* @__PURE__ */ import_react37.default.createElement(
1642
+ /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-4 shrink-0 flex flex-col gap-2 " }, (showWorkspaceSwitcher || showLogoutAction) && /* @__PURE__ */ import_react37.default.createElement("div", { className: `flex gap-2 px-1 pb-2 ${isCollapsed && !isMobileOpen ? "flex-col items-center" : "items-center"}` }, showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ import_react37.default.createElement(
1643
+ "button",
1644
+ {
1645
+ onClick: () => setShowSwitcherDialog(true),
1646
+ className: "w-8 h-8 shrink-0 rounded-full bg-neutral-50 flex items-center justify-center text-neutral-500 hover:text-black hover:bg-neutral-100 transition-all outline-none",
1647
+ title: "Switch Workspace"
1648
+ },
1649
+ /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.UserIcon, size: 16 })
1650
+ ), showLogoutAction && /* @__PURE__ */ import_react37.default.createElement(
1651
+ "button",
1652
+ {
1653
+ onClick: () => setShowLogoutDialog(true),
1654
+ className: "w-8 h-8 shrink-0 rounded-full bg-neutral-50 flex items-center justify-center text-neutral-500 hover:text-black hover:bg-neutral-100 transition-all outline-none",
1655
+ title: "Secure Logout"
1656
+ },
1657
+ /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.LogoutCircle02Icon, size: 16 })
1658
+ )), /* @__PURE__ */ import_react37.default.createElement("div", { className: "hidden md:block" }, /* @__PURE__ */ import_react37.default.createElement(
1594
1659
  "button",
1595
1660
  {
1596
1661
  onClick: () => setIsCollapsed(!isCollapsed),
@@ -1598,102 +1663,14 @@ var UniversalSidebar = ({
1598
1663
  },
1599
1664
  /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.SidebarLeft01Icon, size: 18, className: "shrink-0 text-neutral-400" }),
1600
1665
  !isCollapsed && /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-xs" }, "Collapse")
1601
- ))
1602
- ), showInterceptDialog && /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react37.default.createElement(
1603
- "div",
1604
- {
1605
- className: "absolute inset-0 bg-black/30",
1606
- onClick: onCancelIntercept
1607
- }
1608
- ), /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react37.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, interceptTitle), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, interceptMessage)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react37.default.createElement(
1609
- "button",
1610
- {
1611
- onClick: onCancelIntercept,
1612
- className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none"
1613
- },
1614
- "Cancel"
1615
- ), /* @__PURE__ */ import_react37.default.createElement(
1616
- "button",
1617
- {
1618
- onClick: onConfirmIntercept,
1619
- className: "flex-1 py-2 text-[13px] text-[#F16A50] hover:bg-neutral-50 transition-colors flex justify-center items-center outline-none"
1620
- },
1621
- "Leave"
1622
- )))));
1623
- };
1624
-
1625
- // src/components/UniversalHeader.tsx
1626
- var import_react39 = __toESM(require("react"));
1627
- var import_link10 = __toESM(require("next/link"));
1628
- var import_react40 = require("@hugeicons/react");
1629
- var import_core_free_icons10 = require("@hugeicons/core-free-icons");
1630
- var ButtonSpinner = () => /* @__PURE__ */ import_react39.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react39.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react39.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1631
- var UniversalHeader = ({
1632
- onOpenMobile,
1633
- title,
1634
- subtitle,
1635
- homeUrl = "/app",
1636
- showBackButton = false,
1637
- backUrl = "/app",
1638
- showWorkspaceSwitcher = false,
1639
- workspaces = [],
1640
- activeWorkspaceId,
1641
- onSwitchWorkspace,
1642
- showLogoutAction = false,
1643
- onLogout
1644
- }) => {
1645
- const [showSwitcherDialog, setShowSwitcherDialog] = (0, import_react39.useState)(false);
1646
- const [showLogoutDialog, setShowLogoutDialog] = (0, import_react39.useState)(false);
1647
- const [isLoggingOut, setIsLoggingOut] = (0, import_react39.useState)(false);
1648
- const handleLogoutInitiation = async () => {
1649
- if (isLoggingOut || !onLogout) return;
1650
- setIsLoggingOut(true);
1651
- try {
1652
- await onLogout();
1653
- } catch (error) {
1654
- setIsLoggingOut(false);
1655
- setShowLogoutDialog(false);
1656
- }
1657
- };
1658
- return /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full shrink-0 z-50 flex flex-col absolute top-0 left-0 pointer-events-none" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full pointer-events-auto relative z-20" }, /* @__PURE__ */ import_react39.default.createElement("header", { className: "w-full pt-6 pb-3" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "max-w-7xl mx-auto px-6 flex justify-between items-center" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react39.default.createElement(
1659
- "button",
1660
- {
1661
- className: "md:hidden bg-white rounded-full w-8 h-8 text-neutral-500 hover:text-black transition-colors outline-none",
1662
- onClick: onOpenMobile,
1663
- "aria-label": "Open Menu"
1664
- },
1665
- /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons10.SidebarLeft01Icon, size: 16 })
1666
- ), /* @__PURE__ */ import_react39.default.createElement(import_link10.default, { href: homeUrl, className: "flex items-center gap-3 transition-opacity hover:opacity-70 outline-none" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react39.default.createElement("span", { className: "text-[13px] font-serif text-black leading-none truncate tracking-wide mb-1" }, title), subtitle && /* @__PURE__ */ import_react39.default.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none" }, subtitle)))), /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex items-center gap-3" }, showWorkspaceSwitcher && workspaces.length > 0 && /* @__PURE__ */ import_react39.default.createElement(
1667
- "button",
1668
- {
1669
- onClick: () => setShowSwitcherDialog(true),
1670
- className: "w-8 h-8 rounded-full bg-white flex items-center justify-center text-black transition-all group outline-none",
1671
- "aria-label": "Switch Workspace"
1672
- },
1673
- /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons10.UserIcon, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
1674
- ), showLogoutAction && /* @__PURE__ */ import_react39.default.createElement(
1675
- "button",
1676
- {
1677
- onClick: () => setShowLogoutDialog(true),
1678
- className: "w-8 h-8 rounded-full bg-white flex items-center justify-center text-black transition-all group outline-none",
1679
- "aria-label": "Secure Logout"
1680
- },
1681
- /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons10.LogoutCircle02Icon, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
1682
- ), showBackButton && /* @__PURE__ */ import_react39.default.createElement(
1683
- import_link10.default,
1684
- {
1685
- href: backUrl,
1686
- className: "flex items-center bg-white justify-center w-8 h-8 rounded-full text-black transition-all group outline-none",
1687
- "aria-label": "Go Back"
1688
- },
1689
- /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons10.ArrowLeft01Icon, size: 16, className: "transition-transform group-hover:-translate-x-0.5" })
1690
- ))))), showSwitcherDialog && showWorkspaceSwitcher && workspaces.length > 0 && /* @__PURE__ */ import_react39.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react39.default.createElement(
1666
+ )))
1667
+ ), showSwitcherDialog && showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react37.default.createElement(
1691
1668
  "div",
1692
1669
  {
1693
1670
  className: "absolute inset-0 bg-black/30",
1694
1671
  onClick: () => setShowSwitcherDialog(false)
1695
1672
  }
1696
- ), /* @__PURE__ */ import_react39.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "p-5 text-center w-full" }, /* @__PURE__ */ import_react39.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Switch Workspace"), /* @__PURE__ */ import_react39.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug" }, "Select an organization to switch your current context.")), /* @__PURE__ */ import_react39.default.createElement("div", { className: "max-h-75 overflow-y-auto w-full custom-scrollbar" }, workspaces.map((org) => /* @__PURE__ */ import_react39.default.createElement(
1673
+ ), /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-5 text-center w-full" }, /* @__PURE__ */ import_react37.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Switch Workspace"), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug" }, "Select an organization to switch your current context.")), /* @__PURE__ */ import_react37.default.createElement("div", { className: "max-h-75 overflow-y-auto w-full custom-scrollbar" }, workspaces.map((org) => /* @__PURE__ */ import_react37.default.createElement(
1697
1674
  "button",
1698
1675
  {
1699
1676
  key: org.id,
@@ -1703,22 +1680,22 @@ var UniversalHeader = ({
1703
1680
  },
1704
1681
  className: "w-full text-left px-5 py-4 flex items-center justify-between hover:bg-neutral-50 transition-colors group outline-none last:border-0"
1705
1682
  },
1706
- /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex flex-col truncate pr-4" }, /* @__PURE__ */ import_react39.default.createElement("span", { className: `text-[13px] truncate ${activeWorkspaceId === org.id ? "text-black" : "text-neutral-600 group-hover:text-black"}` }, org.name), /* @__PURE__ */ import_react39.default.createElement("span", { className: "text-[9px] text-neutral-400 tracking-[0.2em] mt-1" }, "Role: ", org.role)),
1707
- activeWorkspaceId === org.id && /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons10.CheckmarkCircle01Icon, size: 16, className: "text-black shrink-0" })
1708
- ))), /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full flex mt-auto" }, /* @__PURE__ */ import_react39.default.createElement(
1683
+ /* @__PURE__ */ import_react37.default.createElement("div", { className: "flex flex-col truncate pr-4" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: `text-[13px] truncate ${activeWorkspaceId === org.id ? "text-black" : "text-neutral-600 group-hover:text-black"}` }, org.name), /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[9px] text-neutral-400 tracking-[0.2em] mt-1" }, "Role: ", org.role)),
1684
+ activeWorkspaceId === org.id && /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons9.CheckmarkCircle01Icon, size: 16, className: "text-black shrink-0" })
1685
+ ))), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full flex mt-auto" }, /* @__PURE__ */ import_react37.default.createElement(
1709
1686
  "button",
1710
1687
  {
1711
1688
  onClick: () => setShowSwitcherDialog(false),
1712
1689
  className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none"
1713
1690
  },
1714
1691
  "Cancel"
1715
- )))), showLogoutDialog && showLogoutAction && /* @__PURE__ */ import_react39.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react39.default.createElement(
1692
+ )))), showLogoutDialog && showLogoutAction && /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react37.default.createElement(
1716
1693
  "div",
1717
1694
  {
1718
1695
  className: "absolute inset-0 bg-black/30",
1719
1696
  onClick: () => !isLoggingOut && setShowLogoutDialog(false)
1720
1697
  }
1721
- ), /* @__PURE__ */ import_react39.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react39.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Secure Logout"), /* @__PURE__ */ import_react39.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to log out? You will need to authenticate to return.")), /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react39.default.createElement(
1698
+ ), /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react37.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Secure Logout"), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to log out? You will need to authenticate to return.")), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react37.default.createElement(
1722
1699
  "button",
1723
1700
  {
1724
1701
  onClick: () => setShowLogoutDialog(false),
@@ -1726,21 +1703,41 @@ var UniversalHeader = ({
1726
1703
  className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
1727
1704
  },
1728
1705
  "Cancel"
1729
- ), /* @__PURE__ */ import_react39.default.createElement(
1706
+ ), /* @__PURE__ */ import_react37.default.createElement(
1730
1707
  "button",
1731
1708
  {
1732
1709
  onClick: handleLogoutInitiation,
1733
1710
  disabled: isLoggingOut,
1734
1711
  className: "flex-1 py-2 text-[13px] text-[#F16A50] hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center items-center outline-none"
1735
1712
  },
1736
- isLoggingOut ? /* @__PURE__ */ import_react39.default.createElement(ButtonSpinner, null) : "Log Out"
1713
+ isLoggingOut ? /* @__PURE__ */ import_react37.default.createElement(ButtonSpinner, null) : "Log Out"
1714
+ )))), showInterceptDialog && /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react37.default.createElement(
1715
+ "div",
1716
+ {
1717
+ className: "absolute inset-0 bg-black/30",
1718
+ onClick: onCancelIntercept
1719
+ }
1720
+ ), /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react37.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, interceptTitle), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, interceptMessage)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react37.default.createElement(
1721
+ "button",
1722
+ {
1723
+ onClick: onCancelIntercept,
1724
+ className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none"
1725
+ },
1726
+ "Cancel"
1727
+ ), /* @__PURE__ */ import_react37.default.createElement(
1728
+ "button",
1729
+ {
1730
+ onClick: onConfirmIntercept,
1731
+ className: "flex-1 py-2 text-[13px] text-[#F16A50] hover:bg-neutral-50 transition-colors flex justify-center items-center outline-none"
1732
+ },
1733
+ "Leave"
1737
1734
  )))));
1738
1735
  };
1739
1736
 
1740
1737
  // src/components/UniversalOrganizationPage.tsx
1741
- var import_react41 = __toESM(require("react"));
1738
+ var import_react39 = __toESM(require("react"));
1742
1739
  var import_react_hot_toast3 = __toESM(require("react-hot-toast"));
1743
- var InputSpinner2 = () => /* @__PURE__ */ import_react41.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react41.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react41.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1740
+ var InputSpinner2 = () => /* @__PURE__ */ import_react39.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react39.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react39.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1744
1741
  var UniversalOrganizationPage = ({
1745
1742
  initialOrgName,
1746
1743
  initialSlug,
@@ -1750,12 +1747,12 @@ var UniversalOrganizationPage = ({
1750
1747
  onSaveConfiguration,
1751
1748
  onCheckSlugAvailability
1752
1749
  }) => {
1753
- const [orgName, setOrgName] = (0, import_react41.useState)(initialOrgName);
1754
- const [slug, setSlug] = (0, import_react41.useState)(initialSlug);
1755
- const [isCheckingSlug, setIsCheckingSlug] = (0, import_react41.useState)(false);
1756
- const [slugAvailable, setSlugAvailable] = (0, import_react41.useState)(null);
1757
- const [isSubmitting, setIsSubmitting] = (0, import_react41.useState)(false);
1758
- (0, import_react41.useEffect)(() => {
1750
+ const [orgName, setOrgName] = (0, import_react39.useState)(initialOrgName);
1751
+ const [slug, setSlug] = (0, import_react39.useState)(initialSlug);
1752
+ const [isCheckingSlug, setIsCheckingSlug] = (0, import_react39.useState)(false);
1753
+ const [slugAvailable, setSlugAvailable] = (0, import_react39.useState)(null);
1754
+ const [isSubmitting, setIsSubmitting] = (0, import_react39.useState)(false);
1755
+ (0, import_react39.useEffect)(() => {
1759
1756
  setOrgName(initialOrgName || "");
1760
1757
  setSlug(initialSlug || "");
1761
1758
  }, [initialOrgName, initialSlug]);
@@ -1765,7 +1762,7 @@ var UniversalOrganizationPage = ({
1765
1762
  const handleSlugChange = (val) => {
1766
1763
  setSlug(val.toLowerCase().replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").substring(0, 50));
1767
1764
  };
1768
- (0, import_react41.useEffect)(() => {
1765
+ (0, import_react39.useEffect)(() => {
1769
1766
  if (!slug || slug === initialSlug) {
1770
1767
  setSlugAvailable(null);
1771
1768
  setIsCheckingSlug(false);
@@ -1819,7 +1816,7 @@ var UniversalOrganizationPage = ({
1819
1816
  };
1820
1817
  const hasChanges = orgName !== initialOrgName || slug !== initialSlug;
1821
1818
  const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || orgName.length < 3 || slug.length < 3 || slug !== initialSlug && slugAvailable === false;
1822
- return /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react41.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react41.default.createElement("div", null, /* @__PURE__ */ import_react41.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, "Organization"), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your tenant workspace details and identity.")), isReadOnly && /* @__PURE__ */ import_react41.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0" }, "Read Only Access")), /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react41.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react41.default.createElement(
1819
+ return /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react39.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react39.default.createElement("div", null, /* @__PURE__ */ import_react39.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, "Organization"), /* @__PURE__ */ import_react39.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your tenant workspace details and identity.")), isReadOnly && /* @__PURE__ */ import_react39.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0" }, "Read Only Access")), /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react39.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react39.default.createElement(
1823
1820
  TextInput,
1824
1821
  {
1825
1822
  label: "Organization Name",
@@ -1829,7 +1826,7 @@ var UniversalOrganizationPage = ({
1829
1826
  placeholder: "Acme Corporation",
1830
1827
  maxLength: 50
1831
1828
  }
1832
- ), /* @__PURE__ */ import_react41.default.createElement("div", { className: "space-y-2 relative w-full" }, /* @__PURE__ */ import_react41.default.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Organization Slug"), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center relative w-full" }, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-neutral-400 text-sm py-3 pr-2 border-b border-neutral-100 shrink-0" }, slugPrefixUrl), /* @__PURE__ */ import_react41.default.createElement(
1829
+ ), /* @__PURE__ */ import_react39.default.createElement("div", { className: "space-y-2 relative w-full" }, /* @__PURE__ */ import_react39.default.createElement("label", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block uppercase" }, "Organization Slug"), /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex items-center relative w-full" }, /* @__PURE__ */ import_react39.default.createElement("span", { className: "text-neutral-400 text-sm py-3 pr-2 border-b border-neutral-100 shrink-0" }, slugPrefixUrl), /* @__PURE__ */ import_react39.default.createElement(
1833
1830
  "input",
1834
1831
  {
1835
1832
  type: "text",
@@ -1841,7 +1838,7 @@ var UniversalOrganizationPage = ({
1841
1838
  className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black pr-8 disabled:opacity-50 disabled:cursor-not-allowed",
1842
1839
  placeholder: "acme-corp"
1843
1840
  }
1844
- ), /* @__PURE__ */ import_react41.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react41.default.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react41.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react41.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react41.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react41.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react41.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react41.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react41.default.createElement(
1841
+ ), /* @__PURE__ */ import_react39.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react39.default.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react39.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react39.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react39.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react39.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react39.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react39.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react39.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react39.default.createElement(
1845
1842
  ThreeDActionButton,
1846
1843
  {
1847
1844
  type: "submit",
@@ -1850,7 +1847,7 @@ var UniversalOrganizationPage = ({
1850
1847
  className: "min-w-32"
1851
1848
  },
1852
1849
  "Save Changes"
1853
- ), hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react41.default.createElement(
1850
+ ), hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react39.default.createElement(
1854
1851
  "button",
1855
1852
  {
1856
1853
  type: "button",
@@ -1865,9 +1862,9 @@ var UniversalOrganizationPage = ({
1865
1862
  };
1866
1863
 
1867
1864
  // src/components/UniversalIdentityPage.tsx
1868
- var import_react42 = __toESM(require("react"));
1865
+ var import_react40 = __toESM(require("react"));
1869
1866
  var import_react_hot_toast4 = __toESM(require("react-hot-toast"));
1870
- var ButtonSpinner2 = () => /* @__PURE__ */ import_react42.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react42.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react42.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1867
+ var ButtonSpinner2 = () => /* @__PURE__ */ import_react40.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react40.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react40.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1871
1868
  var UniversalIdentityPage = ({
1872
1869
  headerTitle,
1873
1870
  headerDescription,
@@ -1883,12 +1880,12 @@ var UniversalIdentityPage = ({
1883
1880
  onDeleteResource,
1884
1881
  onSuccessfulDeleteRedirect = "/app"
1885
1882
  }) => {
1886
- const [primaryValue, setPrimaryValue] = (0, import_react42.useState)(initialPrimaryValue);
1887
- const [secondaryValue, setSecondaryValue] = (0, import_react42.useState)(initialSecondaryValue);
1888
- const [isSubmitting, setIsSubmitting] = (0, import_react42.useState)(false);
1889
- const [isDeleteModalOpen, setIsDeleteModalOpen] = (0, import_react42.useState)(false);
1890
- const [isDeleting, setIsDeleting] = (0, import_react42.useState)(false);
1891
- (0, import_react42.useEffect)(() => {
1883
+ const [primaryValue, setPrimaryValue] = (0, import_react40.useState)(initialPrimaryValue);
1884
+ const [secondaryValue, setSecondaryValue] = (0, import_react40.useState)(initialSecondaryValue);
1885
+ const [isSubmitting, setIsSubmitting] = (0, import_react40.useState)(false);
1886
+ const [isDeleteModalOpen, setIsDeleteModalOpen] = (0, import_react40.useState)(false);
1887
+ const [isDeleting, setIsDeleting] = (0, import_react40.useState)(false);
1888
+ (0, import_react40.useEffect)(() => {
1892
1889
  setPrimaryValue(initialPrimaryValue || "");
1893
1890
  setSecondaryValue(initialSecondaryValue || "");
1894
1891
  }, [initialPrimaryValue, initialSecondaryValue]);
@@ -1939,7 +1936,7 @@ var UniversalIdentityPage = ({
1939
1936
  };
1940
1937
  const hasChanges = primaryValue !== initialPrimaryValue || secondaryValue !== initialSecondaryValue;
1941
1938
  const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || primaryValue.trim().length < 3;
1942
- return /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react42.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react42.default.createElement("div", null, /* @__PURE__ */ import_react42.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), isReadOnly && /* @__PURE__ */ import_react42.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0" }, "Read Only Access")), /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react42.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react42.default.createElement(
1939
+ return /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react40.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react40.default.createElement("div", null, /* @__PURE__ */ import_react40.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), isReadOnly && /* @__PURE__ */ import_react40.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0" }, "Read Only Access")), /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react40.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react40.default.createElement(
1943
1940
  TextInput,
1944
1941
  {
1945
1942
  label: primaryInputLabel,
@@ -1948,7 +1945,7 @@ var UniversalIdentityPage = ({
1948
1945
  disabled: isReadOnly || isSubmitting,
1949
1946
  maxLength: 50
1950
1947
  }
1951
- ), secondaryInputLabel && /* @__PURE__ */ import_react42.default.createElement(
1948
+ ), secondaryInputLabel && /* @__PURE__ */ import_react40.default.createElement(
1952
1949
  TextInput,
1953
1950
  {
1954
1951
  label: secondaryInputLabel,
@@ -1957,7 +1954,7 @@ var UniversalIdentityPage = ({
1957
1954
  disabled: isReadOnly || isSubmitting,
1958
1955
  maxLength: 150
1959
1956
  }
1960
- ), !isReadOnly && /* @__PURE__ */ import_react42.default.createElement("div", { className: "pt-8 mt-2 flex flex-col sm:flex-row sm:items-center justify-between gap-6" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center gap-4 w-full sm:w-auto" }, /* @__PURE__ */ import_react42.default.createElement(
1957
+ ), !isReadOnly && /* @__PURE__ */ import_react40.default.createElement("div", { className: "pt-8 mt-2 flex flex-col sm:flex-row sm:items-center justify-between gap-6" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex items-center gap-4 w-full sm:w-auto" }, /* @__PURE__ */ import_react40.default.createElement(
1961
1958
  ThreeDActionButton,
1962
1959
  {
1963
1960
  type: "submit",
@@ -1966,7 +1963,7 @@ var UniversalIdentityPage = ({
1966
1963
  className: "min-w-32 w-full sm:w-auto"
1967
1964
  },
1968
1965
  "Save Changes"
1969
- ), hasChanges && !isSubmitting && /* @__PURE__ */ import_react42.default.createElement(
1966
+ ), hasChanges && !isSubmitting && /* @__PURE__ */ import_react40.default.createElement(
1970
1967
  "button",
1971
1968
  {
1972
1969
  type: "button",
@@ -1977,7 +1974,7 @@ var UniversalIdentityPage = ({
1977
1974
  className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
1978
1975
  },
1979
1976
  "Cancel"
1980
- )), allowDeletion && /* @__PURE__ */ import_react42.default.createElement(
1977
+ )), allowDeletion && /* @__PURE__ */ import_react40.default.createElement(
1981
1978
  "button",
1982
1979
  {
1983
1980
  type: "button",
@@ -1986,7 +1983,7 @@ var UniversalIdentityPage = ({
1986
1983
  },
1987
1984
  "Delete ",
1988
1985
  headerTitle.split(" ")[0]
1989
- )))), isDeleteModalOpen && !isReadOnly && allowDeletion && /* @__PURE__ */ import_react42.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "absolute inset-0 bg-black/30 shadow-2xl", onClick: () => !isDeleting && setIsDeleteModalOpen(false) }), /* @__PURE__ */ import_react42.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react42.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Confirm Deletion"), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, deleteWarningText)), /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react42.default.createElement(
1986
+ )))), isDeleteModalOpen && !isReadOnly && allowDeletion && /* @__PURE__ */ import_react40.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "absolute inset-0 bg-black/30 shadow-2xl", onClick: () => !isDeleting && setIsDeleteModalOpen(false) }), /* @__PURE__ */ import_react40.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react40.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Confirm Deletion"), /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, deleteWarningText)), /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react40.default.createElement(
1990
1987
  "button",
1991
1988
  {
1992
1989
  type: "button",
@@ -1995,7 +1992,7 @@ var UniversalIdentityPage = ({
1995
1992
  className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
1996
1993
  },
1997
1994
  "Cancel"
1998
- ), /* @__PURE__ */ import_react42.default.createElement(
1995
+ ), /* @__PURE__ */ import_react40.default.createElement(
1999
1996
  "button",
2000
1997
  {
2001
1998
  type: "button",
@@ -2003,17 +2000,17 @@ var UniversalIdentityPage = ({
2003
2000
  disabled: isDeleting,
2004
2001
  className: "flex-1 py-2 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center items-center outline-none"
2005
2002
  },
2006
- isDeleting ? /* @__PURE__ */ import_react42.default.createElement(ButtonSpinner2, null) : "Delete"
2003
+ isDeleting ? /* @__PURE__ */ import_react40.default.createElement(ButtonSpinner2, null) : "Delete"
2007
2004
  )))));
2008
2005
  };
2009
2006
 
2010
2007
  // src/components/UniversalMembersPage.tsx
2011
- var import_react43 = __toESM(require("react"));
2008
+ var import_react41 = __toESM(require("react"));
2012
2009
  var import_react_hot_toast5 = __toESM(require("react-hot-toast"));
2013
- var import_react44 = require("@hugeicons/react");
2014
- var import_core_free_icons11 = require("@hugeicons/core-free-icons");
2015
- var ButtonSpinner3 = () => /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 16, className: "animate-spin text-white" });
2016
- var PageSpinner2 = () => /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2010
+ var import_react42 = require("@hugeicons/react");
2011
+ var import_core_free_icons10 = require("@hugeicons/core-free-icons");
2012
+ var ButtonSpinner3 = () => /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.Loading03Icon, size: 16, className: "animate-spin text-white" });
2013
+ var PageSpinner2 = () => /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2017
2014
  var getInitials = (name) => {
2018
2015
  if (!name) return "U";
2019
2016
  const parts = name.trim().split(" ");
@@ -2056,18 +2053,18 @@ var UniversalMembersPage = ({
2056
2053
  onRemoveMember,
2057
2054
  onUpdateRole
2058
2055
  }) => {
2059
- const [currentView, setCurrentView] = (0, import_react43.useState)("list");
2060
- const [selectedMember, setSelectedMember] = (0, import_react43.useState)(null);
2061
- const [inviteEmail, setInviteEmail] = (0, import_react43.useState)("");
2062
- const [inviteFirst, setInviteFirst] = (0, import_react43.useState)("");
2063
- const [inviteLast, setInviteLast] = (0, import_react43.useState)("");
2064
- const [isInviting, setIsInviting] = (0, import_react43.useState)(false);
2065
- const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react43.useState)(false);
2066
- const [isUpdatingRole, setIsUpdatingRole] = (0, import_react43.useState)(false);
2067
- const [memberToDelete, setMemberToDelete] = (0, import_react43.useState)(null);
2068
- const [isDeleting, setIsDeleting] = (0, import_react43.useState)(false);
2069
- const dropdownRef = (0, import_react43.useRef)(null);
2070
- (0, import_react43.useEffect)(() => {
2056
+ const [currentView, setCurrentView] = (0, import_react41.useState)("list");
2057
+ const [selectedMember, setSelectedMember] = (0, import_react41.useState)(null);
2058
+ const [inviteEmail, setInviteEmail] = (0, import_react41.useState)("");
2059
+ const [inviteFirst, setInviteFirst] = (0, import_react41.useState)("");
2060
+ const [inviteLast, setInviteLast] = (0, import_react41.useState)("");
2061
+ const [isInviting, setIsInviting] = (0, import_react41.useState)(false);
2062
+ const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react41.useState)(false);
2063
+ const [isUpdatingRole, setIsUpdatingRole] = (0, import_react41.useState)(false);
2064
+ const [memberToDelete, setMemberToDelete] = (0, import_react41.useState)(null);
2065
+ const [isDeleting, setIsDeleting] = (0, import_react41.useState)(false);
2066
+ const dropdownRef = (0, import_react41.useRef)(null);
2067
+ (0, import_react41.useEffect)(() => {
2071
2068
  function handleClickOutside(event) {
2072
2069
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
2073
2070
  setIsRoleModalOpen(false);
@@ -2141,15 +2138,15 @@ var UniversalMembersPage = ({
2141
2138
  setSelectedMember(null);
2142
2139
  setIsRoleModalOpen(false);
2143
2140
  };
2144
- return /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white " }, /* @__PURE__ */ import_react43.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" && /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), canManage && /* @__PURE__ */ import_react43.default.createElement(
2141
+ return /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white " }, /* @__PURE__ */ import_react41.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" && /* @__PURE__ */ import_react41.default.createElement(import_react41.default.Fragment, null, /* @__PURE__ */ import_react41.default.createElement("div", null, /* @__PURE__ */ import_react41.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), canManage && /* @__PURE__ */ import_react41.default.createElement(
2145
2142
  ThreeDActionButton,
2146
2143
  {
2147
2144
  onClick: () => setCurrentView("invite"),
2148
2145
  className: "w-fit shrink-0 gap-2"
2149
2146
  },
2150
- /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.UserAdd01Icon, size: 12 }),
2147
+ /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.UserAdd01Icon, size: 12 }),
2151
2148
  "Add Member"
2152
- )), currentView !== "list" && /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react43.default.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react43.default.createElement("h1", { className: " font-serif text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react43.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.map((member) => /* @__PURE__ */ import_react43.default.createElement(
2149
+ )), currentView !== "list" && /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react41.default.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react41.default.createElement("h1", { className: " font-serif text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react41.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.map((member) => /* @__PURE__ */ import_react41.default.createElement(
2153
2150
  "div",
2154
2151
  {
2155
2152
  key: member.id,
@@ -2159,7 +2156,7 @@ var UniversalMembersPage = ({
2159
2156
  },
2160
2157
  className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2161
2158
  },
2162
- /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react43.default.createElement(
2159
+ /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react41.default.createElement(
2163
2160
  "img",
2164
2161
  {
2165
2162
  src: member.displayImage,
@@ -2167,25 +2164,25 @@ var UniversalMembersPage = ({
2167
2164
  className: "w-full h-full object-cover blur-sm transition-all duration-300",
2168
2165
  onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
2169
2166
  }
2170
- )) : /* @__PURE__ */ import_react43.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center text-black text-xs ${resolveThemeColor(member.profileColor)}` }, getInitials(member.fullName)), /* @__PURE__ */ import_react43.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-sm text-black truncate pr-2 sm:pr-4" }, member.fullName, " ", member.userId === currentUserId && /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-neutral-400 ml-1 sm:ml-2" }, "(You)")), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-xs text-neutral-500 truncate pr-2 sm:pr-4 mt-0.5" }, member.email))),
2171
- /* @__PURE__ */ import_react43.default.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-black border border-neutral-100 px-4 py-2 rounded-full bg-white whitespace-nowrap" }, canManage ? "Manage" : "View"))
2172
- ))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react43.default.createElement(
2167
+ )) : /* @__PURE__ */ import_react41.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center text-black text-xs ${resolveThemeColor(member.profileColor)}` }, getInitials(member.fullName)), /* @__PURE__ */ import_react41.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-sm text-black truncate pr-2 sm:pr-4" }, member.fullName, " ", member.userId === currentUserId && /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-neutral-400 ml-1 sm:ml-2" }, "(You)")), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-xs text-neutral-500 truncate pr-2 sm:pr-4 mt-0.5" }, member.email))),
2168
+ /* @__PURE__ */ import_react41.default.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-black border border-neutral-100 px-4 py-2 rounded-full bg-white whitespace-nowrap" }, canManage ? "Manage" : "View"))
2169
+ ))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react41.default.createElement(
2173
2170
  "button",
2174
2171
  {
2175
2172
  onClick: () => onPageChange(currentPage - 1),
2176
2173
  disabled: currentPage === 1 || isLoading,
2177
2174
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
2178
2175
  },
2179
- /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 14 })
2180
- ), /* @__PURE__ */ import_react43.default.createElement(
2176
+ /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.ArrowLeft01Icon, size: 14 })
2177
+ ), /* @__PURE__ */ import_react41.default.createElement(
2181
2178
  "button",
2182
2179
  {
2183
2180
  onClick: () => onPageChange(currentPage + 1),
2184
2181
  disabled: currentPage >= totalPages || isLoading,
2185
2182
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
2186
2183
  },
2187
- /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.ArrowRight01Icon, size: 14 })
2188
- ))))), currentView === "details" && selectedMember && /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-2xl text-left" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center gap-5" }, selectedMember.displayImage && selectedMember.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-16 h-16 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react43.default.createElement(
2184
+ /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.ArrowRight01Icon, size: 14 })
2185
+ ))))), currentView === "details" && selectedMember && /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full max-w-2xl text-left" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center gap-5" }, selectedMember.displayImage && selectedMember.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-16 h-16 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react41.default.createElement(
2189
2186
  "img",
2190
2187
  {
2191
2188
  src: selectedMember.displayImage,
@@ -2193,7 +2190,7 @@ var UniversalMembersPage = ({
2193
2190
  className: "w-full h-full object-cover blur-sm transition-all duration-300",
2194
2191
  onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
2195
2192
  }
2196
- )) : /* @__PURE__ */ import_react43.default.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("h2", { className: " font-serif text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-100 pt-8" }, /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Role"), canChangeRoles && selectedMember.userId !== currentUserId ? /* @__PURE__ */ import_react43.default.createElement(
2193
+ )) : /* @__PURE__ */ import_react41.default.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ import_react41.default.createElement("div", null, /* @__PURE__ */ import_react41.default.createElement("h2", { className: " font-serif text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-100 pt-8" }, /* @__PURE__ */ import_react41.default.createElement("div", null, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Role"), canChangeRoles && selectedMember.userId !== currentUserId ? /* @__PURE__ */ import_react41.default.createElement(
2197
2194
  "button",
2198
2195
  {
2199
2196
  onClick: () => !isUpdatingRole && setIsRoleModalOpen(true),
@@ -2201,16 +2198,16 @@ var UniversalMembersPage = ({
2201
2198
  className: `flex items-center gap-3 text-xs text-black pl-4 pr-3 py-2 border rounded-full transition-colors disabled:opacity-50 outline-none ${isRoleModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
2202
2199
  },
2203
2200
  selectedMember.role,
2204
- isUpdatingRole ? /* @__PURE__ */ import_react43.default.createElement(ButtonSpinner3, null) : /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2205
- ) : /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ import_react43.default.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-100" }, /* @__PURE__ */ import_react43.default.createElement(
2201
+ isUpdatingRole ? /* @__PURE__ */ import_react41.default.createElement(ButtonSpinner3, null) : /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2202
+ ) : /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ import_react41.default.createElement("div", null, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ import_react41.default.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-100" }, /* @__PURE__ */ import_react41.default.createElement(
2206
2203
  "button",
2207
2204
  {
2208
2205
  onClick: () => setMemberToDelete(selectedMember),
2209
2206
  className: "flex items-center gap-2 text-[11px] tracking-widest text-red-600 hover:text-red-700 transition-colors w-fit outline-none"
2210
2207
  },
2211
- /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.Delete01Icon, size: 14 }),
2208
+ /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons10.Delete01Icon, size: 14 }),
2212
2209
  " Remove Member"
2213
- )))), currentView === "invite" && canManage && /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-2xl text-left" }, /* @__PURE__ */ import_react43.default.createElement("form", { onSubmit: handleInvite, className: "space-y-8", autoComplete: "off" }, /* @__PURE__ */ import_react43.default.createElement(
2210
+ )))), currentView === "invite" && canManage && /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full max-w-2xl text-left" }, /* @__PURE__ */ import_react41.default.createElement("form", { onSubmit: handleInvite, className: "space-y-8", autoComplete: "off" }, /* @__PURE__ */ import_react41.default.createElement(
2214
2211
  TextInput,
2215
2212
  {
2216
2213
  label: "Email Address",
@@ -2219,7 +2216,7 @@ var UniversalMembersPage = ({
2219
2216
  disabled: isInviting,
2220
2217
  placeholder: "developer@acme.com"
2221
2218
  }
2222
- ), requireNamesForInvite && /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react43.default.createElement(
2219
+ ), requireNamesForInvite && /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react41.default.createElement(
2223
2220
  TextInput,
2224
2221
  {
2225
2222
  label: "First Name",
@@ -2228,7 +2225,7 @@ var UniversalMembersPage = ({
2228
2225
  disabled: isInviting,
2229
2226
  placeholder: "Jane"
2230
2227
  }
2231
- ), /* @__PURE__ */ import_react43.default.createElement(
2228
+ ), /* @__PURE__ */ import_react41.default.createElement(
2232
2229
  TextInput,
2233
2230
  {
2234
2231
  label: "Last Name",
@@ -2237,7 +2234,7 @@ var UniversalMembersPage = ({
2237
2234
  disabled: isInviting,
2238
2235
  placeholder: "Doe"
2239
2236
  }
2240
- )), /* @__PURE__ */ import_react43.default.createElement("div", { className: "pt-8 mt-2" }, /* @__PURE__ */ import_react43.default.createElement(
2237
+ )), /* @__PURE__ */ import_react41.default.createElement("div", { className: "pt-8 mt-2" }, /* @__PURE__ */ import_react41.default.createElement(
2241
2238
  ThreeDActionButton,
2242
2239
  {
2243
2240
  type: "submit",
@@ -2246,7 +2243,7 @@ var UniversalMembersPage = ({
2246
2243
  className: "min-w-40"
2247
2244
  },
2248
2245
  "Send Invitation"
2249
- )))), isRoleModalOpen && canChangeRoles && /* @__PURE__ */ import_react43.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdatingRole && setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react43.default.createElement("div", { ref: dropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight" }, "Update Role")), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, availableRoles.map((roleOption) => /* @__PURE__ */ import_react43.default.createElement(
2246
+ )))), isRoleModalOpen && canChangeRoles && /* @__PURE__ */ import_react41.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdatingRole && setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react41.default.createElement("div", { ref: dropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react41.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight" }, "Update Role")), /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, availableRoles.map((roleOption) => /* @__PURE__ */ import_react41.default.createElement(
2250
2247
  "button",
2251
2248
  {
2252
2249
  key: roleOption,
@@ -2254,9 +2251,9 @@ var UniversalMembersPage = ({
2254
2251
  disabled: isUpdatingRole,
2255
2252
  className: `text-left px-4 py-3 text-[12px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${selectedMember?.role === roleOption ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2256
2253
  },
2257
- /* @__PURE__ */ import_react43.default.createElement("span", { className: "truncate pr-2" }, roleOption),
2258
- selectedMember?.role === roleOption && /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-1.5 h-1.5 rounded-full shrink-0 bg-black" })
2259
- ))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react43.default.createElement(
2254
+ /* @__PURE__ */ import_react41.default.createElement("span", { className: "truncate pr-2" }, roleOption),
2255
+ selectedMember?.role === roleOption && /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-1.5 h-1.5 rounded-full shrink-0 bg-black" })
2256
+ ))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react41.default.createElement(
2260
2257
  "button",
2261
2258
  {
2262
2259
  onClick: () => setIsRoleModalOpen(false),
@@ -2264,11 +2261,11 @@ var UniversalMembersPage = ({
2264
2261
  className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
2265
2262
  },
2266
2263
  "Cancel"
2267
- )))), memberToDelete && canManage && /* @__PURE__ */ import_react43.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isDeleting && setMemberToDelete(null) }), /* @__PURE__ */ import_react43.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Remove Member"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to remove this member? They will lose access instantly.")), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react43.default.createElement("button", { onClick: () => setMemberToDelete(null), disabled: isDeleting, className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel"), /* @__PURE__ */ import_react43.default.createElement("button", { onClick: handleDelete, disabled: isDeleting, className: "flex-1 py-2 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none" }, isDeleting ? /* @__PURE__ */ import_react43.default.createElement(ButtonSpinner3, null) : "Remove")))));
2264
+ )))), memberToDelete && canManage && /* @__PURE__ */ import_react41.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isDeleting && setMemberToDelete(null) }), /* @__PURE__ */ import_react41.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react41.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Remove Member"), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to remove this member? They will lose access instantly.")), /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react41.default.createElement("button", { onClick: () => setMemberToDelete(null), disabled: isDeleting, className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel"), /* @__PURE__ */ import_react41.default.createElement("button", { onClick: handleDelete, disabled: isDeleting, className: "flex-1 py-2 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none" }, isDeleting ? /* @__PURE__ */ import_react41.default.createElement(ButtonSpinner3, null) : "Remove")))));
2268
2265
  };
2269
2266
 
2270
2267
  // src/components/UniversalProfileSettings.tsx
2271
- var import_react45 = __toESM(require("react"));
2268
+ var import_react43 = __toESM(require("react"));
2272
2269
  var import_react_hot_toast6 = __toESM(require("react-hot-toast"));
2273
2270
  var UniversalProfileSettings = ({
2274
2271
  initialFirstName,
@@ -2279,10 +2276,10 @@ var UniversalProfileSettings = ({
2279
2276
  isReadOnly = false,
2280
2277
  onSaveProfile
2281
2278
  }) => {
2282
- const [firstName, setFirstName] = (0, import_react45.useState)(initialFirstName);
2283
- const [lastName, setLastName] = (0, import_react45.useState)(initialLastName);
2284
- const [isSubmitting, setIsSubmitting] = (0, import_react45.useState)(false);
2285
- (0, import_react45.useEffect)(() => {
2279
+ const [firstName, setFirstName] = (0, import_react43.useState)(initialFirstName);
2280
+ const [lastName, setLastName] = (0, import_react43.useState)(initialLastName);
2281
+ const [isSubmitting, setIsSubmitting] = (0, import_react43.useState)(false);
2282
+ (0, import_react43.useEffect)(() => {
2286
2283
  setFirstName(initialFirstName || "");
2287
2284
  setLastName(initialLastName || "");
2288
2285
  }, [initialFirstName, initialLastName]);
@@ -2312,7 +2309,7 @@ var UniversalProfileSettings = ({
2312
2309
  };
2313
2310
  const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
2314
2311
  const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
2315
- return /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react45.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react45.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react45.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react45.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react45.default.createElement(
2312
+ return /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react43.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react43.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react43.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react43.default.createElement(
2316
2313
  TextInput,
2317
2314
  {
2318
2315
  label: "First Name",
@@ -2321,7 +2318,7 @@ var UniversalProfileSettings = ({
2321
2318
  disabled: isReadOnly || isSubmitting,
2322
2319
  placeholder: "System"
2323
2320
  }
2324
- )), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react45.default.createElement(
2321
+ )), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react43.default.createElement(
2325
2322
  TextInput,
2326
2323
  {
2327
2324
  label: "Last Name",
@@ -2330,7 +2327,7 @@ var UniversalProfileSettings = ({
2330
2327
  disabled: isReadOnly || isSubmitting,
2331
2328
  placeholder: "Admin"
2332
2329
  }
2333
- ))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react45.default.createElement(
2330
+ ))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react43.default.createElement(
2334
2331
  TextInput,
2335
2332
  {
2336
2333
  label: "Email ID",
@@ -2339,7 +2336,7 @@ var UniversalProfileSettings = ({
2339
2336
  },
2340
2337
  disabled: true
2341
2338
  }
2342
- ), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Account Status"), /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Member Since"), /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react45.default.createElement(
2339
+ ), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Account Status"), /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react43.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Member Since"), /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react43.default.createElement(
2343
2340
  "button",
2344
2341
  {
2345
2342
  type: "button",
@@ -2350,7 +2347,7 @@ var UniversalProfileSettings = ({
2350
2347
  className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
2351
2348
  },
2352
2349
  "Cancel"
2353
- ), /* @__PURE__ */ import_react45.default.createElement(
2350
+ ), /* @__PURE__ */ import_react43.default.createElement(
2354
2351
  ThreeDActionButton,
2355
2352
  {
2356
2353
  type: "submit",
@@ -2363,11 +2360,11 @@ var UniversalProfileSettings = ({
2363
2360
  };
2364
2361
 
2365
2362
  // src/components/UniversalBillingPage.tsx
2366
- var import_react46 = __toESM(require("react"));
2367
- var import_react47 = require("@hugeicons/react");
2368
- var import_core_free_icons12 = require("@hugeicons/core-free-icons");
2369
- var PageSpinner3 = () => /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 32, className: "animate-spin mb-4 text-neutral-400" }));
2370
- var ButtonSpinner4 = () => /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 16, className: "animate-spin text-neutral-500" });
2363
+ var import_react44 = __toESM(require("react"));
2364
+ var import_react45 = require("@hugeicons/react");
2365
+ var import_core_free_icons11 = require("@hugeicons/core-free-icons");
2366
+ var PageSpinner3 = () => /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 32, className: "animate-spin mb-4 text-neutral-400" }));
2367
+ var ButtonSpinner4 = () => /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 16, className: "animate-spin text-neutral-500" });
2371
2368
  var formatDate = (dateString) => {
2372
2369
  if (!dateString) return "N/A";
2373
2370
  return new Date(dateString).toLocaleDateString("en-US", {
@@ -2409,13 +2406,13 @@ var UniversalBillingPage = ({
2409
2406
  onPayInvoice,
2410
2407
  onUpdateInvoiceStatus
2411
2408
  }) => {
2412
- const [currentView, setCurrentView] = (0, import_react46.useState)("list");
2413
- const [selectedInvoice, setSelectedInvoice] = (0, import_react46.useState)(null);
2414
- const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react46.useState)(false);
2415
- const [isPaying, setIsPaying] = (0, import_react46.useState)(false);
2416
- const [isActionModalOpen, setIsActionModalOpen] = (0, import_react46.useState)(false);
2417
- const [isUpdating, setIsUpdating] = (0, import_react46.useState)(false);
2418
- const [twoFactorCode, setTwoFactorCode] = (0, import_react46.useState)("");
2409
+ const [currentView, setCurrentView] = (0, import_react44.useState)("list");
2410
+ const [selectedInvoice, setSelectedInvoice] = (0, import_react44.useState)(null);
2411
+ const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react44.useState)(false);
2412
+ const [isPaying, setIsPaying] = (0, import_react44.useState)(false);
2413
+ const [isActionModalOpen, setIsActionModalOpen] = (0, import_react44.useState)(false);
2414
+ const [isUpdating, setIsUpdating] = (0, import_react44.useState)(false);
2415
+ const [twoFactorCode, setTwoFactorCode] = (0, import_react44.useState)("");
2419
2416
  const handlePayment = async () => {
2420
2417
  if (!selectedInvoice || isReadOnly || !onPayInvoice || isPaying) return;
2421
2418
  setIsPaying(true);
@@ -2442,14 +2439,14 @@ var UniversalBillingPage = ({
2442
2439
  setIsUpdating(false);
2443
2440
  }
2444
2441
  };
2445
- return /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex max-w-3xl rounded-2xl bg-white p-6 flex-col gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react46.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0 w-full" }, /* @__PURE__ */ import_react46.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 truncate mb-6" }, headerDescription), showSearchAndFilter && onSearchChange && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 mb-4" }, /* @__PURE__ */ import_react46.default.createElement(
2442
+ return /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex max-w-3xl rounded-2xl bg-white p-6 flex-col gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react44.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0 w-full" }, /* @__PURE__ */ import_react44.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 truncate mb-6" }, headerDescription), showSearchAndFilter && onSearchChange && onTimeframeChange && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 mb-4" }, /* @__PURE__ */ import_react44.default.createElement(
2446
2443
  TextInput,
2447
2444
  {
2448
2445
  placeholder: "Search by ID or Name...",
2449
2446
  value: searchQuery,
2450
2447
  onChange: onSearchChange
2451
2448
  }
2452
- ), /* @__PURE__ */ import_react46.default.createElement(
2449
+ ), /* @__PURE__ */ import_react44.default.createElement(
2453
2450
  "button",
2454
2451
  {
2455
2452
  type: "button",
@@ -2457,10 +2454,10 @@ var UniversalBillingPage = ({
2457
2454
  className: "px-4 py-3 text-sm bg-transparent border-b border-neutral-100 text-black outline-none focus:border-black shrink-0 text-left"
2458
2455
  },
2459
2456
  timeframe === "ALL" ? "All Time" : timeframe === "24H" ? "Past 24 Hours" : timeframe === "7D" ? "Past 7 Days" : "Past 30 Days"
2460
- ))) : /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.ArrowLeft01Icon, size: 12 }), " Back")), isReadOnly && currentView === "list" && /* @__PURE__ */ import_react46.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), currentView === "list" && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-8 w-full" }, (metricPrimaryLabel || metricSecondaryLabel) && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between sm:items-start pb-8 border-b border-neutral-100 gap-6 sm:gap-0" }, metricPrimaryLabel && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricPrimaryLabel), /* @__PURE__ */ import_react46.default.createElement("div", { className: "text-xl text-black tracking-tight truncate" }, formatNaira(metricPrimaryValue)), metricPrimarySubtext && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricPrimarySubtext)), metricSecondaryLabel && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0 sm:text-right" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricSecondaryLabel), /* @__PURE__ */ import_react46.default.createElement("div", { className: "text-xl text-emerald-600 tracking-tight truncate" }, formatNaira(metricSecondaryValue)), metricSecondarySubtext && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricSecondarySubtext))), !isReadOnly && showBillingOverview && /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Billing Status"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: `w-2 h-2 rounded-full shrink-0 ${billingStatus === "ACTIVE" ? "bg-green-500" : "bg-neutral-300"}` }), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-black tracking-widest truncate" }, billingStatus || "UNKNOWN"))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Next Billing Date"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black truncate" }, formatDate(nextBillingDate))), lastPaidDate && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Last Paid Date"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-neutral-600 truncate" }, formatDate(lastPaidDate)))), !isReadOnly && showUsageMetrics && usageMetrics.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-6 truncate block uppercase" }, "Usage & Limits"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4 text-sm text-black" }, usageMetrics.map((metric, idx) => /* @__PURE__ */ import_react46.default.createElement("div", { key: idx, className: "flex justify-between border-b border-neutral-50 pb-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-neutral-500 text-xs" }, metric.label), /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-xs text-black" }, metric.value))))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-4 truncate block uppercase" }, "Transaction History"), isLoading ? /* @__PURE__ */ import_react46.default.createElement(PageSpinner3, null) : invoices.length === 0 ? /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, "No records found.")) : /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "divide-y divide-neutral-100" }, invoices.map((inv) => /* @__PURE__ */ import_react46.default.createElement("div", { key: inv.id, onClick: () => {
2457
+ ))) : /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 12 }), " Back")), isReadOnly && currentView === "list" && /* @__PURE__ */ import_react44.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), currentView === "list" && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full max-w-2xl" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col gap-8 w-full" }, (metricPrimaryLabel || metricSecondaryLabel) && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between sm:items-start pb-8 border-b border-neutral-100 gap-6 sm:gap-0" }, metricPrimaryLabel && /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricPrimaryLabel), /* @__PURE__ */ import_react44.default.createElement("div", { className: "text-xl text-black tracking-tight truncate" }, formatNaira(metricPrimaryValue)), metricPrimarySubtext && /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricPrimarySubtext)), metricSecondaryLabel && /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0 sm:text-right" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-2 truncate block uppercase" }, metricSecondaryLabel), /* @__PURE__ */ import_react44.default.createElement("div", { className: "text-xl text-emerald-600 tracking-tight truncate" }, formatNaira(metricSecondaryValue)), metricSecondarySubtext && /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-[10px] text-neutral-500 mt-1 tracking-widest uppercase" }, metricSecondarySubtext))), !isReadOnly && showBillingOverview && /* @__PURE__ */ import_react44.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Billing Status"), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: `w-2 h-2 rounded-full shrink-0 ${billingStatus === "ACTIVE" ? "bg-green-500" : "bg-neutral-300"}` }), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-black tracking-widest truncate" }, billingStatus || "UNKNOWN"))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Next Billing Date"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-black truncate" }, formatDate(nextBillingDate))), lastPaidDate && /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-3 truncate block uppercase" }, "Last Paid Date"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-neutral-600 truncate" }, formatDate(lastPaidDate)))), !isReadOnly && showUsageMetrics && usageMetrics.length > 0 && /* @__PURE__ */ import_react44.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-6 truncate block uppercase" }, "Usage & Limits"), /* @__PURE__ */ import_react44.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4 text-sm text-black" }, usageMetrics.map((metric, idx) => /* @__PURE__ */ import_react44.default.createElement("div", { key: idx, className: "flex justify-between border-b border-neutral-50 pb-2" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-neutral-500 text-xs" }, metric.label), /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-xs text-black" }, metric.value))))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[10px] text-neutral-400 tracking-[0.2em] mb-4 truncate block uppercase" }, "Transaction History"), isLoading ? /* @__PURE__ */ import_react44.default.createElement(PageSpinner3, null) : invoices.length === 0 ? /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, "No records found.")) : /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "divide-y divide-neutral-100" }, invoices.map((inv) => /* @__PURE__ */ import_react44.default.createElement("div", { key: inv.id, onClick: () => {
2461
2458
  setSelectedInvoice(inv);
2462
2459
  setCurrentView("details");
2463
- }, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, inv.name), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black" }, formatNaira(inv.amountDue)), /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.ArrowRight01Icon, size: 14 })))))))), currentView === "details" && selectedInvoice && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full max-w-2xl animate-in fade-in duration-300" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Breakdown"), /* @__PURE__ */ import_react46.default.createElement("h2", { className: " font-serif text-xl text-black mb-1" }, selectedInvoice.name), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate(selectedInvoice.createdAt))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 p-6 sm:p-8 rounded-2xl border border-neutral-100" }, /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Amount"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xl text-black" }, formatNaira(selectedInvoice.amountDue))), /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Status"), isModMode ? /* @__PURE__ */ import_react46.default.createElement(
2460
+ }, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, inv.name), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-black" }, formatNaira(inv.amountDue)), /* @__PURE__ */ import_react44.default.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.ArrowRight01Icon, size: 14 })))))))), currentView === "details" && selectedInvoice && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full max-w-2xl animate-in fade-in duration-300" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Breakdown"), /* @__PURE__ */ import_react44.default.createElement("h2", { className: " font-serif text-xl text-black mb-1" }, selectedInvoice.name), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate(selectedInvoice.createdAt))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 p-6 sm:p-8 rounded-2xl border border-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Amount"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xl text-black" }, formatNaira(selectedInvoice.amountDue))), /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Status"), isModMode ? /* @__PURE__ */ import_react44.default.createElement(
2464
2461
  "button",
2465
2462
  {
2466
2463
  onClick: () => !isUpdating && setIsActionModalOpen(true),
@@ -2468,8 +2465,8 @@ var UniversalBillingPage = ({
2468
2465
  className: `flex items-center gap-3 text-xs text-black px-3 py-1.5 mt-1 border rounded-full transition-colors disabled:opacity-50 outline-none ${isActionModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
2469
2466
  },
2470
2467
  selectedInvoice.status,
2471
- isUpdating ? /* @__PURE__ */ import_react46.default.createElement(ButtonSpinner4, null) : /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2472
- ) : /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-100/60 mt-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Reference ID"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 bg-white px-3 py-2 rounded-full border border-neutral-100 inline-block" }, selectedInvoice.id))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, !isModMode && selectedInvoice.status === "SCHEDULED" && onPayInvoice && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react46.default.createElement(
2468
+ isUpdating ? /* @__PURE__ */ import_react44.default.createElement(ButtonSpinner4, null) : /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons11.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2469
+ ) : /* @__PURE__ */ import_react44.default.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ import_react44.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-100/60 mt-2" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1 uppercase" }, "Reference ID"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 bg-white px-3 py-2 rounded-full border border-neutral-100 inline-block" }, selectedInvoice.id))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, !isModMode && selectedInvoice.status === "SCHEDULED" && onPayInvoice && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react44.default.createElement(
2473
2470
  ThreeDActionButton,
2474
2471
  {
2475
2472
  onClick: handlePayment,
@@ -2478,12 +2475,12 @@ var UniversalBillingPage = ({
2478
2475
  className: "w-full sm:w-auto"
2479
2476
  },
2480
2477
  "Pay Invoice"
2481
- )), !isModMode && selectedInvoice.status === "PAID" && /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full" }, "Invoice Completed")))), isTimeframeModalOpen && showSearchAndFilter && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight mb-2" }, "Select Timeframe"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "Choose the range of transactions to display.")), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, [
2478
+ )), !isModMode && selectedInvoice.status === "PAID" && /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full" }, "Invoice Completed")))), isTimeframeModalOpen && showSearchAndFilter && onTimeframeChange && /* @__PURE__ */ import_react44.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react44.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight mb-2" }, "Select Timeframe"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "Choose the range of transactions to display.")), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, [
2482
2479
  { value: "ALL", label: "All Time" },
2483
2480
  { value: "24H", label: "Past 24 Hours" },
2484
2481
  { value: "7D", label: "Past 7 Days" },
2485
2482
  { value: "30D", label: "Past 30 Days" }
2486
- ].map((option) => /* @__PURE__ */ import_react46.default.createElement(
2483
+ ].map((option) => /* @__PURE__ */ import_react44.default.createElement(
2487
2484
  "button",
2488
2485
  {
2489
2486
  key: option.value,
@@ -2494,9 +2491,9 @@ var UniversalBillingPage = ({
2494
2491
  },
2495
2492
  className: `text-left px-4 py-3 text-[12px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${timeframe === option.value ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2496
2493
  },
2497
- /* @__PURE__ */ import_react46.default.createElement("span", { className: "truncate pr-2" }, option.label),
2498
- timeframe === option.value && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2499
- ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setIsTimeframeModalOpen(false), className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none" }, "Cancel")))), isActionModalOpen && isModMode && /* @__PURE__ */ import_react46.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdating && setIsActionModalOpen(false) }), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight mb-2" }, "Update Invoice Status"), /* @__PURE__ */ import_react46.default.createElement(
2494
+ /* @__PURE__ */ import_react44.default.createElement("span", { className: "truncate pr-2" }, option.label),
2495
+ timeframe === option.value && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2496
+ ))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => setIsTimeframeModalOpen(false), className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none" }, "Cancel")))), isActionModalOpen && isModMode && /* @__PURE__ */ import_react44.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdating && setIsActionModalOpen(false) }), /* @__PURE__ */ import_react44.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight mb-2" }, "Update Invoice Status"), /* @__PURE__ */ import_react44.default.createElement(
2500
2497
  TextInput,
2501
2498
  {
2502
2499
  placeholder: "Enter 2FA Code...",
@@ -2504,7 +2501,7 @@ var UniversalBillingPage = ({
2504
2501
  onChange: setTwoFactorCode,
2505
2502
  type: "password"
2506
2503
  }
2507
- )), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["SCHEDULED", "PAID", "FAILED", "CANCELED"].map((statusOption) => /* @__PURE__ */ import_react46.default.createElement(
2504
+ )), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["SCHEDULED", "PAID", "FAILED", "CANCELED"].map((statusOption) => /* @__PURE__ */ import_react44.default.createElement(
2508
2505
  "button",
2509
2506
  {
2510
2507
  key: statusOption,
@@ -2512,15 +2509,15 @@ var UniversalBillingPage = ({
2512
2509
  disabled: isUpdating || !twoFactorCode,
2513
2510
  className: `text-left px-4 py-3 text-[12px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${selectedInvoice?.status === statusOption ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2514
2511
  },
2515
- /* @__PURE__ */ import_react46.default.createElement("span", { className: "truncate pr-2" }, statusOption),
2516
- selectedInvoice?.status === statusOption && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2517
- ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setIsActionModalOpen(false), disabled: isUpdating, className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel")))));
2512
+ /* @__PURE__ */ import_react44.default.createElement("span", { className: "truncate pr-2" }, statusOption),
2513
+ selectedInvoice?.status === statusOption && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2514
+ ))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => setIsActionModalOpen(false), disabled: isUpdating, className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel")))));
2518
2515
  };
2519
2516
 
2520
2517
  // src/components/UniversalDashboardPage.tsx
2521
- var import_react48 = __toESM(require("react"));
2522
- var import_react49 = require("@hugeicons/react");
2523
- var import_core_free_icons13 = require("@hugeicons/core-free-icons");
2518
+ var import_react46 = __toESM(require("react"));
2519
+ var import_react47 = require("@hugeicons/react");
2520
+ var import_core_free_icons12 = require("@hugeicons/core-free-icons");
2524
2521
  var UniversalDashboardPage = ({
2525
2522
  headerTitle,
2526
2523
  headerDescription,
@@ -2531,20 +2528,20 @@ var UniversalDashboardPage = ({
2531
2528
  lists,
2532
2529
  isLoading = false
2533
2530
  }) => {
2534
- const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react48.useState)(false);
2531
+ const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react46.useState)(false);
2535
2532
  const selectedTimeframe = timeframes.find((t) => t.id === activeTimeframe) || timeframes[0];
2536
2533
  if (isLoading) {
2537
- return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2534
+ return /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2538
2535
  }
2539
- return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react48.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), timeframes.length > 0 && selectedTimeframe && onTimeframeChange && /* @__PURE__ */ import_react48.default.createElement(
2536
+ return /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react46.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), timeframes.length > 0 && selectedTimeframe && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement(
2540
2537
  "button",
2541
2538
  {
2542
2539
  onClick: () => setIsTimeframeModalOpen(true),
2543
2540
  className: "flex items-center gap-3 px-4 py-2 text-xs bg-white text-black outline-none rounded-full transition-colors hover:bg-neutral-50 shrink-0"
2544
2541
  },
2545
- /* @__PURE__ */ import_react48.default.createElement("span", null, selectedTimeframe.label),
2546
- /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2547
- )), stats.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-5 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react48.default.createElement("div", { key: idx, className: "p-6 flex flex-col gap-1 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react48.default.createElement("p", { className: `text-xl tracking-tight truncate ${stat.valueClass || "text-black"}` }, stat.value))))), lists.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-8 w-full max-w-4xl" }, lists.map((list, idx) => /* @__PURE__ */ import_react48.default.createElement("div", { key: idx, className: "bg-white rounded-2xl p-6 flex flex-col min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "text-neutral-400" }, list.icon), /* @__PURE__ */ import_react48.default.createElement("h2", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, list.title)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1 overflow-y-auto" }, list.items.length === 0 ? /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, list.emptyMessage) : list.items.map((item) => /* @__PURE__ */ import_react48.default.createElement("div", { key: item.id, className: "flex flex-col sm:flex-row sm:items-center justify-between py-4 gap-2 min-w-0 group" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.primaryText), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[10px] text-neutral-500 truncate tracking-widest mt-0.5" }, item.secondaryText)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-4 shrink-0 pl-4" }, item.rightText && /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-black" }, item.rightText), item.rightBadge && /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[9px] tracking-widest px-2.5 py-1 rounded-full ${item.rightBadgeClass || "bg-neutral-50 text-neutral-600"}` }, item.rightBadge)))))))), isTimeframeModalOpen && timeframes.length > 0 && onTimeframeChange && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight" }, "Select Timeframe")), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, timeframes.map((tf) => /* @__PURE__ */ import_react48.default.createElement(
2542
+ /* @__PURE__ */ import_react46.default.createElement("span", null, selectedTimeframe.label),
2543
+ /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons12.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2544
+ )), stats.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-5 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react46.default.createElement("div", { key: idx, className: "p-6 flex flex-col gap-1 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react46.default.createElement("p", { className: `text-xl tracking-tight truncate ${stat.valueClass || "text-black"}` }, stat.value))))), lists.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-8 w-full max-w-4xl" }, lists.map((list, idx) => /* @__PURE__ */ import_react46.default.createElement("div", { key: idx, className: "bg-white rounded-2xl p-6 flex flex-col min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "text-neutral-400" }, list.icon), /* @__PURE__ */ import_react46.default.createElement("h2", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, list.title)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1 overflow-y-auto" }, list.items.length === 0 ? /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, list.emptyMessage) : list.items.map((item) => /* @__PURE__ */ import_react46.default.createElement("div", { key: item.id, className: "flex flex-col sm:flex-row sm:items-center justify-between py-4 gap-2 min-w-0 group" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.primaryText), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[10px] text-neutral-500 truncate tracking-widest mt-0.5" }, item.secondaryText)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-4 shrink-0 pl-4" }, item.rightText && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-black" }, item.rightText), item.rightBadge && /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[9px] tracking-widest px-2.5 py-1 rounded-full ${item.rightBadgeClass || "bg-neutral-50 text-neutral-600"}` }, item.rightBadge)))))))), isTimeframeModalOpen && timeframes.length > 0 && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: " font-serif text-[14px] text-black tracking-tight" }, "Select Timeframe")), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, timeframes.map((tf) => /* @__PURE__ */ import_react46.default.createElement(
2548
2545
  "button",
2549
2546
  {
2550
2547
  key: tf.id,
@@ -2554,9 +2551,9 @@ var UniversalDashboardPage = ({
2554
2551
  },
2555
2552
  className: `text-left px-4 py-3 text-[12px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTimeframe === tf.id ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2556
2553
  },
2557
- /* @__PURE__ */ import_react48.default.createElement("span", { className: "truncate pr-2" }, tf.label),
2558
- activeTimeframe === tf.id && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2559
- ))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex border-t border-neutral-50" }, /* @__PURE__ */ import_react48.default.createElement(
2554
+ /* @__PURE__ */ import_react46.default.createElement("span", { className: "truncate pr-2" }, tf.label),
2555
+ activeTimeframe === tf.id && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-1.5 h-1.5 bg-black rounded-full shrink-0" })
2556
+ ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex border-t border-neutral-50" }, /* @__PURE__ */ import_react46.default.createElement(
2560
2557
  "button",
2561
2558
  {
2562
2559
  onClick: () => setIsTimeframeModalOpen(false),
@@ -2567,9 +2564,9 @@ var UniversalDashboardPage = ({
2567
2564
  };
2568
2565
 
2569
2566
  // src/components/UniversalAgentConsole.tsx
2570
- var import_react50 = __toESM(require("react"));
2571
- var import_react51 = require("@hugeicons/react");
2572
- var import_core_free_icons14 = require("@hugeicons/core-free-icons");
2567
+ var import_react48 = __toESM(require("react"));
2568
+ var import_react49 = require("@hugeicons/react");
2569
+ var import_core_free_icons13 = require("@hugeicons/core-free-icons");
2573
2570
  var formatKeyName = (key) => key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
2574
2571
  var toTitleCaseSafe = (str) => {
2575
2572
  if (!str) return "";
@@ -2598,13 +2595,13 @@ var UniversalAgentConsole = ({
2598
2595
  onUploadArchives,
2599
2596
  onDeleteArchive
2600
2597
  }) => {
2601
- const archiveRef = (0, import_react50.useRef)(null);
2602
- const [pendingFiles, setPendingFiles] = (0, import_react50.useState)([]);
2603
- const [isUploading, setIsUploading] = (0, import_react50.useState)(false);
2604
- const [isActioning, setIsActioning] = (0, import_react50.useState)(false);
2605
- const [actionModal, setActionModal] = (0, import_react50.useState)(null);
2606
- const [actionMessage, setActionMessage] = (0, import_react50.useState)("");
2607
- const [archiveToDelete, setArchiveToDelete] = (0, import_react50.useState)(null);
2598
+ const archiveRef = (0, import_react48.useRef)(null);
2599
+ const [pendingFiles, setPendingFiles] = (0, import_react48.useState)([]);
2600
+ const [isUploading, setIsUploading] = (0, import_react48.useState)(false);
2601
+ const [isActioning, setIsActioning] = (0, import_react48.useState)(false);
2602
+ const [actionModal, setActionModal] = (0, import_react48.useState)(null);
2603
+ const [actionMessage, setActionMessage] = (0, import_react48.useState)("");
2604
+ const [archiveToDelete, setArchiveToDelete] = (0, import_react48.useState)(null);
2608
2605
  const handleFileSelect = (e) => {
2609
2606
  if (e.target.files && e.target.files.length > 0) {
2610
2607
  setPendingFiles((prev) => [...prev, ...Array.from(e.target.files)]);
@@ -2633,36 +2630,36 @@ var UniversalAgentConsole = ({
2633
2630
  }
2634
2631
  };
2635
2632
  const DynamicArrayAccordion = ({ items, parentKey }) => {
2636
- const [activeFAQ, setActiveFAQ] = (0, import_react50.useState)(null);
2637
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col relative z-10 bg-transparent w-full mt-2 border-t border-neutral-100" }, items.map((item, index) => {
2633
+ const [activeFAQ, setActiveFAQ] = (0, import_react48.useState)(null);
2634
+ return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col relative z-10 bg-transparent w-full mt-2 border-t border-neutral-100" }, items.map((item, index) => {
2638
2635
  const isOpen = activeFAQ === index;
2639
2636
  let label = `${parentKey ? formatKeyName(parentKey) : "Item"} ${index + 1}`;
2640
2637
  if (item.fullName) label = toTitleCaseSafe(item.fullName);
2641
2638
  else if (item.role) label = item.role;
2642
2639
  else if (item.proposedName) label = toTitleCaseSafe(item.proposedName);
2643
- return /* @__PURE__ */ import_react50.default.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ import_react50.default.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ import_react50.default.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ import_react50.default.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.ArrowDown01Icon, size: 16 }))), /* @__PURE__ */ import_react50.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 md:pb-8 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "pt-2 flex flex-col gap-3 pr-4 md:pr-12" }, renderDynamicObject(item)))));
2640
+ return /* @__PURE__ */ import_react48.default.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ import_react48.default.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ import_react48.default.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.ArrowDown01Icon, size: 16 }))), /* @__PURE__ */ import_react48.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 md:pb-8 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "pt-2 flex flex-col gap-3 pr-4 md:pr-12" }, renderDynamicObject(item)))));
2644
2641
  }));
2645
2642
  };
2646
2643
  const renderValue = (key, value) => {
2647
2644
  if (value === null || value === void 0 || value === "") return null;
2648
2645
  if (typeof value === "string") {
2649
- if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ import_react50.default.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors w-fit outline-none mt-2" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Download01Icon, size: 14 }), " Download File");
2650
- if (key.toLowerCase().includes("name") && !value.includes("@")) return /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(value));
2651
- return /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, value);
2646
+ if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ import_react48.default.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors w-fit outline-none mt-2" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Download01Icon, size: 14 }), " Download File");
2647
+ if (key.toLowerCase().includes("name") && !value.includes("@")) return /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(value));
2648
+ return /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, value);
2652
2649
  }
2653
2650
  if (Array.isArray(value)) {
2654
2651
  const validItems = value.filter((item) => item !== null && item !== void 0 && item !== "");
2655
2652
  if (validItems.length === 0) return null;
2656
- if (typeof validItems[0] === "string") return /* @__PURE__ */ import_react50.default.createElement("ul", { className: "list-disc pl-4 mt-1" }, validItems.map((v, i) => /* @__PURE__ */ import_react50.default.createElement("li", { key: i, className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(v))));
2657
- return /* @__PURE__ */ import_react50.default.createElement(DynamicArrayAccordion, { items: validItems, parentKey: key });
2653
+ if (typeof validItems[0] === "string") return /* @__PURE__ */ import_react48.default.createElement("ul", { className: "list-disc pl-4 mt-1" }, validItems.map((v, i) => /* @__PURE__ */ import_react48.default.createElement("li", { key: i, className: "text-[12px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(v))));
2654
+ return /* @__PURE__ */ import_react48.default.createElement(DynamicArrayAccordion, { items: validItems, parentKey: key });
2658
2655
  }
2659
2656
  if (typeof value === "object") {
2660
2657
  if (Object.keys(value).length === 0) return null;
2661
2658
  const renderedObj = renderDynamicObject(value);
2662
2659
  if (!renderedObj || Array.isArray(renderedObj) && renderedObj.length === 0) return null;
2663
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-3 mt-1 w-full border-l border-neutral-100 pl-4 py-2" }, renderedObj);
2660
+ return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-3 mt-1 w-full border-l border-neutral-100 pl-4 py-2" }, renderedObj);
2664
2661
  }
2665
- return /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-sm text-black" }, String(value));
2662
+ return /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-sm text-black" }, String(value));
2666
2663
  };
2667
2664
  const renderDynamicObject = (obj) => {
2668
2665
  if (!obj) return null;
@@ -2673,22 +2670,22 @@ var UniversalAgentConsole = ({
2673
2670
  return true;
2674
2671
  });
2675
2672
  if (entries.length === 0) return null;
2676
- return entries.map(([k, v]) => /* @__PURE__ */ import_react50.default.createElement("div", { key: k, className: "flex flex-col items-start min-w-0 wrap-break-word w-full mb-3 last:mb-0" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 uppercase" }, formatKeyName(k)), renderValue(k, v)));
2673
+ return entries.map(([k, v]) => /* @__PURE__ */ import_react48.default.createElement("div", { key: k, className: "flex flex-col items-start min-w-0 wrap-break-word w-full mb-3 last:mb-0" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 uppercase" }, formatKeyName(k)), renderValue(k, v)));
2677
2674
  };
2678
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react50.default.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ import_react50.default.createElement("h1", { className: " font-serif text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react50.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xl text-black tracking-tight truncate" }, stat.value)))))), tabs.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-6" }, tabs.map((tab) => /* @__PURE__ */ import_react50.default.createElement("button", { key: tab.id, onClick: () => onTabChange(tab.id), className: `pb-3 text-sm transition-colors outline-none ${activeTab === tab.id ? "text-black border-b border-black" : "text-neutral-400 hover:text-black"}` }, tab.label))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full bg-white rounded-2xl max-w-3xl overflow-hidden flex flex-col min-h-100" }, isLoadingList ? /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 32, className: "animate-spin text-black" })) : listData.length === 0 ? /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 flex justify-center items-center text-neutral-500 text-sm py-20" }, "No matching applications found.")) : /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1" }, listData.map((item) => /* @__PURE__ */ import_react50.default.createElement("div", { key: item.id, onClick: () => onRowClick(item.id), className: "flex items-center justify-between p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.title), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500 truncate mt-1" }, item.subtitle)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 rounded-full uppercase ${item.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, item.status.replace(/_/g, " ")), /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, item.date))))), totalPages > 1 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center justify-between p-5 bg-neutral-50/50" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.ArrowRight01Icon, size: 14 }))))))), currentView === "details" && selectedApp && /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full bg-white rounded-2xl p-6 sm:p-10 animate-in fade-in duration-300 max-w-3xl flex flex-col" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center justify-between gap-4 pb-6" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => {
2675
+ return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react48.default.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ import_react48.default.createElement("h1", { className: " font-serif text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react48.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xl text-black tracking-tight truncate" }, stat.value)))))), tabs.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-6" }, tabs.map((tab) => /* @__PURE__ */ import_react48.default.createElement("button", { key: tab.id, onClick: () => onTabChange(tab.id), className: `pb-3 text-sm transition-colors outline-none ${activeTab === tab.id ? "text-black border-b border-black" : "text-neutral-400 hover:text-black"}` }, tab.label))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full bg-white rounded-2xl max-w-3xl overflow-hidden flex flex-col min-h-100" }, isLoadingList ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 32, className: "animate-spin text-black" })) : listData.length === 0 ? /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex-1 flex justify-center items-center text-neutral-500 text-sm py-20" }, "No matching applications found.")) : /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1" }, listData.map((item) => /* @__PURE__ */ import_react48.default.createElement("div", { key: item.id, onClick: () => onRowClick(item.id), className: "flex items-center justify-between p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.title), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 truncate mt-1" }, item.subtitle)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[10px] tracking-widest px-3 py-1 rounded-full uppercase ${item.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, item.status.replace(/_/g, " ")), /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, item.date))))), totalPages > 1 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between p-5 bg-neutral-50/50" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 14 }))))))), currentView === "details" && selectedApp && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full bg-white rounded-2xl p-6 sm:p-10 animate-in fade-in duration-300 max-w-3xl flex flex-col" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between gap-4 pb-6" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => {
2679
2676
  onBackToList();
2680
2677
  setPendingFiles([]);
2681
- }, className: "flex items-center gap-2 text-[10px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none uppercase" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 14 }), " Back to List"), /* @__PURE__ */ import_react50.default.createElement("span", { className: `text-[10px] tracking-widest px-4 py-1.5 rounded-full uppercase ${selectedApp.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, selectedApp.status.replace(/_/g, " "))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-2 mb-8" }, /* @__PURE__ */ import_react50.default.createElement("h2", { className: " font-serif text-xl text-black tracking-tight" }, selectedApp.name || selectedApp.title), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-neutral-500" }, selectedApp.type ? selectedApp.type.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase()) : selectedApp.subtitle)), selectedApp.agentId === currentAgentId && selectedApp.metadata && Object.keys(selectedApp.metadata).length > 0 ? /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-5" }, renderDynamicObject(selectedApp.metadata)) : selectedApp.agentId === currentAgentId ? /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-5" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-neutral-500" }, "No application data extracted.")) : null, selectedApp.agentId && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-4 pt-8 mt-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-1 mb-4" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " font-serif text-sm text-black" }, "Official Archives"), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload final certificates or documents. Once marked completed, the archive unlocks for the user.")), selectedApp.archives?.map((arch) => /* @__PURE__ */ import_react50.default.createElement("div", { key: arch.id, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.File02Icon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react50.default.createElement("span", { className: "truncate pr-2" }, arch.name)), /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setArchiveToDelete(arch), className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Delete02Icon, size: 16 })))), pendingFiles.map((file, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx, className: "flex items-center justify-between text-neutral-600 text-sm w-full" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.AttachmentIcon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react50.default.createElement("span", { className: "truncate pr-2" }, file.name)), /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setPendingFiles((p) => p.filter((_, i) => i !== idx)), className: "text-neutral-400 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Cancel01Icon, size: 16 })))), /* @__PURE__ */ import_react50.default.createElement("input", { type: "file", multiple: true, ref: archiveRef, onChange: handleFileSelect, className: "hidden", accept: "application/pdf,image/*" }), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => archiveRef.current?.click(), disabled: selectedApp.status !== "COMPLETED" || isUploading, className: "flex items-center justify-center gap-3 p-4 border border-neutral-100 rounded-full hover:bg-neutral-50 transition-colors text-black text-sm w-full outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Upload01Icon, size: 18, className: "text-neutral-400" }), " Select Files to Upload"), pendingFiles.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full sm:w-auto shrink-0" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setPendingFiles([]), disabled: isUploading, className: "px-6 py-2 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-200 outline-none w-full sm:w-auto uppercase" }, "Clear All"), /* @__PURE__ */ import_react50.default.createElement(ThreeDActionButton, { onClick: executeUpload, disabled: isUploading, isLoading: isUploading, className: "w-full sm:w-auto" }, "Upload ", pendingFiles.length, " File(s)")))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-6" }, !selectedApp.agentId ? /* @__PURE__ */ import_react50.default.createElement(ThreeDActionButton, { onClick: async () => {
2678
+ }, className: "flex items-center gap-2 text-[10px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none uppercase" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 14 }), " Back to List"), /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[10px] tracking-widest px-4 py-1.5 rounded-full uppercase ${selectedApp.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, selectedApp.status.replace(/_/g, " "))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-2 mb-8" }, /* @__PURE__ */ import_react48.default.createElement("h2", { className: " font-serif text-xl text-black tracking-tight" }, selectedApp.name || selectedApp.title), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-neutral-500" }, selectedApp.type ? selectedApp.type.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase()) : selectedApp.subtitle)), selectedApp.agentId === currentAgentId && selectedApp.metadata && Object.keys(selectedApp.metadata).length > 0 ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-5" }, renderDynamicObject(selectedApp.metadata)) : selectedApp.agentId === currentAgentId ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-5" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-neutral-500" }, "No application data extracted.")) : null, selectedApp.agentId && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-4 pt-8 mt-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-1 mb-4" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: " font-serif text-sm text-black" }, "Official Archives"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload final certificates or documents. Once marked completed, the archive unlocks for the user.")), selectedApp.archives?.map((arch) => /* @__PURE__ */ import_react48.default.createElement("div", { key: arch.id, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.File02Icon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react48.default.createElement("span", { className: "truncate pr-2" }, arch.name)), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setArchiveToDelete(arch), className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Delete02Icon, size: 16 })))), pendingFiles.map((file, idx) => /* @__PURE__ */ import_react48.default.createElement("div", { key: idx, className: "flex items-center justify-between text-neutral-600 text-sm w-full" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.AttachmentIcon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react48.default.createElement("span", { className: "truncate pr-2" }, file.name)), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setPendingFiles((p) => p.filter((_, i) => i !== idx)), className: "text-neutral-400 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Cancel01Icon, size: 16 })))), /* @__PURE__ */ import_react48.default.createElement("input", { type: "file", multiple: true, ref: archiveRef, onChange: handleFileSelect, className: "hidden", accept: "application/pdf,image/*" }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => archiveRef.current?.click(), disabled: selectedApp.status !== "COMPLETED" || isUploading, className: "flex items-center justify-center gap-3 p-4 border border-neutral-100 rounded-full hover:bg-neutral-50 transition-colors text-black text-sm w-full outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Upload01Icon, size: 18, className: "text-neutral-400" }), " Select Files to Upload"), pendingFiles.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full sm:w-auto shrink-0" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setPendingFiles([]), disabled: isUploading, className: "px-6 py-2 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-200 outline-none w-full sm:w-auto uppercase" }, "Clear All"), /* @__PURE__ */ import_react48.default.createElement(ThreeDActionButton, { onClick: executeUpload, disabled: isUploading, isLoading: isUploading, className: "w-full sm:w-auto" }, "Upload ", pendingFiles.length, " File(s)")))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-6" }, !selectedApp.agentId ? /* @__PURE__ */ import_react48.default.createElement(ThreeDActionButton, { onClick: async () => {
2682
2679
  setIsActioning(true);
2683
2680
  await onAcceptApplication(selectedApp.id);
2684
2681
  setIsActioning(false);
2685
- }, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Cancel01Icon, size: 16, className: "text-red-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react50.default.createElement("div", null, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-red-700" }, "Application Taken"), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-red-600 mt-1" }, "Currently handled by ", selectedApp.agentName || "another agent", "."))) : /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full flex flex-col sm:flex-row items-center gap-4 justify-between" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500" }, "You are the assigned agent."), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-end gap-3 w-full sm:w-auto" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setActionModal("query"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Query"), /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setActionModal("reject"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Reject"), /* @__PURE__ */ import_react50.default.createElement(ThreeDActionButton, { onClick: () => setActionModal("success"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto" }, "Mark Success"))))), actionModal && /* @__PURE__ */ import_react50.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setActionModal(null) }), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " font-serif text-lg text-black tracking-tight capitalize mb-2" }, actionModal === "success" ? "Complete Application" : `${actionModal} Application`), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500" }, actionModal === "success" ? "Are you sure you want to mark this application as successfully completed?" : `Please provide a clear reason for the user. They will see this message and be asked to fix their application.`)), (actionModal === "query" || actionModal === "reject") && /* @__PURE__ */ import_react50.default.createElement("div", { className: "p-6 pb-2" }, /* @__PURE__ */ import_react50.default.createElement(TextInput, { label: "Reason for Action", value: actionMessage, onChange: setActionMessage, placeholder: "Enter your reason here...", disabled: isActioning })), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center p-6 pt-4 gap-3" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setActionModal(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest uppercase text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react50.default.createElement(ThreeDActionButton, { onClick: async () => {
2682
+ }, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons13.Cancel01Icon, size: 16, className: "text-red-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-red-700" }, "Application Taken"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-red-600 mt-1" }, "Currently handled by ", selectedApp.agentName || "another agent", "."))) : /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex flex-col sm:flex-row items-center gap-4 justify-between" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, "You are the assigned agent."), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-end gap-3 w-full sm:w-auto" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setActionModal("query"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Query"), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setActionModal("reject"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 uppercase" }, "Reject"), /* @__PURE__ */ import_react48.default.createElement(ThreeDActionButton, { onClick: () => setActionModal("success"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto" }, "Mark Success"))))), actionModal && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setActionModal(null) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: " font-serif text-lg text-black tracking-tight capitalize mb-2" }, actionModal === "success" ? "Complete Application" : `${actionModal} Application`), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, actionModal === "success" ? "Are you sure you want to mark this application as successfully completed?" : `Please provide a clear reason for the user. They will see this message and be asked to fix their application.`)), (actionModal === "query" || actionModal === "reject") && /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6 pb-2" }, /* @__PURE__ */ import_react48.default.createElement(TextInput, { label: "Reason for Action", value: actionMessage, onChange: setActionMessage, placeholder: "Enter your reason here...", disabled: isActioning })), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center p-6 pt-4 gap-3" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setActionModal(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest uppercase text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react48.default.createElement(ThreeDActionButton, { onClick: async () => {
2686
2683
  setIsActioning(true);
2687
2684
  await onUpdateStatus(selectedApp.id, actionModal === "success" ? "COMPLETED" : actionModal === "reject" ? "REJECTED" : "QUEUED", actionMessage);
2688
2685
  setIsActioning(false);
2689
2686
  setActionModal(null);
2690
2687
  setActionMessage("");
2691
- }, disabled: isActioning || (actionModal === "query" || actionModal === "reject") && actionMessage.trim().length < 5, isLoading: isActioning, className: "flex-1" }, "Confirm ", actionModal)))), archiveToDelete && /* @__PURE__ */ import_react50.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setArchiveToDelete(null) }), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " font-serif text-lg text-black tracking-tight mb-2" }, "Delete Document?"), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500" }, 'Are you sure you want to permanently delete "', archiveToDelete.name, '"?')), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center p-6 gap-3" }, /* @__PURE__ */ import_react50.default.createElement("button", { onClick: () => setArchiveToDelete(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest uppercase text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react50.default.createElement(ThreeDActionButton, { onClick: async () => {
2688
+ }, disabled: isActioning || (actionModal === "query" || actionModal === "reject") && actionMessage.trim().length < 5, isLoading: isActioning, className: "flex-1" }, "Confirm ", actionModal)))), archiveToDelete && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setArchiveToDelete(null) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: " font-serif text-lg text-black tracking-tight mb-2" }, "Delete Document?"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, 'Are you sure you want to permanently delete "', archiveToDelete.name, '"?')), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center p-6 gap-3" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setArchiveToDelete(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest uppercase text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react48.default.createElement(ThreeDActionButton, { onClick: async () => {
2692
2689
  setIsActioning(true);
2693
2690
  await onDeleteArchive(selectedApp.id, archiveToDelete.id);
2694
2691
  setIsActioning(false);
@@ -2698,6 +2695,66 @@ var UniversalAgentConsole = ({
2698
2695
 
2699
2696
  // src/components/UniversalOverviewPage.tsx
2700
2697
  var import_react52 = __toESM(require("react"));
2698
+
2699
+ // src/components/Banner.tsx
2700
+ var import_react50 = __toESM(require("react"));
2701
+ var import_react51 = require("@hugeicons/react");
2702
+ var import_core_free_icons14 = require("@hugeicons/core-free-icons");
2703
+ var Banner = ({
2704
+ title,
2705
+ message,
2706
+ type,
2707
+ icon,
2708
+ isDismissible = true,
2709
+ onDismiss,
2710
+ action
2711
+ }) => {
2712
+ const [isVisible, setIsVisible] = (0, import_react50.useState)(true);
2713
+ if (!isVisible) return null;
2714
+ const handleDismiss = () => {
2715
+ setIsVisible(false);
2716
+ if (onDismiss) onDismiss();
2717
+ };
2718
+ const config = {
2719
+ success: {
2720
+ bg: "bg-emerald-50",
2721
+ iconColor: "text-emerald-600",
2722
+ titleColor: "text-emerald-900",
2723
+ msgColor: "text-emerald-700",
2724
+ defaultIcon: import_core_free_icons14.CheckmarkBadge01Icon,
2725
+ closeHover: "hover:bg-emerald-100 text-emerald-500"
2726
+ },
2727
+ warning: {
2728
+ bg: "bg-amber-50",
2729
+ iconColor: "text-amber-600",
2730
+ titleColor: "text-amber-900",
2731
+ msgColor: "text-amber-700",
2732
+ defaultIcon: import_core_free_icons14.InformationCircleIcon,
2733
+ closeHover: "hover:bg-amber-100 text-amber-500"
2734
+ },
2735
+ alert: {
2736
+ bg: "bg-red-50",
2737
+ iconColor: "text-red-600",
2738
+ titleColor: "text-red-900",
2739
+ msgColor: "text-red-700",
2740
+ defaultIcon: import_core_free_icons14.Alert02Icon,
2741
+ closeHover: "hover:bg-red-100 text-red-500"
2742
+ }
2743
+ };
2744
+ const currentConfig = config[type];
2745
+ const IconToUse = icon || currentConfig.defaultIcon;
2746
+ return /* @__PURE__ */ import_react50.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react50.default.createElement("div", { className: `shrink-0 mt-0.5 ${currentConfig.iconColor}` }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: IconToUse, size: 20 })), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 flex flex-col min-w-0 pr-6" }, /* @__PURE__ */ import_react50.default.createElement("h4", { className: `text-sm font-medium tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react50.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react50.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react50.default.createElement(
2747
+ "button",
2748
+ {
2749
+ onClick: handleDismiss,
2750
+ className: `absolute top-3 right-3 p-1.5 rounded-full transition-colors outline-none shrink-0 ${currentConfig.closeHover}`,
2751
+ "aria-label": "Dismiss banner"
2752
+ },
2753
+ /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons14.Cancel01Icon, size: 16 })
2754
+ ));
2755
+ };
2756
+
2757
+ // src/components/UniversalOverviewPage.tsx
2701
2758
  var UniversalOverviewPage = ({
2702
2759
  headerTitle,
2703
2760
  headerDescription,
@@ -2705,9 +2762,21 @@ var UniversalOverviewPage = ({
2705
2762
  detailsTitle = "Details",
2706
2763
  details,
2707
2764
  primaryAction,
2708
- alerts = []
2765
+ alerts = [],
2766
+ banner
2709
2767
  }) => {
2710
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-3xl bg-white" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react52.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-lg md:text-xl text-black tracking-tight truncate" }, stat.value)))))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6 sm:p-8 flex flex-col h-full min-w-0 gap-6" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4 border-b border-neutral-100 pb-4" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, detailsTitle), primaryAction && (primaryAction.href ? /* @__PURE__ */ import_react52.default.createElement(
2768
+ return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("h1", { className: " font-serif text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-3xl bg-white" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react52.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 mb-1 truncate uppercase" }, stat.label), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-lg md:text-xl text-black tracking-tight truncate" }, stat.value)))))), banner && banner.isVisible && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full max-w-3xl" }, /* @__PURE__ */ import_react52.default.createElement(
2769
+ Banner,
2770
+ {
2771
+ title: banner.title,
2772
+ message: banner.message,
2773
+ type: banner.type,
2774
+ icon: banner.icon,
2775
+ isDismissible: banner.isDismissible,
2776
+ onDismiss: banner.onDismiss,
2777
+ action: banner.action
2778
+ }
2779
+ )), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl max-w-3xl overflow-hidden bg-white min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6 sm:p-8 flex flex-col h-full min-w-0 gap-6" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4 border-b border-neutral-100 pb-4" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " font-serif text-[11px] text-black tracking-[0.2em] uppercase" }, detailsTitle), primaryAction && (primaryAction.href ? /* @__PURE__ */ import_react52.default.createElement(
2711
2780
  ThreeDButton,
2712
2781
  {
2713
2782
  href: primaryAction.href,
@@ -3571,6 +3640,7 @@ var UniversalRegistrationFlow = ({
3571
3640
  AiApproveDecline,
3572
3641
  AiStageCheck,
3573
3642
  AppBento2,
3643
+ Banner,
3574
3644
  Faq,
3575
3645
  FeatureScroll,
3576
3646
  Footer,
@@ -3599,7 +3669,6 @@ var UniversalRegistrationFlow = ({
3599
3669
  UniversalDashboardPage,
3600
3670
  UniversalDirectoryPage,
3601
3671
  UniversalErrorView,
3602
- UniversalHeader,
3603
3672
  UniversalIdentityPage,
3604
3673
  UniversalLookupPage,
3605
3674
  UniversalMembersPage,