@retinalabsllc/zairusjs 21.2.2 → 21.2.5

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
@@ -692,7 +692,7 @@ var ReusableOptions = ({
692
692
  const filteredOptions = options.filter(
693
693
  (opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
694
694
  );
695
- return /* @__PURE__ */ import_react11.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react11.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 max-h-[80vh]" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react11.default.createElement("h3", { className: "text-lg text-black tracking-tight" }, title), /* @__PURE__ */ import_react11.default.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react11.default.createElement(
695
+ return /* @__PURE__ */ import_react11.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react11.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 max-h-[80vh]" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react11.default.createElement("h3", { className: "text-lg text-black tracking-tight" }, title), /* @__PURE__ */ import_react11.default.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react11.default.createElement(
696
696
  "input",
697
697
  {
698
698
  type: "text",
@@ -707,15 +707,19 @@ var ReusableOptions = ({
707
707
  "button",
708
708
  {
709
709
  key: opt,
710
- onClick: () => {
711
- onSelect(opt);
712
- onClose();
713
- },
710
+ onClick: () => onSelect(opt),
714
711
  className: `w-full text-left p-4 text-xs tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#d97757] bg-[#d97757]/10" : "text-stone-600 hover:bg-stone-50/50"}`
715
712
  },
716
713
  opt.charAt(0).toUpperCase() + opt.slice(1).toLowerCase()
717
714
  );
718
- }))));
715
+ })), /* @__PURE__ */ import_react11.default.createElement("div", { className: "p-4 flex items-center justify-end shrink-0 bg-white " }, /* @__PURE__ */ import_react11.default.createElement(
716
+ "button",
717
+ {
718
+ onClick: onClose,
719
+ className: "text-[#d97757] outline-none text-sm tracking-wide hover:opacity-80 transition-opacity"
720
+ },
721
+ "Done"
722
+ ))));
719
723
  };
720
724
 
721
725
  // src/components/CalendarPicker.tsx
@@ -6400,7 +6404,28 @@ var import_navigation8 = require("next/navigation");
6400
6404
  var import_react98 = require("@hugeicons/react");
6401
6405
  var import_react_hot_toast18 = __toESM(require("react-hot-toast"));
6402
6406
  var import_core_free_icons38 = require("@hugeicons/core-free-icons");
6407
+ var OrgAvatar3 = ({ src, sizeClass = "w-10 h-10" }) => {
6408
+ const [loaded, setLoaded] = (0, import_react97.useState)(false);
6409
+ const [error, setError] = (0, import_react97.useState)(false);
6410
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
6411
+ const finalSrc = error || !src ? defaultAvatar : src;
6412
+ return /* @__PURE__ */ import_react97.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react97.default.createElement(
6413
+ "img",
6414
+ {
6415
+ src: finalSrc,
6416
+ alt: "Workspace Avatar",
6417
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
6418
+ onLoad: () => setLoaded(true),
6419
+ onError: () => setError(true)
6420
+ }
6421
+ )));
6422
+ };
6403
6423
  var UniversalHome3 = ({
6424
+ avatarSrc,
6425
+ organizations = [],
6426
+ activeOrgId,
6427
+ onOrganizationSelect,
6428
+ onLogout,
6404
6429
  createApplicationAction,
6405
6430
  checkApplicationAction,
6406
6431
  notifications = [],
@@ -6414,10 +6439,16 @@ var UniversalHome3 = ({
6414
6439
  customContent,
6415
6440
  applicationsProps
6416
6441
  }) => {
6442
+ const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react97.useState)(false);
6443
+ const [showOrgSwitcher, setShowOrgSwitcher] = (0, import_react97.useState)(false);
6417
6444
  const [showNotifDialog, setShowNotifDialog] = (0, import_react97.useState)(false);
6418
6445
  const [selectedNotif, setSelectedNotif] = (0, import_react97.useState)(null);
6419
6446
  const [isResolving, setIsResolving] = (0, import_react97.useState)(false);
6447
+ const [showLogoutConfirm, setShowLogoutConfirm] = (0, import_react97.useState)(false);
6448
+ const [isLoggingOut, setIsLoggingOut] = (0, import_react97.useState)(false);
6420
6449
  const router = (0, import_navigation8.useRouter)();
6450
+ const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
6451
+ const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
6421
6452
  const hasUnreadNotifs = notifications.some((n) => !n.isRead);
6422
6453
  const handleResolve = async (resolution) => {
6423
6454
  if (!onResolveInvite || !selectedNotif) return;
@@ -6430,7 +6461,39 @@ var UniversalHome3 = ({
6430
6461
  setIsResolving(false);
6431
6462
  }
6432
6463
  };
6433
- return /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-3" }), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ import_react97.default.createElement(
6464
+ const confirmLogout = async () => {
6465
+ setIsLoggingOut(true);
6466
+ try {
6467
+ if (onLogout) await onLogout();
6468
+ } catch (e) {
6469
+ import_react_hot_toast18.default.error("Failed to log out cleanly.");
6470
+ } finally {
6471
+ setIsLoggingOut(false);
6472
+ setShowLogoutConfirm(false);
6473
+ }
6474
+ };
6475
+ return /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react97.default.createElement(
6476
+ ConfirmationDialog,
6477
+ {
6478
+ isOpen: showLogoutConfirm,
6479
+ title: "Log Out",
6480
+ message: "Are you sure you want to log out of your workspace?",
6481
+ confirmText: "Log Out",
6482
+ cancelText: "Cancel",
6483
+ isProcessing: isLoggingOut,
6484
+ isDestructive: true,
6485
+ onClose: () => setShowLogoutConfirm(false),
6486
+ onConfirm: confirmLogout
6487
+ }
6488
+ ), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => setShowOrgSwitcher(true) }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Loading03Icon, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ import_react97.default.createElement(
6489
+ "img",
6490
+ {
6491
+ src: finalAvatarSrc,
6492
+ alt: "User Avatar",
6493
+ onLoad: () => setIsAvatarLoaded(true),
6494
+ className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
6495
+ }
6496
+ ))), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ import_react97.default.createElement(
6434
6497
  "button",
6435
6498
  {
6436
6499
  onClick: () => router.push("/app/ai"),
@@ -6483,7 +6546,31 @@ var UniversalHome3 = ({
6483
6546
  {
6484
6547
  ...applicationsProps
6485
6548
  }
6486
- )), showNotifDialog && /* @__PURE__ */ import_react97.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react97.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 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react97.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react97.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ import_react97.default.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Loading03Icon, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ import_react97.default.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ import_react97.default.createElement("div", { className: "" }) : /* @__PURE__ */ import_react97.default.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ import_react97.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react97.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ import_react97.default.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ import_react97.default.createElement(
6549
+ )), showOrgSwitcher && /* @__PURE__ */ import_react97.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ import_react97.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 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react97.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ import_react97.default.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ import_react97.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ import_react97.default.createElement(
6550
+ "button",
6551
+ {
6552
+ key: org.id,
6553
+ onClick: () => {
6554
+ onOrganizationSelect?.(org.id);
6555
+ setShowOrgSwitcher(false);
6556
+ },
6557
+ className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-stone-50 last:border-0 ${activeOrgId === org.id ? "bg-stone-50" : "hover:bg-stone-50/50"}`
6558
+ },
6559
+ /* @__PURE__ */ import_react97.default.createElement(OrgAvatar3, { src: org.avatarUrl }),
6560
+ /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ import_react97.default.createElement("span", { className: `text-sm tracking-tight truncate w-full text-left ${activeOrgId === org.id ? "text-black " : "text-stone-600"}` }, org.name), /* @__PURE__ */ import_react97.default.createElement("span", { className: "text-xs text-stone-500 capitalize truncate w-full text-left mt-0.5" }, org.role?.toLowerCase() || "Member")),
6561
+ activeOrgId === org.id && /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#d97757] shrink-0" })
6562
+ )))), /* @__PURE__ */ import_react97.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react97.default.createElement(
6563
+ "button",
6564
+ {
6565
+ onClick: () => {
6566
+ setShowOrgSwitcher(false);
6567
+ setShowLogoutConfirm(true);
6568
+ },
6569
+ className: "w-full py-2.5 flex items-center justify-center gap-2 rounded-full border border-stone-200 text-stone-600 hover:bg-stone-100 transition-colors outline-none text-xs tracking-wide"
6570
+ },
6571
+ /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Logout01Icon, size: 15 }),
6572
+ "Log Out"
6573
+ )))), showNotifDialog && /* @__PURE__ */ import_react97.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react97.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 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react97.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react97.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ import_react97.default.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ import_react97.default.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Loading03Icon, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ import_react97.default.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ import_react97.default.createElement("div", { className: "" }) : /* @__PURE__ */ import_react97.default.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ import_react97.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react97.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ import_react97.default.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ import_react97.default.createElement(
6487
6574
  "button",
6488
6575
  {
6489
6576
  onClick: () => handleResolve("ACCEPTED"),
@@ -6538,33 +6625,15 @@ var import_core_free_icons39 = require("@hugeicons/core-free-icons");
6538
6625
  function RootSidebar({
6539
6626
  NavItem2s,
6540
6627
  currentPath,
6541
- isMobileOpen,
6542
- closeMobile,
6543
- openMobile,
6544
6628
  onNavClick,
6545
- avatarSrc,
6546
- title = "App",
6547
- subtitle,
6548
- homeUrl = "/app",
6549
- showWorkspaceSwitcher = false,
6550
- workspaces = [],
6551
- activeWorkspaceId,
6552
- onSwitchWorkspace,
6553
6629
  showLogoutAction = false,
6554
6630
  onLogout
6555
6631
  }) {
6556
- const [isCollapsed, setIsCollapsed] = (0, import_react99.useState)(false);
6557
- const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react99.useState)(false);
6558
- const [showSwitcherDialog, setShowSwitcherDialog] = (0, import_react99.useState)(false);
6559
6632
  const [showLogoutDialog, setShowLogoutDialog] = (0, import_react99.useState)(false);
6560
6633
  const [isLoggingOut, setIsLoggingOut] = (0, import_react99.useState)(false);
6561
- (0, import_react99.useEffect)(() => {
6562
- if (isMobileOpen) {
6563
- closeMobile();
6564
- }
6565
- }, [currentPath]);
6634
+ const [isSheetOpen, setIsSheetOpen] = (0, import_react99.useState)(false);
6566
6635
  const hasActiveMatch = NavItem2s.some(
6567
- (item) => item.path === "/applications" || item.path === "/app" ? currentPath === item.path : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
6636
+ (item) => item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
6568
6637
  );
6569
6638
  const handleLogoutInitiation = async () => {
6570
6639
  if (isLoggingOut || !onLogout) return;
@@ -6576,139 +6645,101 @@ function RootSidebar({
6576
6645
  setShowLogoutDialog(false);
6577
6646
  }
6578
6647
  };
6579
- const finalAvatarSrc = avatarSrc || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
6580
- return /* @__PURE__ */ import_react99.default.createElement(import_react99.default.Fragment, null, !isMobileOpen && /* @__PURE__ */ import_react99.default.createElement(
6648
+ return /* @__PURE__ */ import_react99.default.createElement(import_react99.default.Fragment, null, /* @__PURE__ */ import_react99.default.createElement("aside", { className: "hidden md:flex fixed top-0 left-0 h-screen w-20 flex-col z-40 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react99.default.createElement("div", { className: "h-24 shrink-0" }), /* @__PURE__ */ import_react99.default.createElement("nav", { className: "flex-1 flex flex-col gap-3 px-2" }, NavItem2s.map((item, index) => {
6649
+ const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
6650
+ const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
6651
+ return /* @__PURE__ */ import_react99.default.createElement(
6652
+ import_link10.default,
6653
+ {
6654
+ key: item.name,
6655
+ href: item.path,
6656
+ onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
6657
+ className: `flex items-center justify-center w-12 h-12 mx-auto rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-[#ffffff] text-[#d97757]" : "text-stone-500 hover:text-black hover:bg-white/50"}`,
6658
+ title: item.name
6659
+ },
6660
+ /* @__PURE__ */ import_react99.default.createElement(
6661
+ import_react100.HugeiconsIcon,
6662
+ {
6663
+ icon: item.icon,
6664
+ size: 20,
6665
+ className: `shrink-0 transition-colors ${isCurrentRoute ? "text-[#d97757]" : "text-stone-400 group-hover:text-black"}`
6666
+ }
6667
+ )
6668
+ );
6669
+ })), /* @__PURE__ */ import_react99.default.createElement("div", { className: "p-4 shrink-0 flex flex-col items-center gap-2 mb-4" }, showLogoutAction && /* @__PURE__ */ import_react99.default.createElement(
6581
6670
  "button",
6582
6671
  {
6583
- onClick: openMobile,
6584
- className: "md:hidden fixed left-0 top-1/2 -translate-y-1/2 z-50 bg-white border border-stone-200 border-l-0 shadow-[4px_0_24px_rgba(0,0,0,0.06)] rounded-r-xl py-6 px-1.5 flex items-center justify-center outline-none hover:bg-stone-50 transition-colors",
6585
- "aria-label": "Open Menu"
6672
+ onClick: () => setShowLogoutDialog(true),
6673
+ className: "w-12 h-12 rounded-full flex items-center justify-center text-stone-600 hover:bg-white/50 transition-all outline-none",
6674
+ title: "Log Out"
6586
6675
  },
6587
- /* @__PURE__ */ import_react99.default.createElement(
6588
- "span",
6589
- {
6590
- className: "text-[10px] font-medium uppercase tracking-[0.2em] text-stone-500",
6591
- style: { writingMode: "vertical-rl", transform: "rotate(180deg)" }
6592
- },
6593
- "Open Menu"
6594
- )
6676
+ /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.LogoutCircle02Icon, size: 20 })
6677
+ ))), !isSheetOpen && /* @__PURE__ */ import_react99.default.createElement(
6678
+ "button",
6679
+ {
6680
+ onClick: () => setIsSheetOpen(true),
6681
+ className: "md:hidden fixed bottom-6 left-1/2 -translate-x-1/2 z-40 bg-black text-white px-8 py-2 rounded-full shadow-xl flex items-center justify-center gap-2 text-xs tracking-wide outline-none active:scale-95 transition-transform"
6682
+ },
6683
+ /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.MenuCircleIcon, size: 14 }),
6684
+ "Open Menu"
6595
6685
  ), /* @__PURE__ */ import_react99.default.createElement(
6596
6686
  "div",
6597
6687
  {
6598
- className: `fixed inset-0 bg-black/40 shadow-2xl transition-opacity duration-300 md:hidden z-90 ${isMobileOpen ? "opacity-100 pointer-events-auto" : "opacity-0 pointer-events-none"}`,
6599
- onClick: closeMobile
6688
+ className: `md:hidden fixed inset-0 bg-black/40 z-50 transition-opacity duration-300 ${isSheetOpen ? "opacity-100 pointer-events-auto" : "opacity-0 pointer-events-none"}`,
6689
+ onClick: () => setIsSheetOpen(false)
6600
6690
  }
6601
6691
  ), /* @__PURE__ */ import_react99.default.createElement(
6602
- "aside",
6692
+ "div",
6603
6693
  {
6604
- className: `
6605
- fixed md:sticky top-0 left-0 h-dvh bg-[#212121]
6606
- transition-all duration-300 ease-in-out shrink-0 flex flex-col z-100 md:z-10
6607
- ${isMobileOpen ? "translate-x-0" : "translate-x-[-120%] md:translate-x-0"}
6608
- ${isCollapsed ? "md:w-16 w-64" : "w-64"}
6609
- `
6694
+ className: `md:hidden fixed bottom-0 left-0 right-0 bg-white rounded-t-3xl z-50 flex flex-col overflow-hidden transition-transform duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] ${isSheetOpen ? "translate-y-0" : "translate-y-full"}`
6610
6695
  },
6611
- /* @__PURE__ */ import_react99.default.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center" : "justify-between"}` }, /* @__PURE__ */ import_react99.default.createElement(import_link10.default, { href: homeUrl, className: `flex items-center outline-none group min-w-0 ${isCollapsed && !isMobileOpen ? "" : "gap-3 pr-2"}` }, /* @__PURE__ */ import_react99.default.createElement("div", { className: "w-8 h-8 shrink-0 relative rounded-lg overflow-hidden bg-white/10 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.Loading03Icon, size: 14, className: "animate-spin text-white/50 absolute" }), /* @__PURE__ */ import_react99.default.createElement(
6612
- "img",
6613
- {
6614
- src: finalAvatarSrc,
6615
- alt: "User Avatar",
6616
- onLoad: () => setIsAvatarLoaded(true),
6617
- className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
6618
- }
6619
- )), (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react99.default.createElement("div", { className: "flex flex-col justify-center min-w-0" }, /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-[13px] font-serif text-white leading-none truncate max-w-32.5 tracking-wide mb-1 group-hover:opacity-80 transition-opacity" }, title), subtitle && /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-[9px] text-neutral-400 truncate max-w-32.5 tracking-[0.2em] leading-none uppercase" }, subtitle))), (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react99.default.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ import_react99.default.createElement(
6620
- "button",
6621
- {
6622
- onClick: closeMobile,
6623
- className: "text-neutral-400 hover:text-white transition-colors outline-none",
6624
- "aria-label": "Close Menu"
6625
- },
6626
- /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.CancelCircleIcon, size: 24 })
6627
- ))),
6628
- /* @__PURE__ */ import_react99.default.createElement("nav", { className: "flex-1 py-2 flex flex-col gap-1.5 px-3 overflow-y-auto custom-scrollbar" }, NavItem2s.map((item, index) => {
6629
- const isExactOrSubMatch = item.path === "/applications" || item.path === "/app" ? currentPath === item.path : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
6696
+ /* @__PURE__ */ import_react99.default.createElement("div", { className: "w-full flex justify-center py-4 shrink-0", onClick: () => setIsSheetOpen(false) }, /* @__PURE__ */ import_react99.default.createElement("div", { className: "w-12 h-1.5 bg-stone-200 rounded-full" })),
6697
+ /* @__PURE__ */ import_react99.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar px-4 pb-8 flex flex-col gap-2 max-h-[70vh]" }, NavItem2s.map((item, index) => {
6698
+ const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
6630
6699
  const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
6631
6700
  return /* @__PURE__ */ import_react99.default.createElement(
6632
6701
  import_link10.default,
6633
6702
  {
6634
6703
  key: item.name,
6635
6704
  href: item.path,
6636
- onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
6637
- className: `flex items-center gap-3 px-3 py-2 rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-white/10 text-white" : "text-neutral-400 hover:text-white hover:bg-white/5"}`,
6638
- title: isCollapsed && !isMobileOpen ? item.name : void 0
6705
+ onClick: (e) => {
6706
+ if (onNavClick) onNavClick(e, item.path);
6707
+ setIsSheetOpen(false);
6708
+ },
6709
+ className: `flex items-center gap-4 px-5 py-3 rounded-full transition-colors outline-none ${isCurrentRoute ? "bg-[#fff5f2] text-[#d97757]" : "text-stone-600 hover:bg-stone-50"}`
6639
6710
  },
6640
6711
  /* @__PURE__ */ import_react99.default.createElement(
6641
6712
  import_react100.HugeiconsIcon,
6642
6713
  {
6643
6714
  icon: item.icon,
6644
6715
  size: 18,
6645
- className: `shrink-0 transition-colors ${isCurrentRoute ? "text-white" : "text-neutral-400 group-hover:text-white"}`
6716
+ className: isCurrentRoute ? "text-[#d97757]" : "text-stone-400"
6646
6717
  }
6647
6718
  ),
6648
- (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-xs tracking-wide truncate" }, item.name)
6719
+ /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-xs tracking-wide" }, item.name)
6649
6720
  );
6650
- })),
6651
- /* @__PURE__ */ import_react99.default.createElement("div", { className: "p-4 shrink-0 flex flex-col gap-2" }, (showWorkspaceSwitcher || showLogoutAction) && /* @__PURE__ */ import_react99.default.createElement("div", { className: `flex gap-2 px-1 pb-2 ${isCollapsed && !isMobileOpen ? "flex-col items-center" : "flex-row items-center"}` }, showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ import_react99.default.createElement(
6721
+ }), showLogoutAction && /* @__PURE__ */ import_react99.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react99.default.createElement(
6652
6722
  "button",
6653
6723
  {
6654
- onClick: () => setShowSwitcherDialog(true),
6655
- className: "w-8 h-8 shrink-0 rounded-full bg-white/5 flex items-center justify-center text-neutral-400 hover:text-white hover:bg-white/10 transition-all outline-none",
6656
- title: "Switch Workspace"
6657
- },
6658
- /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.UserIcon, size: 16 })
6659
- ), showLogoutAction && /* @__PURE__ */ import_react99.default.createElement(
6660
- "button",
6661
- {
6662
- onClick: () => setShowLogoutDialog(true),
6663
- className: "w-8 h-8 shrink-0 rounded-full bg-white/5 flex items-center justify-center text-neutral-400 hover:text-white hover:bg-white/10 transition-all outline-none",
6664
- title: "Secure Logout"
6665
- },
6666
- /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.LogoutCircle02Icon, size: 16 })
6667
- )), /* @__PURE__ */ import_react99.default.createElement("div", { className: "hidden md:block border-t border-white/5 pt-2" }, /* @__PURE__ */ import_react99.default.createElement(
6668
- "button",
6669
- {
6670
- onClick: () => setIsCollapsed(!isCollapsed),
6671
- className: "flex items-center justify-center md:justify-start gap-3 w-full p-2.5 rounded-full text-neutral-400 hover:text-white hover:bg-white/5 transition-colors outline-none"
6724
+ onClick: () => {
6725
+ setIsSheetOpen(false);
6726
+ setShowLogoutDialog(true);
6727
+ },
6728
+ className: "w-full flex items-center gap-4 px-5 py-3 rounded-full transition-colors outline-none text-red-600 hover:bg-red-50"
6672
6729
  },
6673
- /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.SidebarLeft01Icon, size: 18, className: "shrink-0 text-neutral-400" }),
6674
- !isCollapsed && /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-xs" }, "Collapse")
6730
+ /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.LogoutCircle02Icon, size: 18, className: "text-red-500" }),
6731
+ /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-xs tracking-wide" }, "Log Out")
6675
6732
  )))
6676
- ), showSwitcherDialog && showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ import_react99.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react99.default.createElement(
6677
- "div",
6678
- {
6679
- className: "absolute inset-0 bg-black/30",
6680
- onClick: () => setShowSwitcherDialog(false)
6681
- }
6682
- ), /* @__PURE__ */ import_react99.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_react99.default.createElement("div", { className: "p-5 text-center w-full" }, /* @__PURE__ */ import_react99.default.createElement("h3", { className: " font-serif text-[17px] text-black tracking-tight mb-1" }, "Switch Workspace"), /* @__PURE__ */ import_react99.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug" }, "Select an organization to switch your current context.")), /* @__PURE__ */ import_react99.default.createElement("div", { className: "max-h-75 overflow-y-auto w-full custom-scrollbar" }, workspaces.map((org) => /* @__PURE__ */ import_react99.default.createElement(
6683
- "button",
6684
- {
6685
- key: org.id,
6686
- onClick: () => {
6687
- if (onSwitchWorkspace) onSwitchWorkspace(org.id);
6688
- setShowSwitcherDialog(false);
6689
- },
6690
- 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"
6691
- },
6692
- /* @__PURE__ */ import_react99.default.createElement("div", { className: "flex flex-col truncate pr-4" }, /* @__PURE__ */ import_react99.default.createElement("span", { className: `text-[13px] truncate ${activeWorkspaceId === org.id ? "text-black" : "text-neutral-600 group-hover:text-black"}` }, org.name), /* @__PURE__ */ import_react99.default.createElement("span", { className: "text-[9px] text-neutral-400 tracking-[0.2em] mt-1 uppercase" }, "Role: ", org.role)),
6693
- activeWorkspaceId === org.id && /* @__PURE__ */ import_react99.default.createElement(import_react100.HugeiconsIcon, { icon: import_core_free_icons39.CheckmarkCircle01Icon, size: 16, className: "text-black shrink-0" })
6694
- ))), /* @__PURE__ */ import_react99.default.createElement("div", { className: "w-full flex mt-auto" }, /* @__PURE__ */ import_react99.default.createElement(
6695
- "button",
6696
- {
6697
- onClick: () => setShowSwitcherDialog(false),
6698
- className: "w-full py-3.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none"
6699
- },
6700
- "Cancel"
6701
- )))), /* @__PURE__ */ import_react99.default.createElement(
6733
+ ), showLogoutAction && /* @__PURE__ */ import_react99.default.createElement(
6702
6734
  ConfirmationDialog,
6703
6735
  {
6704
- isOpen: showLogoutDialog && showLogoutAction,
6736
+ isOpen: showLogoutDialog,
6705
6737
  title: "Secure Logout",
6706
6738
  message: "Are you sure you want to log out? You will need to authenticate to return.",
6707
6739
  confirmText: "Log Out",
6708
- cancelText: "Cancel",
6709
- isProcessing: isLoggingOut,
6710
6740
  isDestructive: true,
6711
- onClose: () => !isLoggingOut && setShowLogoutDialog(false),
6741
+ isProcessing: isLoggingOut,
6742
+ onClose: () => setShowLogoutDialog(false),
6712
6743
  onConfirm: handleLogoutInitiation
6713
6744
  }
6714
6745
  ));
@@ -6740,7 +6771,7 @@ var MemberAvatar5 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6740
6771
  };
6741
6772
  return /* @__PURE__ */ import_react101.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react101.default.createElement("img", { src: finalSrc, alt: "Member", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })), /* @__PURE__ */ import_react101.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
6742
6773
  };
6743
- var OrgAvatar3 = ({ src, sizeClass = "w-10 h-10" }) => {
6774
+ var OrgAvatar4 = ({ src, sizeClass = "w-10 h-10" }) => {
6744
6775
  const [loaded, setLoaded] = (0, import_react101.useState)(false);
6745
6776
  const [error, setError] = (0, import_react101.useState)(false);
6746
6777
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
@@ -7073,7 +7104,7 @@ var UniversalSettings2 = ({
7073
7104
  ))))))) : /* @__PURE__ */ import_react101.default.createElement(import_react101.default.Fragment, null, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react101.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react101.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react101.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react101.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react101.default.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react101.default.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ import_react101.default.createElement("button", { type: "button", onClick: () => {
7074
7105
  setIsInviteMode(false);
7075
7106
  setInviteEmail("");
7076
- }, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react101.default.createElement(PageSpinner10, null) : /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react101.default.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react101.default.createElement(MemberAvatar5, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react101.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowRight01Icon, size: 14 })))))))), /* @__PURE__ */ import_react101.default.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ import_react101.default.createElement(OrgAvatar3, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.Loading03Icon, size: 12, className: "animate-spin" }) : /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CloudUploadIcon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("input", { type: "file", ref: orgFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "ORGANIZATION") })), /* @__PURE__ */ import_react101.default.createElement("div", null, /* @__PURE__ */ import_react101.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles."))), !canManage && /* @__PURE__ */ import_react101.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react101.default.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ import_react101.default.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react101.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react101.default.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react101.default.createElement(InputSpinner4, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.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 && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.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_react101.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ import_react101.default.createElement("button", { type: "button", onClick: () => {
7107
+ }, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react101.default.createElement(PageSpinner10, null) : /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react101.default.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react101.default.createElement(MemberAvatar5, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react101.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowRight01Icon, size: 14 })))))))), /* @__PURE__ */ import_react101.default.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ import_react101.default.createElement(OrgAvatar4, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.Loading03Icon, size: 12, className: "animate-spin" }) : /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CloudUploadIcon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("input", { type: "file", ref: orgFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "ORGANIZATION") })), /* @__PURE__ */ import_react101.default.createElement("div", null, /* @__PURE__ */ import_react101.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles."))), !canManage && /* @__PURE__ */ import_react101.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react101.default.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ import_react101.default.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react101.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react101.default.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react101.default.createElement(InputSpinner4, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.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 && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.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_react101.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ import_react101.default.createElement("button", { type: "button", onClick: () => {
7077
7108
  setOrgName(initialOrgName || "");
7078
7109
  setOrgSlug(initialOrgSlug || "");
7079
7110
  setOrgAvatarUrl(initialOrgAvatarUrl || "");
@@ -7093,8 +7124,11 @@ var UniversalSettings2 = ({
7093
7124
 
7094
7125
  // src/components/UniversalDeveloperSettings.tsx
7095
7126
  var import_react103 = __toESM(require("react"));
7096
- var import_react_hot_toast20 = require("react-hot-toast");
7127
+ var import_react_hot_toast20 = __toESM(require("react-hot-toast"));
7128
+ var import_react104 = require("@hugeicons/react");
7129
+ var import_core_free_icons41 = require("@hugeicons/core-free-icons");
7097
7130
  var UniversalDeveloperSettings = ({
7131
+ onBackHref = "/app",
7098
7132
  initialPublicKey,
7099
7133
  initialWebhookUrl,
7100
7134
  isReadOnly = false,
@@ -7135,13 +7169,13 @@ AUDDITUR_SECRET_KEY="${secKey}"
7135
7169
  if (res.success && res.data) {
7136
7170
  setPublicKey(res.data.publicKey);
7137
7171
  downloadEnvironmentFile(res.data.publicKey, res.data.secretKey);
7138
- import_react_hot_toast20.toast.success("Keys generated. Check your downloads folder.");
7172
+ import_react_hot_toast20.default.success("Keys generated. Check your downloads folder.");
7139
7173
  setIsRollModalOpen(false);
7140
7174
  } else {
7141
- import_react_hot_toast20.toast.error(res.error || "Uh oh! Something went wrong.");
7175
+ import_react_hot_toast20.default.error(res.error || "Uh oh! Something went wrong.");
7142
7176
  }
7143
7177
  } catch (error) {
7144
- import_react_hot_toast20.toast.error("Uh oh! Something went wrong.");
7178
+ import_react_hot_toast20.default.error("Uh oh! Something went wrong.");
7145
7179
  } finally {
7146
7180
  setIsGenerating(false);
7147
7181
  }
@@ -7154,40 +7188,42 @@ AUDDITUR_SECRET_KEY="${secKey}"
7154
7188
  const res = await onSaveWebhook(webhookUrl);
7155
7189
  if (res.success && res.data) {
7156
7190
  setWebhookUrl(res.data.webhookUrl || "");
7157
- import_react_hot_toast20.toast.success("Webhook URL updated.");
7191
+ import_react_hot_toast20.default.success("Webhook URL updated.");
7158
7192
  } else {
7159
- import_react_hot_toast20.toast.error(res.error || "Uh oh! Something went wrong.");
7193
+ import_react_hot_toast20.default.error(res.error || "Uh oh! Something went wrong.");
7160
7194
  }
7161
7195
  } catch (error) {
7162
- import_react_hot_toast20.toast.error("Uh oh! Something went wrong.");
7196
+ import_react_hot_toast20.default.error("Uh oh! Something went wrong.");
7163
7197
  } finally {
7164
7198
  setIsSavingWebhook(false);
7165
7199
  }
7166
7200
  };
7167
7201
  const hasWebhookChanges = webhookUrl !== initialWebhookUrl;
7168
7202
  const isWebhookSaveDisabled = isSavingWebhook || isReadOnly || !hasWebhookChanges;
7169
- return /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ import_react103.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col min-w-0 gap-1" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react103.default.createElement("h1", { className: "font-serif text-xl text-black truncate tracking-tight" }, "Developer Settings")), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react103.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 sm:mt-1" }, "Read Only Access")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "w-full max-w-2xl flex flex-col gap-12" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react103.default.createElement(
7203
+ return /* @__PURE__ */ import_react103.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react103.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react103.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react103.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react103.default.createElement(import_react104.HugeiconsIcon, { icon: import_core_free_icons41.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ import_react103.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Developer Settings"), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your API credentials and webhook integrations.")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, isReadOnly && /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-start gap-3 p-4 bg-stone-50 rounded-xl" }, /* @__PURE__ */ import_react103.default.createElement(import_react104.HugeiconsIcon, { icon: import_core_free_icons41.CircleLock02Icon, size: 20, className: "text-stone-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react103.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Access Restricted"), /* @__PURE__ */ import_react103.default.createElement("span", { className: "text-xs text-stone-500 mt-1 leading-relaxed" }, "You lack clearance to modify developer settings. Only Owners, Admins, or Managers can roll keys or update webhooks."))), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react103.default.createElement(
7170
7204
  TextInput,
7171
7205
  {
7172
7206
  label: "Public Key",
7173
7207
  value: publicKey || "No key generated yet",
7174
7208
  onChange: () => {
7175
7209
  },
7176
- disabled: true
7210
+ disabled: true,
7211
+ placeholder: "pk_live_..."
7177
7212
  }
7178
- ), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "Your public key is used to identify your application. Your secret key will only be shown once upon generation.")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react103.default.createElement(
7213
+ ), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-stone-500 mt-2 leading-relaxed" }, "Your public key is used to identify your application. Your secret key will only be shown once upon generation.")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex" }, /* @__PURE__ */ import_react103.default.createElement(
7179
7214
  ThreeDActionButton,
7180
7215
  {
7216
+ type: "button",
7181
7217
  onClick: () => {
7182
7218
  if (publicKey) setIsRollModalOpen(true);
7183
7219
  else handleGenerateKeys();
7184
7220
  },
7185
7221
  disabled: isGenerating || isReadOnly,
7186
7222
  isLoading: isGenerating,
7187
- className: "w-fit"
7223
+ className: "w-full sm:w-auto min-w-40"
7188
7224
  },
7189
7225
  publicKey ? "Roll API Keys" : "Generate Keys"
7190
- ))), /* @__PURE__ */ import_react103.default.createElement("form", { className: "flex flex-col gap-6 border-t border-neutral-100 pt-8", onSubmit: handleSaveWebhook, autoComplete: "off" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react103.default.createElement(
7226
+ ))), /* @__PURE__ */ import_react103.default.createElement("form", { className: "flex flex-col gap-6 border-t border-stone-100 pt-8", onSubmit: handleSaveWebhook, autoComplete: "off" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react103.default.createElement(
7191
7227
  TextInput,
7192
7228
  {
7193
7229
  label: "Webhook URL",
@@ -7197,29 +7233,29 @@ AUDDITUR_SECRET_KEY="${secKey}"
7197
7233
  placeholder: "https://your-domain.com/webhook",
7198
7234
  type: "url"
7199
7235
  }
7200
- ), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "We will send secure POST requests to this endpoint when significant events occur. Must use HTTPS.")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react103.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Webhook Status"), /* @__PURE__ */ import_react103.default.createElement("span", { className: `text-xs block truncate ${webhookUrl ? "text-emerald-600" : "text-neutral-400"}` }, webhookUrl ? "Active" : "Inactive"))), /* @__PURE__ */ import_react103.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" }, hasWebhookChanges && !isSavingWebhook && !isReadOnly && /* @__PURE__ */ import_react103.default.createElement(
7201
- "button",
7202
- {
7203
- type: "button",
7204
- onClick: () => setWebhookUrl(initialWebhookUrl),
7205
- 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"
7206
- },
7207
- "Cancel"
7208
- ), /* @__PURE__ */ import_react103.default.createElement(
7236
+ ), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mt-2 gap-2" }, /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-stone-500 leading-relaxed" }, "We will send secure POST requests to this endpoint when significant events occur. Must use HTTPS."), /* @__PURE__ */ import_react103.default.createElement("span", { className: `text-[10px] tracking-widest uppercase font-medium ${webhookUrl ? "text-emerald-600" : "text-stone-400"}` }, webhookUrl ? "Active" : "Inactive"))), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react103.default.createElement(
7209
7237
  ThreeDActionButton,
7210
7238
  {
7211
7239
  type: "submit",
7212
7240
  disabled: isWebhookSaveDisabled,
7213
7241
  isLoading: isSavingWebhook,
7214
- className: "min-w-32 w-full sm:w-auto"
7242
+ className: "w-full sm:w-auto min-w-40"
7215
7243
  },
7216
7244
  "Save Webhook"
7245
+ ), hasWebhookChanges && !isSavingWebhook && !isReadOnly && /* @__PURE__ */ import_react103.default.createElement(
7246
+ "button",
7247
+ {
7248
+ type: "button",
7249
+ onClick: () => setWebhookUrl(initialWebhookUrl),
7250
+ className: "px-4 py-2 text-stone-500 hover:text-black transition-colors outline-none text-xs font-medium"
7251
+ },
7252
+ "Cancel"
7217
7253
  ))))), /* @__PURE__ */ import_react103.default.createElement(
7218
7254
  ConfirmationDialog,
7219
7255
  {
7220
7256
  isOpen: isRollModalOpen && !isReadOnly,
7221
7257
  title: "Roll API Keys",
7222
- message: "Are you sure you want to roll your keys? This will permanently invalidate your current secret key and active MCP tokens.",
7258
+ message: "Are you sure you want to roll your keys? This will permanently invalidate your current secret key and active integrations.",
7223
7259
  confirmText: "Roll Keys",
7224
7260
  cancelText: "Cancel",
7225
7261
  isProcessing: isGenerating,
@@ -7231,9 +7267,9 @@ AUDDITUR_SECRET_KEY="${secKey}"
7231
7267
  };
7232
7268
 
7233
7269
  // src/components/UniversalApplicationPage2.tsx
7234
- var import_react104 = __toESM(require("react"));
7235
- var import_react105 = require("@hugeicons/react");
7236
- var import_core_free_icons41 = require("@hugeicons/core-free-icons");
7270
+ var import_react105 = __toESM(require("react"));
7271
+ var import_react106 = require("@hugeicons/react");
7272
+ var import_core_free_icons42 = require("@hugeicons/core-free-icons");
7237
7273
  var UniversalApplicationPage2 = ({
7238
7274
  userRole = "MEMBER",
7239
7275
  applications,
@@ -7249,9 +7285,9 @@ var UniversalApplicationPage2 = ({
7249
7285
  onCreateApplication
7250
7286
  }) => {
7251
7287
  const canManage = userRole === "ADMIN" || userRole === "MANAGER" || userRole === "OWNER";
7252
- const [showStatusModal, setShowStatusModal] = (0, import_react104.useState)(false);
7253
- const [localSearchQuery, setLocalSearchQuery] = (0, import_react104.useState)(searchQuery);
7254
- const typingTimer = (0, import_react104.useRef)(null);
7288
+ const [showStatusModal, setShowStatusModal] = (0, import_react105.useState)(false);
7289
+ const [localSearchQuery, setLocalSearchQuery] = (0, import_react105.useState)(searchQuery);
7290
+ const typingTimer = (0, import_react105.useRef)(null);
7255
7291
  const handleSearchInput = (e) => {
7256
7292
  const val = e.target.value;
7257
7293
  setLocalSearchQuery(val);
@@ -7266,10 +7302,9 @@ var UniversalApplicationPage2 = ({
7266
7302
  "COMPLETED",
7267
7303
  "PENDING",
7268
7304
  "REJECTED",
7269
- "QUERIED",
7270
- "AWAITING_PAYMENT"
7305
+ "QUERIED"
7271
7306
  ];
7272
- return /* @__PURE__ */ import_react104.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react104.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Applications Directory")), /* @__PURE__ */ import_react104.default.createElement("p", { className: "text-xs text-stone-500" }, "Search, filter, and track all your organizational applications.")), /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex flex-row flex-nowrap mb-2 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react104.default.createElement(import_react105.HugeiconsIcon, { icon: import_core_free_icons41.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react104.default.createElement(
7307
+ return /* @__PURE__ */ import_react105.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react105.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Applications Directory")), /* @__PURE__ */ import_react105.default.createElement("p", { className: "text-xs text-stone-500" }, "Search, filter, and track all your organizational applications.")), /* @__PURE__ */ import_react105.default.createElement("div", { className: "flex flex-row flex-nowrap mb-2 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react105.default.createElement(import_react106.HugeiconsIcon, { icon: import_core_free_icons42.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react105.default.createElement(
7273
7308
  "input",
7274
7309
  {
7275
7310
  type: "text",
@@ -7278,15 +7313,15 @@ var UniversalApplicationPage2 = ({
7278
7313
  onChange: handleSearchInput,
7279
7314
  className: "w-full pl-10 pr-4 py-2.5 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent shadow-[0_2px_10px_rgba(0,0,0,0.02)]"
7280
7315
  }
7281
- )), /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react104.default.createElement(
7316
+ )), /* @__PURE__ */ import_react105.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react105.default.createElement(
7282
7317
  "button",
7283
7318
  {
7284
7319
  onClick: () => setShowStatusModal(true),
7285
7320
  className: "flex items-center justify-center bg-white shadow-[0_2px_10px_rgba(0,0,0,0.02)] w-10 h-10 rounded-full text-stone-500 hover:text-black transition-colors outline-none relative"
7286
7321
  },
7287
- /* @__PURE__ */ import_react104.default.createElement(import_react105.HugeiconsIcon, { icon: import_core_free_icons41.SearchList02Icon, size: 18 }),
7288
- activeStatusFilter !== "ALL" && /* @__PURE__ */ import_react104.default.createElement("span", { className: "absolute top-2 right-2 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
7289
- ))), /* @__PURE__ */ import_react104.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react104.default.createElement(
7322
+ /* @__PURE__ */ import_react105.default.createElement(import_react106.HugeiconsIcon, { icon: import_core_free_icons42.SearchList02Icon, size: 18 }),
7323
+ activeStatusFilter !== "ALL" && /* @__PURE__ */ import_react105.default.createElement("span", { className: "absolute top-2 right-2 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
7324
+ ))), /* @__PURE__ */ import_react105.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react105.default.createElement(
7290
7325
  UniversalApplicationsPage,
7291
7326
  {
7292
7327
  headerTitle: "Recent Filings",
@@ -7299,7 +7334,7 @@ var UniversalApplicationPage2 = ({
7299
7334
  onApplicationClick,
7300
7335
  onCreateApplication: canManage ? onCreateApplication : void 0
7301
7336
  }
7302
- )), /* @__PURE__ */ import_react104.default.createElement(
7337
+ )), /* @__PURE__ */ import_react105.default.createElement(
7303
7338
  ReusableOptions,
7304
7339
  {
7305
7340
  isOpen: showStatusModal,
@@ -7316,9 +7351,9 @@ var UniversalApplicationPage2 = ({
7316
7351
  };
7317
7352
 
7318
7353
  // src/components/UniversalApplicationDetails.tsx
7319
- var import_react106 = __toESM(require("react"));
7320
- var import_react107 = require("@hugeicons/react");
7321
- var import_core_free_icons42 = require("@hugeicons/core-free-icons");
7354
+ var import_react107 = __toESM(require("react"));
7355
+ var import_react108 = require("@hugeicons/react");
7356
+ var import_core_free_icons43 = require("@hugeicons/core-free-icons");
7322
7357
  var formatType2 = (type) => type.split("_").map((w) => w[0] + w.slice(1).toLowerCase()).join(" ");
7323
7358
  var UniversalApplicationDetails = ({
7324
7359
  onBackHref,
@@ -7326,8 +7361,8 @@ var UniversalApplicationDetails = ({
7326
7361
  canDelete,
7327
7362
  onDeleteSubmit
7328
7363
  }) => {
7329
- const [isDeleting, setIsDeleting] = (0, import_react106.useState)(false);
7330
- const [confirmDialog, setConfirmDialog] = (0, import_react106.useState)(false);
7364
+ const [isDeleting, setIsDeleting] = (0, import_react107.useState)(false);
7365
+ const [confirmDialog, setConfirmDialog] = (0, import_react107.useState)(false);
7331
7366
  const isLockedStatus = ["COMPLETED", "PENDING", "REJECTED", "QUERIED"].includes(application.status);
7332
7367
  const deletePermitted = canDelete && !isLockedStatus;
7333
7368
  const handleDelete = async () => {
@@ -7339,32 +7374,32 @@ var UniversalApplicationDetails = ({
7339
7374
  }
7340
7375
  setIsDeleting(false);
7341
7376
  };
7342
- return /* @__PURE__ */ import_react106.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react106.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react106.default.createElement(
7377
+ return /* @__PURE__ */ import_react107.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react107.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react107.default.createElement(
7343
7378
  ConfirmationDialog,
7344
7379
  {
7345
7380
  isOpen: confirmDialog,
7346
7381
  title: "Delete Application",
7347
7382
  message: "Are you sure you want to permanently delete this application and its assets? This action cannot be undone.",
7348
- confirmText: "Delete Application",
7383
+ confirmText: "Delete",
7349
7384
  cancelText: "Cancel",
7350
7385
  isProcessing: isDeleting,
7351
7386
  isDestructive: true,
7352
7387
  onClose: () => setConfirmDialog(false),
7353
7388
  onConfirm: handleDelete
7354
7389
  }
7355
- ), /* @__PURE__ */ import_react106.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react106.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react106.default.createElement(import_react107.HugeiconsIcon, { icon: import_core_free_icons42.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react106.default.createElement("div", { className: "mb-8 px-1 flex flex-col sm:flex-row sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react106.default.createElement("div", null, /* @__PURE__ */ import_react106.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Application Details"), /* @__PURE__ */ import_react106.default.createElement("p", { className: "text-xs text-stone-500" }, "Review your filing entity and access its workspace.")), /* @__PURE__ */ import_react106.default.createElement("div", { className: "px-4 py-1.5 bg-stone-100 text-stone-600 rounded-full text-xs self-start sm:self-auto uppercase tracking-widest " }, application.status)), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-1 w-full" }, /* @__PURE__ */ import_react106.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react106.default.createElement("span", { className: "text-sm text-black py-2 " }, application.name)), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-1 w-full border-t border-stone-100 pt-6" }, /* @__PURE__ */ import_react106.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Filing Type"), /* @__PURE__ */ import_react106.default.createElement("span", { className: "text-sm text-black py-2" }, formatType2(application.type))), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 border-t border-stone-100" }, /* @__PURE__ */ import_react106.default.createElement("a", { href: `/app/applications/app/${application.id}`, className: "flex-1 w-full py-2.5 bg-[#d97757] text-white rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/90" }, "Open Application"), /* @__PURE__ */ import_react106.default.createElement("a", { href: `/app/applications/assets/${application.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Application Assets"), deletePermitted && /* @__PURE__ */ import_react106.default.createElement("button", { onClick: () => setConfirmDialog(true), className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Delete Application"))));
7390
+ ), /* @__PURE__ */ import_react107.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react107.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react107.default.createElement(import_react108.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react107.default.createElement("div", { className: "mb-8 px-1 flex flex-col sm:flex-row sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react107.default.createElement("div", null, /* @__PURE__ */ import_react107.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Application Details"), /* @__PURE__ */ import_react107.default.createElement("p", { className: "text-xs text-stone-500" }, "Review your filing entity and access its workspace.")), /* @__PURE__ */ import_react107.default.createElement("div", { className: "px-4 py-1.5 bg-stone-200 text-stone-600 rounded-full text-xs self-start sm:self-auto uppercase tracking-widest " }, application.status)), /* @__PURE__ */ import_react107.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react107.default.createElement("div", { className: "flex flex-col gap-1 w-full" }, /* @__PURE__ */ import_react107.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react107.default.createElement("span", { className: "text-sm text-black py-2 " }, application.name)), /* @__PURE__ */ import_react107.default.createElement("div", { className: "flex flex-col gap-1 w-full border-t border-stone-100 pt-6" }, /* @__PURE__ */ import_react107.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Filing Type"), /* @__PURE__ */ import_react107.default.createElement("span", { className: "text-sm text-black py-2" }, formatType2(application.type))), /* @__PURE__ */ import_react107.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 border-t border-stone-100" }, /* @__PURE__ */ import_react107.default.createElement("a", { href: `/app/applications/app/${application.id}`, className: "flex-1 w-full py-2.5 bg-[#d97757] text-white rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/90" }, "Open Application"), /* @__PURE__ */ import_react107.default.createElement("a", { href: `/app/applications/assets/${application.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Application Assets"), deletePermitted && /* @__PURE__ */ import_react107.default.createElement("button", { onClick: () => setConfirmDialog(true), className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Delete Application"))));
7356
7391
  };
7357
7392
 
7358
7393
  // src/components/UniversalCreateApplication.tsx
7359
- var import_react108 = __toESM(require("react"));
7394
+ var import_react109 = __toESM(require("react"));
7360
7395
  var import_react_hot_toast21 = __toESM(require("react-hot-toast"));
7361
- var import_react109 = require("@hugeicons/react");
7362
- var import_core_free_icons43 = require("@hugeicons/core-free-icons");
7396
+ var import_react110 = require("@hugeicons/react");
7397
+ var import_core_free_icons44 = require("@hugeicons/core-free-icons");
7363
7398
  var MemberAvatar6 = ({ src, sizeClass = "w-10 h-10" }) => {
7364
- const [loaded, setLoaded] = (0, import_react108.useState)(false);
7365
- const [error, setError] = (0, import_react108.useState)(false);
7399
+ const [loaded, setLoaded] = (0, import_react109.useState)(false);
7400
+ const [error, setError] = (0, import_react109.useState)(false);
7366
7401
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
7367
- return /* @__PURE__ */ import_react108.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react108.default.createElement("img", { src: error || !src ? defaultAvatar : src, alt: "Avatar", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })));
7402
+ return /* @__PURE__ */ import_react109.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react109.default.createElement("img", { src: error || !src ? defaultAvatar : src, alt: "Avatar", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })));
7368
7403
  };
7369
7404
  var UniversalCreateApplication = ({
7370
7405
  onBackHref,
@@ -7387,32 +7422,32 @@ var UniversalCreateApplication = ({
7387
7422
  onCreateSubmit
7388
7423
  }) => {
7389
7424
  const canManage = userRole === "ADMIN" || userRole === "MANAGER" || userRole === "OWNER";
7390
- const [creationMode, setCreationMode] = (0, import_react108.useState)("EXISTING");
7425
+ const [creationMode, setCreationMode] = (0, import_react109.useState)("EXISTING");
7391
7426
  const defaultTypeKey = applicationTypesMeta.length > 0 ? applicationTypesMeta[0].key : "";
7392
- const [selectedTypeKey, setSelectedTypeKey] = (0, import_react108.useState)(defaultTypeKey);
7393
- (0, import_react108.useEffect)(() => {
7427
+ const [selectedTypeKey, setSelectedTypeKey] = (0, import_react109.useState)(defaultTypeKey);
7428
+ (0, import_react109.useEffect)(() => {
7394
7429
  if (!selectedTypeKey && applicationTypesMeta.length > 0) {
7395
7430
  setSelectedTypeKey(applicationTypesMeta[0].key);
7396
7431
  }
7397
7432
  }, [applicationTypesMeta, selectedTypeKey]);
7398
- const [selectedCompanyId, setSelectedCompanyId] = (0, import_react108.useState)(null);
7399
- const [newCompanyName, setNewCompanyName] = (0, import_react108.useState)("");
7400
- const [isPrivate, setIsPrivate] = (0, import_react108.useState)(false);
7401
- const [selectedParticipants, setSelectedParticipants] = (0, import_react108.useState)(/* @__PURE__ */ new Set());
7402
- const [isSubmitting, setIsSubmitting] = (0, import_react108.useState)(false);
7403
- const [showTypeModal, setShowTypeModal] = (0, import_react108.useState)(false);
7404
- const [showMembersModal, setShowMembersModal] = (0, import_react108.useState)(false);
7405
- const [showCompaniesModal, setShowCompaniesModal] = (0, import_react108.useState)(false);
7406
- const [localMemSearch, setLocalMemSearch] = (0, import_react108.useState)(membersSearchQuery);
7407
- const memTimer = (0, import_react108.useRef)(null);
7433
+ const [selectedCompanyId, setSelectedCompanyId] = (0, import_react109.useState)(null);
7434
+ const [newCompanyName, setNewCompanyName] = (0, import_react109.useState)("");
7435
+ const [isPrivate, setIsPrivate] = (0, import_react109.useState)(false);
7436
+ const [selectedParticipants, setSelectedParticipants] = (0, import_react109.useState)(/* @__PURE__ */ new Set());
7437
+ const [isSubmitting, setIsSubmitting] = (0, import_react109.useState)(false);
7438
+ const [showTypeModal, setShowTypeModal] = (0, import_react109.useState)(false);
7439
+ const [showMembersModal, setShowMembersModal] = (0, import_react109.useState)(false);
7440
+ const [showCompaniesModal, setShowCompaniesModal] = (0, import_react109.useState)(false);
7441
+ const [localMemSearch, setLocalMemSearch] = (0, import_react109.useState)(membersSearchQuery);
7442
+ const memTimer = (0, import_react109.useRef)(null);
7408
7443
  const handleMemSearch = (e) => {
7409
7444
  const val = e.target.value;
7410
7445
  setLocalMemSearch(val);
7411
7446
  if (memTimer.current) clearTimeout(memTimer.current);
7412
7447
  memTimer.current = setTimeout(() => onMembersSearchChange(val), 500);
7413
7448
  };
7414
- const [localCompSearch, setLocalCompSearch] = (0, import_react108.useState)(companiesSearchQuery);
7415
- const compTimer = (0, import_react108.useRef)(null);
7449
+ const [localCompSearch, setLocalCompSearch] = (0, import_react109.useState)(companiesSearchQuery);
7450
+ const compTimer = (0, import_react109.useRef)(null);
7416
7451
  const handleCompSearch = (e) => {
7417
7452
  const val = e.target.value;
7418
7453
  setLocalCompSearch(val);
@@ -7455,9 +7490,9 @@ var UniversalCreateApplication = ({
7455
7490
  { id: "EXISTING", label: "Select Company" },
7456
7491
  { id: "NEW", label: "New Company" }
7457
7492
  ];
7458
- return /* @__PURE__ */ import_react108.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react108.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react108.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react108.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ import_react108.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Application"), /* @__PURE__ */ import_react108.default.createElement("p", { className: "text-xs text-stone-500" }, "Initiate a new registration or filing for a company.")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center mb-4 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, modeTabs.map((tab) => {
7493
+ return /* @__PURE__ */ import_react109.default.createElement("div", { className: "w-full max-w-4xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react109.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react109.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react109.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ import_react109.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Application"), /* @__PURE__ */ import_react109.default.createElement("p", { className: "text-xs text-stone-500" }, "Initiate a new registration or filing for a company.")), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center mb-4 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, modeTabs.map((tab) => {
7459
7494
  const isActive = creationMode === tab.id;
7460
- return /* @__PURE__ */ import_react108.default.createElement(
7495
+ return /* @__PURE__ */ import_react109.default.createElement(
7461
7496
  "button",
7462
7497
  {
7463
7498
  key: tab.id,
@@ -7468,9 +7503,9 @@ var UniversalCreateApplication = ({
7468
7503
  },
7469
7504
  tab.label
7470
7505
  );
7471
- }))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react108.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, !canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-start gap-3 p-4 bg-stone-50 rounded-xl" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.CircleLock02Icon, size: 20, className: "text-stone-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Access Restricted"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-500 mt-1 leading-relaxed" }, "You lack clearance to create applications."))), creationMode === "EXISTING" ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react108.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react108.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowCompaniesModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Building03Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react108.default.createElement("span", { className: `w-full pl-8 text-sm truncate block ${activeCompany ? "text-black" : "text-stone-400"}` }, activeCompany ? activeCompany.name : "Select an existing company..."))) : /* @__PURE__ */ import_react108.default.createElement(import_react108.default.Fragment, null, /* @__PURE__ */ import_react108.default.createElement(TextInput, { label: "Company Name", value: newCompanyName, onChange: (val) => setNewCompanyName(val), disabled: isSubmitting || !canManage, placeholder: "e.g. Acme Innovations Ltd.", maxLength: 80 }), /* @__PURE__ */ import_react108.default.createElement("div", { className: `flex items-center justify-between py-2 mt-2 ${!canManage ? "opacity-50 pointer-events-none" : ""}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Company"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-500" }, "Only assigned members can view and access its applications.")), /* @__PURE__ */ import_react108.default.createElement("button", { type: "button", onClick: () => setIsPrivate(!isPrivate), disabled: !canManage || isSubmitting, className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#d97757]" : "bg-stone-200"}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` }))), isPrivate && /* @__PURE__ */ import_react108.default.createElement("div", { className: `flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl ${!canManage ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-black tracking-tight" }, "Members"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-[#d97757]" }, selectedParticipants.size, " added")), /* @__PURE__ */ import_react108.default.createElement("button", { type: "button", onClick: () => setShowMembersModal(true), disabled: !canManage || isSubmitting, className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access"))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react108.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Application Type"), /* @__PURE__ */ import_react108.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowTypeModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.File02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react108.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, activeTypeObj?.label || "Select Type..."))), canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "pt-6" }, /* @__PURE__ */ import_react108.default.createElement(ThreeDActionButton, { type: "submit", disabled: isSubmitting || !selectedTypeKey || creationMode === "EXISTING" && !selectedCompanyId || creationMode === "NEW" && newCompanyName.length < 2, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Create Application")))), showTypeModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowTypeModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight " }, "Application Type"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowTypeModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-3 space-y-2" }, applicationTypesMeta.map((item) => {
7506
+ }))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react109.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, !canManage && /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-start gap-3 p-4 bg-stone-50 rounded-xl" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.CircleLock02Icon, size: 20, className: "text-stone-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Access Restricted"), /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-stone-500 mt-1 leading-relaxed" }, "You lack clearance to create applications."))), creationMode === "EXISTING" ? /* @__PURE__ */ import_react109.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react109.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react109.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowCompaniesModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Building03Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react109.default.createElement("span", { className: `w-full pl-8 text-sm truncate block ${activeCompany ? "text-black" : "text-stone-400"}` }, activeCompany ? activeCompany.name : "Select an existing company..."))) : /* @__PURE__ */ import_react109.default.createElement(import_react109.default.Fragment, null, /* @__PURE__ */ import_react109.default.createElement(TextInput, { label: "Company Name", value: newCompanyName, onChange: (val) => setNewCompanyName(val), disabled: isSubmitting || !canManage, placeholder: "e.g. Acme Innovations Ltd.", maxLength: 80 }), /* @__PURE__ */ import_react109.default.createElement("div", { className: `flex items-center justify-between py-2 mt-2 ${!canManage ? "opacity-50 pointer-events-none" : ""}` }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Company"), /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-stone-500" }, "Only assigned members can view and access its applications.")), /* @__PURE__ */ import_react109.default.createElement("button", { type: "button", onClick: () => setIsPrivate(!isPrivate), disabled: !canManage || isSubmitting, className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#d97757]" : "bg-stone-200"}` }, /* @__PURE__ */ import_react109.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` }))), isPrivate && /* @__PURE__ */ import_react109.default.createElement("div", { className: `flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl ${!canManage ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-black tracking-tight" }, "Members"), /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-[#d97757]" }, selectedParticipants.size, " added")), /* @__PURE__ */ import_react109.default.createElement("button", { type: "button", onClick: () => setShowMembersModal(true), disabled: !canManage || isSubmitting, className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access"))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react109.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Application Type"), /* @__PURE__ */ import_react109.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowTypeModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.File02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react109.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, activeTypeObj?.label || "Select Type..."))), canManage && /* @__PURE__ */ import_react109.default.createElement("div", { className: "pt-6" }, /* @__PURE__ */ import_react109.default.createElement(ThreeDActionButton, { type: "submit", disabled: isSubmitting || !selectedTypeKey || creationMode === "EXISTING" && !selectedCompanyId || creationMode === "NEW" && newCompanyName.length < 2, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Create Application")))), showTypeModal && canManage && /* @__PURE__ */ import_react109.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowTypeModal(false) }), /* @__PURE__ */ import_react109.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react109.default.createElement("h3", { className: "text-sm text-black tracking-tight " }, "Application Type"), /* @__PURE__ */ import_react109.default.createElement("button", { onClick: () => setShowTypeModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-3 space-y-2" }, applicationTypesMeta.map((item) => {
7472
7507
  const isSelected = selectedTypeKey === item.key;
7473
- return /* @__PURE__ */ import_react108.default.createElement(
7508
+ return /* @__PURE__ */ import_react109.default.createElement(
7474
7509
  "div",
7475
7510
  {
7476
7511
  key: item.key,
@@ -7479,15 +7514,15 @@ var UniversalCreateApplication = ({
7479
7514
  },
7480
7515
  className: `p-4 rounded-xl cursor-pointer transition-all border ${isSelected ? "bg-white border-[#d97757]" : "bg-stone-50 border-transparent hover:bg-stone-100/60"}`
7481
7516
  },
7482
- /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react108.default.createElement("h4", { className: "text-xs text-black" }, item.label), isSelected && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.CheckmarkCircle02Icon, size: 16, className: "text-[#d97757] shrink-0" })),
7483
- /* @__PURE__ */ import_react108.default.createElement("p", { className: "text-[11px] text-stone-500 mt-1 leading-relaxed whitespace-normal wrap-break-word" }, item.desc)
7517
+ /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react109.default.createElement("h4", { className: "text-xs text-black" }, item.label), isSelected && /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.CheckmarkCircle02Icon, size: 16, className: "text-[#d97757] shrink-0" })),
7518
+ /* @__PURE__ */ import_react109.default.createElement("p", { className: "text-[11px] text-stone-500 mt-1 leading-relaxed whitespace-normal wrap-break-word" }, item.desc)
7484
7519
  );
7485
- })))), showCompaniesModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowCompaniesModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Select Company"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowCompaniesModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react108.default.createElement("input", { type: "text", placeholder: "Search companies...", value: localCompSearch, onChange: handleCompSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-50 transition-colors" }))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isCompaniesLoading ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, size: 28, className: "animate-spin text-black" })) : companies.length === 0 ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No companies available.") : companies.map((comp) => /* @__PURE__ */ import_react108.default.createElement("div", { key: comp.id, onClick: () => {
7520
+ })))), showCompaniesModal && canManage && /* @__PURE__ */ import_react109.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowCompaniesModal(false) }), /* @__PURE__ */ import_react109.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react109.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Select Company"), /* @__PURE__ */ import_react109.default.createElement("button", { onClick: () => setShowCompaniesModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react109.default.createElement("input", { type: "text", placeholder: "Search companies...", value: localCompSearch, onChange: handleCompSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-50 transition-colors" }))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isCompaniesLoading ? /* @__PURE__ */ import_react109.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Loading03Icon, size: 28, className: "animate-spin text-black" })) : companies.length === 0 ? /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No companies available.") : companies.map((comp) => /* @__PURE__ */ import_react109.default.createElement("div", { key: comp.id, onClick: () => {
7486
7521
  setSelectedCompanyId(comp.id);
7487
- }, className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col min-w-0 flex-1 pl-2" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black truncate" }, comp.name), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-[10px] text-stone-500 tracking-widest uppercase" }, "Applications: ", comp.applicationsCount || 0), comp.isPrivate && /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-[10px] text-[#d97757] tracking-widest uppercase" }, "Private"))), selectedCompanyId === comp.id && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.CheckmarkCircle02Icon, size: 16, className: "text-[#d97757] mr-2" })))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", companiesCurrentPage, " of ", companiesTotalPages || 1), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react108.default.createElement("button", { disabled: companiesCurrentPage <= 1 || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react108.default.createElement("button", { disabled: companiesCurrentPage >= companiesTotalPages || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowRight01Icon, size: 12 })))))), showMembersModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Assign Members"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react108.default.createElement("input", { type: "text", placeholder: "Search team...", value: localMemSearch, onChange: handleMemSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-50 transition-colors" }))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isMembersLoading ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
7522
+ }, className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col min-w-0 flex-1 pl-2" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-sm text-black truncate" }, comp.name), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-[10px] text-stone-500 tracking-widest uppercase" }, "Applications: ", comp.applicationsCount || 0), comp.isPrivate && /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-[10px] text-[#d97757] tracking-widest uppercase" }, "Private"))), selectedCompanyId === comp.id && /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.CheckmarkCircle02Icon, size: 16, className: "text-[#d97757] mr-2" })))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", companiesCurrentPage, " of ", companiesTotalPages || 1), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react109.default.createElement("button", { disabled: companiesCurrentPage <= 1 || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react109.default.createElement("button", { disabled: companiesCurrentPage >= companiesTotalPages || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.ArrowRight01Icon, size: 12 })))))), showMembersModal && canManage && /* @__PURE__ */ import_react109.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react109.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react109.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Assign Members"), /* @__PURE__ */ import_react109.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react109.default.createElement("input", { type: "text", placeholder: "Search team...", value: localMemSearch, onChange: handleMemSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-50 transition-colors" }))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isMembersLoading ? /* @__PURE__ */ import_react109.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
7488
7523
  const isChecked = selectedParticipants.has(member.userId);
7489
- return /* @__PURE__ */ import_react108.default.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react108.default.createElement(MemberAvatar6, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#d97757]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Tick02Icon, size: 14, className: "text-white" }))));
7490
- })), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages || 1), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react108.default.createElement("button", { disabled: membersCurrentPage <= 1 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react108.default.createElement("button", { disabled: membersCurrentPage >= membersTotalPages || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowRight01Icon, size: 12 })))))));
7524
+ return /* @__PURE__ */ import_react109.default.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react109.default.createElement(MemberAvatar6, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))), /* @__PURE__ */ import_react109.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react109.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#d97757]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.Tick02Icon, size: 14, className: "text-white" }))));
7525
+ })), /* @__PURE__ */ import_react109.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react109.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages || 1), /* @__PURE__ */ import_react109.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react109.default.createElement("button", { disabled: membersCurrentPage <= 1 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react109.default.createElement("button", { disabled: membersCurrentPage >= membersTotalPages || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react109.default.createElement(import_react110.HugeiconsIcon, { icon: import_core_free_icons44.ArrowRight01Icon, size: 12 })))))));
7491
7526
  };
7492
7527
  // Annotate the CommonJS export names for ESM import in node:
7493
7528
  0 && (module.exports = {