@retinalabsllc/zairusjs 4.0.15 → 4.0.17

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.
Files changed (3) hide show
  1. package/dist/index.js +208 -196
  2. package/dist/index.mjs +206 -194
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1723,7 +1723,7 @@ var import_react37 = require("@hugeicons/react");
1723
1723
  var import_core_free_icons8 = require("@hugeicons/core-free-icons");
1724
1724
  var ButtonSpinner = () => /* @__PURE__ */ import_react36.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react36.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react36.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
1725
1725
  var ECOSYSTEM_APPS = [
1726
- { id: "desktop", name: "Retina", description: "Ai Document Editor", iconSrc: "https://retinalabs.company/assets/images/retina.avif", url: "https://app.retinaapps.com/" },
1726
+ { id: "desktop", name: "Retina", description: "Ai Document Editor", iconSrc: "https://retinalabs.company/assets/images/retina_.avif", url: "https://app.retinaapps.com/" },
1727
1727
  { id: "audditur", name: "Audditur", description: "AI Legal & Compliance", iconSrc: "https://retinalabs.company/assets/images/audditur.avif", url: "https://app.audditur.com/" }
1728
1728
  ];
1729
1729
  var UniversalSidebar = ({
@@ -1819,9 +1819,9 @@ var UniversalSidebar = ({
1819
1819
  {
1820
1820
  src: currentAppConfig.iconSrc,
1821
1821
  alt: currentAppConfig.name,
1822
- className: "w-5 h-5 rounded-md object-contain shrink-0"
1822
+ className: "w-7 h-7 rounded-md object-contain shrink-0"
1823
1823
  }
1824
- ) : /* @__PURE__ */ import_react36.default.createElement("div", { className: " rounded-md shrink-0 flex items-center justify-center" }), (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col justify-center min-w-0 pr-2 flex-1" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[13px] text-black leading-none truncate tracking-wide mb-1" }, title), subtitle && /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none " }, subtitle))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ import_react36.default.createElement(
1824
+ ) : /* @__PURE__ */ import_react36.default.createElement("div", { className: " rounded-md shrink-0 flex items-center justify-center" }), (!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col justify-center min-w-0 pr-2 flex-1" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[13px] gradient-text leading-none truncate tracking-wide mb-1" }, title), subtitle && /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none " }, subtitle))), /* @__PURE__ */ import_react36.default.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ import_react36.default.createElement(
1825
1825
  "button",
1826
1826
  {
1827
1827
  onClick: closeMobile,
@@ -2041,7 +2041,7 @@ var UniversalOrganizationPage = ({
2041
2041
  };
2042
2042
  const hasChanges = orgName !== initialOrgName || slug !== initialSlug;
2043
2043
  const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || orgName.length < 3 || slug.length < 3 || slug !== initialSlug && slugAvailable === false;
2044
- return /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react38.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react38.default.createElement("div", null, /* @__PURE__ */ import_react38.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, "Organization"), /* @__PURE__ */ import_react38.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your tenant workspace details and identity.")), isReadOnly && /* @__PURE__ */ import_react38.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons9.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react38.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react38.default.createElement(
2044
+ return /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react38.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react38.default.createElement("div", null, /* @__PURE__ */ import_react38.default.createElement("h1", { className: " gradient-text text-xl mb-1 tracking-tight" }, "Organization"), /* @__PURE__ */ import_react38.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your tenant workspace details and identity.")), isReadOnly && /* @__PURE__ */ import_react38.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react38.default.createElement(import_react39.HugeiconsIcon, { icon: import_core_free_icons9.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react38.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react38.default.createElement(
2045
2045
  TextInput,
2046
2046
  {
2047
2047
  label: "Organization Name",
@@ -2163,7 +2163,7 @@ var UniversalIdentityPage = ({
2163
2163
  };
2164
2164
  const hasChanges = primaryValue !== initialPrimaryValue || secondaryValue !== initialSecondaryValue;
2165
2165
  const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || primaryValue.trim().length < 3;
2166
- return /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react40.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react40.default.createElement("div", null, /* @__PURE__ */ import_react40.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), isReadOnly && /* @__PURE__ */ import_react40.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons10.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react40.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react40.default.createElement(
2166
+ return /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react40.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react40.default.createElement("div", null, /* @__PURE__ */ import_react40.default.createElement("h1", { className: " gradient-text text-xl mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), isReadOnly && /* @__PURE__ */ import_react40.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react40.default.createElement(import_react41.HugeiconsIcon, { icon: import_core_free_icons10.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react40.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react40.default.createElement(
2167
2167
  TextInput,
2168
2168
  {
2169
2169
  label: primaryInputLabel,
@@ -2232,12 +2232,72 @@ var UniversalIdentityPage = ({
2232
2232
  };
2233
2233
 
2234
2234
  // src/components/UniversalMembersPage.tsx
2235
- var import_react42 = __toESM(require("react"));
2235
+ var import_react44 = __toESM(require("react"));
2236
2236
  var import_react_hot_toast5 = __toESM(require("react-hot-toast"));
2237
+ var import_react45 = require("@hugeicons/react");
2238
+ var import_core_free_icons12 = require("@hugeicons/core-free-icons");
2239
+
2240
+ // src/components/Banner.tsx
2241
+ var import_react42 = __toESM(require("react"));
2237
2242
  var import_react43 = require("@hugeicons/react");
2238
2243
  var import_core_free_icons11 = require("@hugeicons/core-free-icons");
2239
- var ButtonSpinner3 = () => /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 16, className: "animate-spin text-white" });
2240
- var PageSpinner2 = () => /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2244
+ var Banner = ({
2245
+ title,
2246
+ message,
2247
+ type,
2248
+ icon,
2249
+ isDismissible = true,
2250
+ onDismiss,
2251
+ action
2252
+ }) => {
2253
+ const [isVisible, setIsVisible] = (0, import_react42.useState)(true);
2254
+ if (!isVisible) return null;
2255
+ const handleDismiss = () => {
2256
+ setIsVisible(false);
2257
+ if (onDismiss) onDismiss();
2258
+ };
2259
+ const config = {
2260
+ success: {
2261
+ bg: "bg-emerald-50",
2262
+ iconColor: "text-emerald-600",
2263
+ titleColor: "text-emerald-900",
2264
+ msgColor: "text-emerald-700",
2265
+ defaultIcon: import_core_free_icons11.CheckmarkBadge01Icon,
2266
+ closeHover: "hover:bg-emerald-100 text-emerald-500"
2267
+ },
2268
+ warning: {
2269
+ bg: "bg-amber-50",
2270
+ iconColor: "text-amber-600",
2271
+ titleColor: "text-amber-900",
2272
+ msgColor: "text-amber-700",
2273
+ defaultIcon: import_core_free_icons11.InformationCircleIcon,
2274
+ closeHover: "hover:bg-amber-100 text-amber-500"
2275
+ },
2276
+ alert: {
2277
+ bg: "bg-red-50",
2278
+ iconColor: "text-red-600",
2279
+ titleColor: "text-red-900",
2280
+ msgColor: "text-red-700",
2281
+ defaultIcon: import_core_free_icons11.Alert02Icon,
2282
+ closeHover: "hover:bg-red-100 text-red-500"
2283
+ }
2284
+ };
2285
+ const currentConfig = config[type];
2286
+ const IconToUse = icon || currentConfig.defaultIcon;
2287
+ return /* @__PURE__ */ import_react42.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react42.default.createElement("div", { className: `shrink-0 mt-0.5 ${currentConfig.iconColor}` }, /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: IconToUse, size: 20 })), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex-1 flex flex-col min-w-0 pr-6" }, /* @__PURE__ */ import_react42.default.createElement("h4", { className: `text-sm tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react42.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react42.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react42.default.createElement(
2288
+ "button",
2289
+ {
2290
+ onClick: handleDismiss,
2291
+ className: `absolute top-3 right-3 p-1.5 rounded-full transition-colors outline-none shrink-0 ${currentConfig.closeHover}`,
2292
+ "aria-label": "Dismiss banner"
2293
+ },
2294
+ /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.Cancel01Icon, size: 16 })
2295
+ ));
2296
+ };
2297
+
2298
+ // src/components/UniversalMembersPage.tsx
2299
+ var ButtonSpinner3 = () => /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 16, className: "animate-spin text-white" });
2300
+ var PageSpinner2 = () => /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2241
2301
  var getInitials = (name) => {
2242
2302
  if (!name) return "U";
2243
2303
  const parts = name.trim().split(" ");
@@ -2280,18 +2340,18 @@ var UniversalMembersPage = ({
2280
2340
  onRemoveMember,
2281
2341
  onUpdateRole
2282
2342
  }) => {
2283
- const [currentView, setCurrentView] = (0, import_react42.useState)("list");
2284
- const [selectedMember, setSelectedMember] = (0, import_react42.useState)(null);
2285
- const [inviteEmail, setInviteEmail] = (0, import_react42.useState)("");
2286
- const [inviteFirst, setInviteFirst] = (0, import_react42.useState)("");
2287
- const [inviteLast, setInviteLast] = (0, import_react42.useState)("");
2288
- const [isInviting, setIsInviting] = (0, import_react42.useState)(false);
2289
- const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react42.useState)(false);
2290
- const [isUpdatingRole, setIsUpdatingRole] = (0, import_react42.useState)(false);
2291
- const [memberToDelete, setMemberToDelete] = (0, import_react42.useState)(null);
2292
- const [isDeleting, setIsDeleting] = (0, import_react42.useState)(false);
2293
- const dropdownRef = (0, import_react42.useRef)(null);
2294
- (0, import_react42.useEffect)(() => {
2343
+ const [currentView, setCurrentView] = (0, import_react44.useState)("list");
2344
+ const [selectedMember, setSelectedMember] = (0, import_react44.useState)(null);
2345
+ const [inviteEmail, setInviteEmail] = (0, import_react44.useState)("");
2346
+ const [inviteFirst, setInviteFirst] = (0, import_react44.useState)("");
2347
+ const [inviteLast, setInviteLast] = (0, import_react44.useState)("");
2348
+ const [isInviting, setIsInviting] = (0, import_react44.useState)(false);
2349
+ const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react44.useState)(false);
2350
+ const [isUpdatingRole, setIsUpdatingRole] = (0, import_react44.useState)(false);
2351
+ const [memberToDelete, setMemberToDelete] = (0, import_react44.useState)(null);
2352
+ const [isDeleting, setIsDeleting] = (0, import_react44.useState)(false);
2353
+ const dropdownRef = (0, import_react44.useRef)(null);
2354
+ (0, import_react44.useEffect)(() => {
2295
2355
  function handleClickOutside(event) {
2296
2356
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
2297
2357
  setIsRoleModalOpen(false);
@@ -2365,15 +2425,15 @@ var UniversalMembersPage = ({
2365
2425
  setSelectedMember(null);
2366
2426
  setIsRoleModalOpen(false);
2367
2427
  };
2368
- return /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl fade-in duration-300 p-6 rounded-2xl bg-white " }, /* @__PURE__ */ import_react42.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" && /* @__PURE__ */ import_react42.default.createElement(import_react42.default.Fragment, null, /* @__PURE__ */ import_react42.default.createElement("div", null, /* @__PURE__ */ import_react42.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), canManage && /* @__PURE__ */ import_react42.default.createElement(
2428
+ return /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl fade-in duration-300 p-6 rounded-2xl bg-white " }, /* @__PURE__ */ import_react44.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" && /* @__PURE__ */ import_react44.default.createElement(import_react44.default.Fragment, null, /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("h1", { className: " gradient-text text-xl mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), canManage && /* @__PURE__ */ import_react44.default.createElement(
2369
2429
  ThreeDActionButton,
2370
2430
  {
2371
2431
  onClick: () => setCurrentView("invite"),
2372
2432
  className: "w-fit shrink-0 gap-2"
2373
2433
  },
2374
- /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.UserAdd01Icon, size: 12 }),
2434
+ /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.UserAdd01Icon, size: 12 }),
2375
2435
  "Add Member"
2376
- )), currentView !== "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react42.default.createElement("button", { onClick: goBack, className: "text-[11px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react42.default.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react42.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.length === 0 ? /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No organization member") : members.map((member) => /* @__PURE__ */ import_react42.default.createElement(
2436
+ )), currentView !== "list" && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: goBack, className: "text-[11px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react44.default.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react44.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.length === 0 ? /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No organization member") : members.map((member) => /* @__PURE__ */ import_react44.default.createElement(
2377
2437
  "div",
2378
2438
  {
2379
2439
  key: member.id,
@@ -2383,7 +2443,7 @@ var UniversalMembersPage = ({
2383
2443
  },
2384
2444
  className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2385
2445
  },
2386
- /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react42.default.createElement(
2446
+ /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement(
2387
2447
  "img",
2388
2448
  {
2389
2449
  src: member.displayImage,
@@ -2391,25 +2451,25 @@ var UniversalMembersPage = ({
2391
2451
  className: "w-full h-full object-cover blur-sm transition-all duration-300",
2392
2452
  onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
2393
2453
  }
2394
- )) : /* @__PURE__ */ import_react42.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center text-black text-xs ${resolveThemeColor(member.profileColor)}` }, getInitials(member.fullName)), /* @__PURE__ */ import_react42.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-sm text-black truncate pr-2 sm:pr-4" }, member.fullName, " ", member.userId === currentUserId && /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-neutral-400 ml-1 sm:ml-2" }, "(You)")), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-neutral-500 truncate pr-2 sm:pr-4 mt-0.5" }, member.email))),
2395
- /* @__PURE__ */ import_react42.default.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-black border border-neutral-100 px-4 py-2 rounded-full bg-white whitespace-nowrap" }, canManage ? "Manage" : "View"))
2396
- ))), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react42.default.createElement(
2454
+ )) : /* @__PURE__ */ import_react44.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center text-black text-xs ${resolveThemeColor(member.profileColor)}` }, getInitials(member.fullName)), /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-black truncate pr-2 sm:pr-4" }, member.fullName, " ", member.userId === currentUserId && /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-neutral-400 ml-1 sm:ml-2" }, "(You)")), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 truncate pr-2 sm:pr-4 mt-0.5" }, member.email))),
2455
+ /* @__PURE__ */ import_react44.default.createElement("div", { className: `shrink-0 pl-2 sm:pl-4 transition-opacity hidden sm:block ${canManage ? "opacity-0 group-hover:opacity-100" : "opacity-100"}` }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-black border border-neutral-100 px-4 py-2 rounded-full bg-white whitespace-nowrap" }, canManage ? "Manage" : "View"))
2456
+ ))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react44.default.createElement(
2397
2457
  "button",
2398
2458
  {
2399
2459
  onClick: () => onPageChange(currentPage - 1),
2400
2460
  disabled: currentPage === 1 || isLoading,
2401
2461
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
2402
2462
  },
2403
- /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 14 })
2404
- ), /* @__PURE__ */ import_react42.default.createElement(
2463
+ /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.ArrowLeft01Icon, size: 14 })
2464
+ ), /* @__PURE__ */ import_react44.default.createElement(
2405
2465
  "button",
2406
2466
  {
2407
2467
  onClick: () => onPageChange(currentPage + 1),
2408
2468
  disabled: currentPage >= totalPages || isLoading,
2409
2469
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
2410
2470
  },
2411
- /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowRight01Icon, size: 14 })
2412
- ))))), currentView === "details" && selectedMember && /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full max-w-5xl text-left" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center gap-5" }, selectedMember.displayImage && selectedMember.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-16 h-16 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react42.default.createElement(
2471
+ /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.ArrowRight01Icon, size: 14 })
2472
+ ))))), currentView === "details" && selectedMember && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full max-w-5xl text-left" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-5" }, selectedMember.displayImage && selectedMember.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-16 h-16 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement(
2413
2473
  "img",
2414
2474
  {
2415
2475
  src: selectedMember.displayImage,
@@ -2417,7 +2477,7 @@ var UniversalMembersPage = ({
2417
2477
  className: "w-full h-full object-cover blur-sm transition-all duration-300",
2418
2478
  onLoad: (e) => e.currentTarget.classList.remove("blur-sm")
2419
2479
  }
2420
- )) : /* @__PURE__ */ import_react42.default.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ import_react42.default.createElement("div", null, /* @__PURE__ */ import_react42.default.createElement("h2", { className: " text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ import_react42.default.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-100 pt-8" }, /* @__PURE__ */ import_react42.default.createElement("div", null, /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Role"), canChangeRoles && selectedMember.userId !== currentUserId ? /* @__PURE__ */ import_react42.default.createElement(
2480
+ )) : /* @__PURE__ */ import_react44.default.createElement("div", { className: `w-16 h-16 shrink-0 rounded-full flex items-center justify-center text-black text-sm ${resolveThemeColor(selectedMember.profileColor)}` }, getInitials(selectedMember.fullName)), /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("h2", { className: " text-lg text-black" }, selectedMember.fullName), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-sm text-neutral-500 mt-1" }, selectedMember.email))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "grid grid-cols-2 gap-6 border-t border-neutral-100 pt-8" }, /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Role"), canChangeRoles && selectedMember.userId !== currentUserId ? /* @__PURE__ */ import_react44.default.createElement(
2421
2481
  "button",
2422
2482
  {
2423
2483
  onClick: () => !isUpdatingRole && setIsRoleModalOpen(true),
@@ -2425,16 +2485,24 @@ var UniversalMembersPage = ({
2425
2485
  className: `flex items-center gap-3 text-xs text-black pl-4 pr-3 py-2 border rounded-full transition-colors disabled:opacity-50 outline-none ${isRoleModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
2426
2486
  },
2427
2487
  selectedMember.role,
2428
- isUpdatingRole ? /* @__PURE__ */ import_react42.default.createElement(ButtonSpinner3, null) : /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2429
- ) : /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ import_react42.default.createElement("div", null, /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ import_react42.default.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-100" }, /* @__PURE__ */ import_react42.default.createElement(
2488
+ isUpdatingRole ? /* @__PURE__ */ import_react44.default.createElement(ButtonSpinner3, null) : /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2489
+ ) : /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-xs text-black bg-neutral-50 px-4 py-2 rounded-full inline-block" }, selectedMember.role)), /* @__PURE__ */ import_react44.default.createElement("div", null, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-3" }, "Joined Date"), /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-sm text-black" }, new Date(selectedMember.joinedAt).toLocaleDateString()))), canManage && selectedMember.userId !== currentUserId && /* @__PURE__ */ import_react44.default.createElement("div", { className: "pt-8 mt-2 border-t border-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement(
2430
2490
  "button",
2431
2491
  {
2432
2492
  onClick: () => setMemberToDelete(selectedMember),
2433
2493
  className: "flex items-center gap-2 text-[11px] tracking-widest text-red-600 hover:text-red-700 transition-colors w-fit outline-none"
2434
2494
  },
2435
- /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.Delete01Icon, size: 14 }),
2495
+ /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.Delete01Icon, size: 14 }),
2436
2496
  " Remove Member"
2437
- )))), currentView === "invite" && canManage && /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full max-w-5xl text-left" }, /* @__PURE__ */ import_react42.default.createElement("form", { onSubmit: handleInvite, className: "space-y-8", autoComplete: "off" }, /* @__PURE__ */ import_react42.default.createElement(
2497
+ )))), currentView === "invite" && canManage && /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full max-w-5xl text-left" }, /* @__PURE__ */ import_react44.default.createElement("form", { onSubmit: handleInvite, className: "space-y-8", autoComplete: "off" }, /* @__PURE__ */ import_react44.default.createElement(
2498
+ Banner,
2499
+ {
2500
+ title: "Universal Workspace Access",
2501
+ message: "Any member you add here will be granted access across your Retina Organization accounts. These permissions are universal.",
2502
+ type: "warning",
2503
+ isDismissible: false
2504
+ }
2505
+ ), /* @__PURE__ */ import_react44.default.createElement(
2438
2506
  TextInput,
2439
2507
  {
2440
2508
  label: "Email Address",
@@ -2443,7 +2511,7 @@ var UniversalMembersPage = ({
2443
2511
  disabled: isInviting,
2444
2512
  placeholder: "developer@acme.com"
2445
2513
  }
2446
- ), requireNamesForInvite && /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react42.default.createElement(
2514
+ ), requireNamesForInvite && /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react44.default.createElement(
2447
2515
  TextInput,
2448
2516
  {
2449
2517
  label: "First Name",
@@ -2452,7 +2520,7 @@ var UniversalMembersPage = ({
2452
2520
  disabled: isInviting,
2453
2521
  placeholder: "Jane"
2454
2522
  }
2455
- ), /* @__PURE__ */ import_react42.default.createElement(
2523
+ ), /* @__PURE__ */ import_react44.default.createElement(
2456
2524
  TextInput,
2457
2525
  {
2458
2526
  label: "Last Name",
@@ -2461,7 +2529,7 @@ var UniversalMembersPage = ({
2461
2529
  disabled: isInviting,
2462
2530
  placeholder: "Doe"
2463
2531
  }
2464
- )), /* @__PURE__ */ import_react42.default.createElement("div", { className: "pt-8 mt-2" }, /* @__PURE__ */ import_react42.default.createElement(
2532
+ )), /* @__PURE__ */ import_react44.default.createElement("div", { className: "pt-4 mt-2" }, /* @__PURE__ */ import_react44.default.createElement(
2465
2533
  ThreeDActionButton,
2466
2534
  {
2467
2535
  type: "submit",
@@ -2470,7 +2538,7 @@ var UniversalMembersPage = ({
2470
2538
  className: "min-w-40"
2471
2539
  },
2472
2540
  "Send Invitation"
2473
- )))), isRoleModalOpen && canChangeRoles && /* @__PURE__ */ import_react42.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdatingRole && setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react42.default.createElement("div", { ref: dropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react42.default.createElement("h3", { className: " text-[14px] text-black tracking-tight" }, "Update Role")), /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, availableRoles.map((roleOption) => /* @__PURE__ */ import_react42.default.createElement(
2541
+ )))), isRoleModalOpen && canChangeRoles && /* @__PURE__ */ import_react44.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdatingRole && setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react44.default.createElement("div", { ref: dropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " text-[14px] text-black tracking-tight" }, "Update Role")), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, availableRoles.map((roleOption) => /* @__PURE__ */ import_react44.default.createElement(
2474
2542
  "button",
2475
2543
  {
2476
2544
  key: roleOption,
@@ -2478,9 +2546,9 @@ var UniversalMembersPage = ({
2478
2546
  disabled: isUpdatingRole,
2479
2547
  className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${selectedMember?.role === roleOption ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2480
2548
  },
2481
- /* @__PURE__ */ import_react42.default.createElement("span", { className: "truncate pr-2" }, roleOption),
2482
- selectedMember?.role === roleOption && /* @__PURE__ */ import_react42.default.createElement("div", null)
2483
- ))), /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react42.default.createElement(
2549
+ /* @__PURE__ */ import_react44.default.createElement("span", { className: "truncate pr-2" }, roleOption),
2550
+ selectedMember?.role === roleOption && /* @__PURE__ */ import_react44.default.createElement("div", null)
2551
+ ))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react44.default.createElement(
2484
2552
  "button",
2485
2553
  {
2486
2554
  onClick: () => setIsRoleModalOpen(false),
@@ -2488,14 +2556,14 @@ var UniversalMembersPage = ({
2488
2556
  className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
2489
2557
  },
2490
2558
  "Cancel"
2491
- )))), memberToDelete && canManage && /* @__PURE__ */ import_react42.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isDeleting && setMemberToDelete(null) }), /* @__PURE__ */ import_react42.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react42.default.createElement("h3", { className: " text-[17px] text-black tracking-tight mb-1" }, "Remove Member"), /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to remove this member? They will lose access instantly.")), /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react42.default.createElement("button", { onClick: () => setMemberToDelete(null), disabled: isDeleting, className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel"), /* @__PURE__ */ import_react42.default.createElement("button", { onClick: handleDelete, disabled: isDeleting, className: "flex-1 py-3 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none" }, isDeleting ? /* @__PURE__ */ import_react42.default.createElement(ButtonSpinner3, null) : "Remove")))));
2559
+ )))), memberToDelete && canManage && /* @__PURE__ */ import_react44.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isDeleting && setMemberToDelete(null) }), /* @__PURE__ */ import_react44.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react44.default.createElement("h3", { className: " text-[17px] text-black tracking-tight mb-1" }, "Remove Member"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to remove this member? They will lose access instantly.")), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react44.default.createElement("button", { onClick: () => setMemberToDelete(null), disabled: isDeleting, className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel"), /* @__PURE__ */ import_react44.default.createElement("button", { onClick: handleDelete, disabled: isDeleting, className: "flex-1 py-3 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none" }, isDeleting ? /* @__PURE__ */ import_react44.default.createElement(ButtonSpinner3, null) : "Remove")))));
2492
2560
  };
2493
2561
 
2494
2562
  // src/components/UniversalProfileSettings.tsx
2495
- var import_react44 = __toESM(require("react"));
2563
+ var import_react46 = __toESM(require("react"));
2496
2564
  var import_react_hot_toast6 = __toESM(require("react-hot-toast"));
2497
- var import_react45 = require("@hugeicons/react");
2498
- var import_core_free_icons12 = require("@hugeicons/core-free-icons");
2565
+ var import_react47 = require("@hugeicons/react");
2566
+ var import_core_free_icons13 = require("@hugeicons/core-free-icons");
2499
2567
  var UniversalProfileSettings = ({
2500
2568
  initialFirstName,
2501
2569
  initialLastName,
@@ -2505,10 +2573,10 @@ var UniversalProfileSettings = ({
2505
2573
  isReadOnly = false,
2506
2574
  onSaveProfile
2507
2575
  }) => {
2508
- const [firstName, setFirstName] = (0, import_react44.useState)(initialFirstName);
2509
- const [lastName, setLastName] = (0, import_react44.useState)(initialLastName);
2510
- const [isSubmitting, setIsSubmitting] = (0, import_react44.useState)(false);
2511
- (0, import_react44.useEffect)(() => {
2576
+ const [firstName, setFirstName] = (0, import_react46.useState)(initialFirstName);
2577
+ const [lastName, setLastName] = (0, import_react46.useState)(initialLastName);
2578
+ const [isSubmitting, setIsSubmitting] = (0, import_react46.useState)(false);
2579
+ (0, import_react46.useEffect)(() => {
2512
2580
  setFirstName(initialFirstName || "");
2513
2581
  setLastName(initialLastName || "");
2514
2582
  }, [initialFirstName, initialLastName]);
@@ -2538,7 +2606,7 @@ var UniversalProfileSettings = ({
2538
2606
  };
2539
2607
  const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
2540
2608
  const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
2541
- return /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react44.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("h1", { className: " text-xl text-black mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react44.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react44.default.createElement(import_react45.HugeiconsIcon, { icon: import_core_free_icons12.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react44.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react44.default.createElement(
2609
+ return /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react46.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h1", { className: " gradient-text text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react46.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react46.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement(
2542
2610
  TextInput,
2543
2611
  {
2544
2612
  label: "First Name",
@@ -2547,7 +2615,7 @@ var UniversalProfileSettings = ({
2547
2615
  disabled: isReadOnly || isSubmitting,
2548
2616
  placeholder: "System"
2549
2617
  }
2550
- )), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react44.default.createElement(
2618
+ )), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement(
2551
2619
  TextInput,
2552
2620
  {
2553
2621
  label: "Last Name",
@@ -2556,7 +2624,7 @@ var UniversalProfileSettings = ({
2556
2624
  disabled: isReadOnly || isSubmitting,
2557
2625
  placeholder: "Admin"
2558
2626
  }
2559
- ))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react44.default.createElement(
2627
+ ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement(
2560
2628
  TextInput,
2561
2629
  {
2562
2630
  label: "Email ID",
@@ -2565,7 +2633,7 @@ var UniversalProfileSettings = ({
2565
2633
  },
2566
2634
  disabled: true
2567
2635
  }
2568
- ), /* @__PURE__ */ import_react44.default.createElement("p", { className: "text-[11px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 " }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate " }, "Account Status"), /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react44.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate " }, "Member Since"), /* @__PURE__ */ import_react44.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react44.default.createElement(
2636
+ ), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] text-neutral-400 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4 " }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate " }, "Account Status"), /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate " }, "Member Since"), /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react46.default.createElement(
2569
2637
  "button",
2570
2638
  {
2571
2639
  type: "button",
@@ -2576,7 +2644,7 @@ var UniversalProfileSettings = ({
2576
2644
  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"
2577
2645
  },
2578
2646
  "Cancel"
2579
- ), /* @__PURE__ */ import_react44.default.createElement(
2647
+ ), /* @__PURE__ */ import_react46.default.createElement(
2580
2648
  ThreeDActionButton,
2581
2649
  {
2582
2650
  type: "submit",
@@ -2589,11 +2657,11 @@ var UniversalProfileSettings = ({
2589
2657
  };
2590
2658
 
2591
2659
  // src/components/UniversalBillingPage.tsx
2592
- var import_react46 = __toESM(require("react"));
2593
- var import_react47 = require("@hugeicons/react");
2594
- var import_core_free_icons13 = require("@hugeicons/core-free-icons");
2595
- var PageSpinner3 = () => /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 32, className: "animate-spin mb-4 text-neutral-400" }));
2596
- var ButtonSpinner4 = () => /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 16, className: "animate-spin text-neutral-500" });
2660
+ var import_react48 = __toESM(require("react"));
2661
+ var import_react49 = require("@hugeicons/react");
2662
+ var import_core_free_icons14 = require("@hugeicons/core-free-icons");
2663
+ var PageSpinner3 = () => /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 32, className: "animate-spin mb-4 text-neutral-400" }));
2664
+ var ButtonSpinner4 = () => /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 16, className: "animate-spin text-neutral-500" });
2597
2665
  var formatDate = (dateString) => {
2598
2666
  if (!dateString) return "N/A";
2599
2667
  return new Date(dateString).toLocaleDateString("en-US", {
@@ -2605,6 +2673,10 @@ var formatDate = (dateString) => {
2605
2673
  var formatUsd = (amount) => {
2606
2674
  return `$${(amount || 0).toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
2607
2675
  };
2676
+ var capitalizeWords = (input) => {
2677
+ if (!input) return "";
2678
+ return input.toLowerCase().split(" ").map((part) => part.length ? part[0].toUpperCase() + part.slice(1) : part).join(" ");
2679
+ };
2608
2680
  var UniversalBillingPage = ({
2609
2681
  headerTitle,
2610
2682
  headerDescription,
@@ -2635,13 +2707,13 @@ var UniversalBillingPage = ({
2635
2707
  onPayInvoice,
2636
2708
  onUpdateInvoiceStatus
2637
2709
  }) => {
2638
- const [currentView, setCurrentView] = (0, import_react46.useState)("list");
2639
- const [selectedInvoice, setSelectedInvoice] = (0, import_react46.useState)(null);
2640
- const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react46.useState)(false);
2641
- const [isPaying, setIsPaying] = (0, import_react46.useState)(false);
2642
- const [isActionModalOpen, setIsActionModalOpen] = (0, import_react46.useState)(false);
2643
- const [isUpdating, setIsUpdating] = (0, import_react46.useState)(false);
2644
- const [twoFactorCode, setTwoFactorCode] = (0, import_react46.useState)("");
2710
+ const [currentView, setCurrentView] = (0, import_react48.useState)("list");
2711
+ const [selectedInvoice, setSelectedInvoice] = (0, import_react48.useState)(null);
2712
+ const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react48.useState)(false);
2713
+ const [isPaying, setIsPaying] = (0, import_react48.useState)(false);
2714
+ const [isActionModalOpen, setIsActionModalOpen] = (0, import_react48.useState)(false);
2715
+ const [isUpdating, setIsUpdating] = (0, import_react48.useState)(false);
2716
+ const [twoFactorCode, setTwoFactorCode] = (0, import_react48.useState)("");
2645
2717
  const handlePayment = async () => {
2646
2718
  if (!selectedInvoice || isReadOnly || !onPayInvoice || isPaying) return;
2647
2719
  setIsPaying(true);
@@ -2668,14 +2740,14 @@ var UniversalBillingPage = ({
2668
2740
  setIsUpdating(false);
2669
2741
  }
2670
2742
  };
2671
- return /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex max-w-5xl rounded-2xl bg-white p-6 flex-col gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react46.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0 w-full" }, /* @__PURE__ */ import_react46.default.createElement("h1", { className: "text-lg text-black mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 truncate mb-6" }, headerDescription), showSearchAndFilter && onSearchChange && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 mb-4" }, /* @__PURE__ */ import_react46.default.createElement(
2743
+ return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex max-w-5xl rounded-2xl bg-white p-6 flex-col gap-8 animate-in fade-in duration-300 " }, /* @__PURE__ */ import_react48.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0 w-full" }, /* @__PURE__ */ import_react48.default.createElement("h1", { className: "text-lg gradient-text mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 truncate mb-6" }, headerDescription), showSearchAndFilter && onSearchChange && onTimeframeChange && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 mb-4" }, /* @__PURE__ */ import_react48.default.createElement(
2672
2744
  TextInput,
2673
2745
  {
2674
2746
  placeholder: "Search by ID or Name...",
2675
2747
  value: searchQuery,
2676
2748
  onChange: onSearchChange
2677
2749
  }
2678
- ), /* @__PURE__ */ import_react46.default.createElement(
2750
+ ), /* @__PURE__ */ import_react48.default.createElement(
2679
2751
  "button",
2680
2752
  {
2681
2753
  type: "button",
@@ -2683,10 +2755,10 @@ var UniversalBillingPage = ({
2683
2755
  className: "px-4 py-3 text-sm bg-transparent border-b border-neutral-100 text-black outline-none focus:border-black shrink-0 text-left"
2684
2756
  },
2685
2757
  timeframe === "ALL" ? "All Time" : timeframe === "24H" ? "Past 24 Hours" : timeframe === "7D" ? "Past 7 Days" : "Past 30 Days"
2686
- ))) : /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[11px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 12 }), " Back")), isReadOnly && currentView === "list" && /* @__PURE__ */ import_react46.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.CircleLock02Icon, size: 18, className: "text-current" }))), currentView === "list" && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-8 w-full" }, (metricPrimaryLabel || metricSecondaryLabel) && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between sm:items-start pb-8 border-b border-neutral-100 gap-6 sm:gap-0" }, metricPrimaryLabel && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-2 truncate block " }, metricPrimaryLabel), /* @__PURE__ */ import_react46.default.createElement("div", { className: "text-2xl text-black tracking-tight truncate" }, formatUsd(metricPrimaryValue)), metricPrimarySubtext && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 tracking-widest " }, metricPrimarySubtext)), metricSecondaryLabel && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0 sm:text-right" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-2 truncate block " }, metricSecondaryLabel), /* @__PURE__ */ import_react46.default.createElement("div", { className: "text-xl text-emerald-600 tracking-tight truncate" }, formatUsd(metricSecondaryValue)), metricSecondarySubtext && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 tracking-widest " }, metricSecondarySubtext))), !isReadOnly && showBillingOverview && /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Billing Status"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: `w-2 h-2 rounded-full shrink-0 ${billingStatus === "ACTIVE" ? "bg-green-500" : "bg-neutral-300"}` }), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-black tracking-widest truncate" }, billingStatus || "UNKNOWN"))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Next Billing Date"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black truncate" }, formatDate(nextBillingDate))), lastPaidDate && /* @__PURE__ */ import_react46.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Last Paid Date"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-neutral-600 truncate" }, formatDate(lastPaidDate)))), !isReadOnly && showUsageMetrics && usageMetrics.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-6 truncate block " }, "Usage & Limits"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4 text-sm text-black" }, usageMetrics.map((metric, idx) => /* @__PURE__ */ import_react46.default.createElement("div", { key: idx, className: "flex justify-between pb-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-neutral-500 text-xs" }, metric.label), /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-xs text-black" }, metric.value))))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-4 truncate block " }, "Transaction History"), isLoading ? /* @__PURE__ */ import_react46.default.createElement(PageSpinner3, null) : invoices.length === 0 ? /* @__PURE__ */ import_react46.default.createElement(import_react46.default.Fragment, null, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, "No records found.")) : /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "divide-y divide-neutral-100" }, invoices.map((inv) => /* @__PURE__ */ import_react46.default.createElement("div", { key: inv.id, onClick: () => {
2758
+ ))) : /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setCurrentView("list"), className: "text-[11px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 12 }), " Back")), isReadOnly && currentView === "list" && /* @__PURE__ */ import_react48.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full " }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.CircleLock02Icon, size: 18, className: "text-current" }))), currentView === "list" && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-8 w-full" }, (metricPrimaryLabel || metricSecondaryLabel) && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between sm:items-start pb-8 gap-6 sm:gap-0" }, metricPrimaryLabel && /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-2 truncate block " }, metricPrimaryLabel), /* @__PURE__ */ import_react48.default.createElement("div", { className: "text-2xl text-black tracking-tight truncate" }, formatUsd(metricPrimaryValue)), metricPrimarySubtext && /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 tracking-widest " }, metricPrimarySubtext)), metricSecondaryLabel && /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0 sm:text-right" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-2 truncate block " }, metricSecondaryLabel), /* @__PURE__ */ import_react48.default.createElement("div", { className: "text-xl text-emerald-600 tracking-tight truncate" }, formatUsd(metricSecondaryValue)), metricSecondarySubtext && /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 tracking-widest " }, metricSecondarySubtext))), !isReadOnly && showBillingOverview && /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-8 sm:gap-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Billing Status"), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: `w-2 h-2 rounded-full shrink-0 ${billingStatus === "ACTIVE" ? "bg-green-500" : "bg-neutral-300"}` }), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-black tracking-widest truncate" }, billingStatus || "UNKNOWN"))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Next Billing Date"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-black truncate" }, formatDate(nextBillingDate))), lastPaidDate && /* @__PURE__ */ import_react48.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-3 truncate block " }, "Last Paid Date"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-neutral-600 truncate" }, formatDate(lastPaidDate)))), !isReadOnly && showUsageMetrics && usageMetrics.length > 0 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-6 truncate block " }, "Usage & Limits"), /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-x-8 gap-y-4 text-sm text-black" }, usageMetrics.map((metric, idx) => /* @__PURE__ */ import_react48.default.createElement("div", { key: idx, className: "flex justify-between pb-2" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-neutral-500 text-xs" }, metric.label), /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-xs text-black" }, metric.value))))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "pt-8 border-t border-neutral-100" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[11px] text-neutral-400 tracking-[0.2em] mb-4 truncate block " }, "Transaction History"), isLoading ? /* @__PURE__ */ import_react48.default.createElement(PageSpinner3, null) : invoices.length === 0 ? /* @__PURE__ */ import_react48.default.createElement(import_react48.default.Fragment, null, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, "No records found.")) : /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "divide-y divide-neutral-100" }, invoices.map((inv) => /* @__PURE__ */ import_react48.default.createElement("div", { key: inv.id, onClick: () => {
2687
2759
  setSelectedInvoice(inv);
2688
2760
  setCurrentView("details");
2689
- }, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, inv.name), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-sm text-black" }, formatUsd(inv.amountDue)), /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 14 })))))))), currentView === "details" && selectedInvoice && /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full max-w-5xl animate-in fade-in duration-300" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Breakdown"), /* @__PURE__ */ import_react46.default.createElement("h2", { className: "text-lg text-black mb-1" }, selectedInvoice.name), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate(selectedInvoice.createdAt))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 " }, /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Amount"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xl text-black" }, formatUsd(selectedInvoice.amountDue))), /* @__PURE__ */ import_react46.default.createElement("div", null, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Status"), isModMode ? /* @__PURE__ */ import_react46.default.createElement(
2761
+ }, className: "flex items-center justify-between py-4 hover:bg-neutral-50/50 cursor-pointer group min-w-0 px-2 transition-colors" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-1 min-w-0 flex-1" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, capitalizeWords(inv.name)), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, inv.subtext)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-sm text-black" }, formatUsd(inv.amountDue)), /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[9px] tracking-widest px-2 py-0.5 rounded-full ${inv.status === "PAID" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, inv.status))))), totalPages > 1 && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center justify-between pt-4 mt-2" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1 || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages || isLoading, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.ArrowRight01Icon, size: 14 })))))))), currentView === "details" && selectedInvoice && /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full max-w-5xl animate-in fade-in duration-300" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Breakdown"), /* @__PURE__ */ import_react48.default.createElement("h2", { className: "text-lg text-black mb-1" }, capitalizeWords(selectedInvoice.name)), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate(selectedInvoice.createdAt))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 " }, /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Amount"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xl text-black" }, formatUsd(selectedInvoice.amountDue))), /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Status"), isModMode ? /* @__PURE__ */ import_react48.default.createElement(
2690
2762
  "button",
2691
2763
  {
2692
2764
  onClick: () => !isUpdating && setIsActionModalOpen(true),
@@ -2694,8 +2766,8 @@ var UniversalBillingPage = ({
2694
2766
  className: `flex items-center gap-3 text-xs text-black px-3 py-1.5 mt-1 border rounded-full transition-colors disabled:opacity-50 outline-none ${isActionModalOpen ? "bg-neutral-50 border-neutral-300" : "bg-white border-neutral-100 hover:bg-neutral-50"}`
2695
2767
  },
2696
2768
  selectedInvoice.status,
2697
- isUpdating ? /* @__PURE__ */ import_react46.default.createElement(ButtonSpinner4, null) : /* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: import_core_free_icons13.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2698
- ) : /* @__PURE__ */ import_react46.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-100/60 mt-2" }, /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Reference ID"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-xs text-neutral-500 inline-block" }, selectedInvoice.id))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, !isModMode && (selectedInvoice.status === "ISSUED" || selectedInvoice.status === "OVERDUE") && onPayInvoice && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react46.default.createElement(
2769
+ isUpdating ? /* @__PURE__ */ import_react48.default.createElement(ButtonSpinner4, null) : /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2770
+ ) : /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${selectedInvoice.status === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, selectedInvoice.status)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-100/60 mt-2" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Reference ID"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 inline-block" }, selectedInvoice.id))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, !isModMode && (selectedInvoice.status === "ISSUED" || selectedInvoice.status === "OVERDUE") && onPayInvoice && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react48.default.createElement(
2699
2771
  ThreeDActionButton,
2700
2772
  {
2701
2773
  onClick: handlePayment,
@@ -2704,12 +2776,12 @@ var UniversalBillingPage = ({
2704
2776
  className: "w-full sm:w-auto"
2705
2777
  },
2706
2778
  "Pay Invoice"
2707
- )), !isModMode && selectedInvoice.status === "PAID" && /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full" }, "Invoice Completed")))), isTimeframeModalOpen && showSearchAndFilter && onTimeframeChange && /* @__PURE__ */ import_react46.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[14px] text-black tracking-tight mb-2" }, "Select Timeframe"), /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] text-neutral-500" }, "Choose the range of transactions to display.")), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, [
2779
+ )), !isModMode && selectedInvoice.status === "PAID" && /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full" }, "Invoice Completed")))), isTimeframeModalOpen && showSearchAndFilter && onTimeframeChange && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[14px] text-black tracking-tight mb-2" }, "Select Timeframe"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-[11px] text-neutral-500" }, "Choose the range of transactions to display.")), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, [
2708
2780
  { value: "ALL", label: "All Time" },
2709
2781
  { value: "24H", label: "Past 24 Hours" },
2710
2782
  { value: "7D", label: "Past 7 Days" },
2711
2783
  { value: "30D", label: "Past 30 Days" }
2712
- ].map((option) => /* @__PURE__ */ import_react46.default.createElement(
2784
+ ].map((option) => /* @__PURE__ */ import_react48.default.createElement(
2713
2785
  "button",
2714
2786
  {
2715
2787
  key: option.value,
@@ -2720,9 +2792,9 @@ var UniversalBillingPage = ({
2720
2792
  },
2721
2793
  className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${timeframe === option.value ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2722
2794
  },
2723
- /* @__PURE__ */ import_react46.default.createElement("span", { className: "truncate pr-2" }, option.label),
2724
- timeframe === option.value && /* @__PURE__ */ import_react46.default.createElement("div", null)
2725
- ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setIsTimeframeModalOpen(false), className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none" }, "Cancel")))), isActionModalOpen && isModMode && /* @__PURE__ */ import_react46.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdating && setIsActionModalOpen(false) }), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react46.default.createElement("h3", { className: "text-[14px] text-black tracking-tight mb-2" }, "Update Invoice Status"), /* @__PURE__ */ import_react46.default.createElement(
2795
+ /* @__PURE__ */ import_react48.default.createElement("span", { className: "truncate pr-2" }, option.label),
2796
+ timeframe === option.value && /* @__PURE__ */ import_react48.default.createElement("div", null)
2797
+ ))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setIsTimeframeModalOpen(false), className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors outline-none" }, "Cancel")))), isActionModalOpen && isModMode && /* @__PURE__ */ import_react48.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isUpdating && setIsActionModalOpen(false) }), /* @__PURE__ */ import_react48.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-[14px] text-black tracking-tight mb-2" }, "Update Invoice Status"), /* @__PURE__ */ import_react48.default.createElement(
2726
2798
  TextInput,
2727
2799
  {
2728
2800
  placeholder: "Enter 2FA Code...",
@@ -2730,7 +2802,7 @@ var UniversalBillingPage = ({
2730
2802
  onChange: setTwoFactorCode,
2731
2803
  type: "password"
2732
2804
  }
2733
- )), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["DRAFT", "ISSUED", "PAID", "VOIDED", "OVERDUE"].map((statusOption) => /* @__PURE__ */ import_react46.default.createElement(
2805
+ )), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["DRAFT", "ISSUED", "PAID", "VOIDED", "OVERDUE"].map((statusOption) => /* @__PURE__ */ import_react48.default.createElement(
2734
2806
  "button",
2735
2807
  {
2736
2808
  key: statusOption,
@@ -2738,16 +2810,16 @@ var UniversalBillingPage = ({
2738
2810
  disabled: isUpdating || !twoFactorCode,
2739
2811
  className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${selectedInvoice?.status === statusOption ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2740
2812
  },
2741
- /* @__PURE__ */ import_react46.default.createElement("span", { className: "truncate pr-2" }, statusOption),
2742
- selectedInvoice?.status === statusOption && /* @__PURE__ */ import_react46.default.createElement("div", null)
2743
- ))), /* @__PURE__ */ import_react46.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react46.default.createElement("button", { onClick: () => setIsActionModalOpen(false), disabled: isUpdating, className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel")))));
2813
+ /* @__PURE__ */ import_react48.default.createElement("span", { className: "truncate pr-2" }, statusOption),
2814
+ selectedInvoice?.status === statusOption && /* @__PURE__ */ import_react48.default.createElement("div", null)
2815
+ ))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react48.default.createElement("button", { onClick: () => setIsActionModalOpen(false), disabled: isUpdating, className: "w-full py-2.5 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none" }, "Cancel")))));
2744
2816
  };
2745
2817
 
2746
2818
  // src/components/UniversalCheckoutView.tsx
2747
- var import_react48 = __toESM(require("react"));
2748
- var import_react49 = require("@hugeicons/react");
2749
- var import_core_free_icons14 = require("@hugeicons/core-free-icons");
2750
- var PageSpinner4 = () => /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex justify-center items-center py-20" }, /* @__PURE__ */ import_react48.default.createElement(import_react49.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" }));
2819
+ var import_react50 = __toESM(require("react"));
2820
+ var import_react51 = require("@hugeicons/react");
2821
+ var import_core_free_icons15 = require("@hugeicons/core-free-icons");
2822
+ var PageSpinner4 = () => /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex justify-center items-center py-20" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons15.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" }));
2751
2823
  var formatDate2 = (dateString) => {
2752
2824
  if (!dateString) return "N/A";
2753
2825
  return new Date(dateString).toLocaleDateString("en-US", {
@@ -2766,8 +2838,8 @@ var UniversalCheckoutView = ({
2766
2838
  onPayInvoice,
2767
2839
  onBackClick
2768
2840
  }) => {
2769
- const [isPaying, setIsPaying] = (0, import_react48.useState)(false);
2770
- const [localStatus, setLocalStatus] = (0, import_react48.useState)(null);
2841
+ const [isPaying, setIsPaying] = (0, import_react50.useState)(false);
2842
+ const [localStatus, setLocalStatus] = (0, import_react50.useState)(null);
2771
2843
  const handlePayment = async () => {
2772
2844
  if (!invoice || isReadOnly || isPaying) return;
2773
2845
  setIsPaying(true);
@@ -2781,7 +2853,7 @@ var UniversalCheckoutView = ({
2781
2853
  }
2782
2854
  };
2783
2855
  const displayStatus = localStatus || invoice?.status;
2784
- return /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex max-w-5xl rounded-2xl bg-white p-6 sm:p-8 flex-col gap-6 animate-in fade-in duration-300 mx-auto w-full border border-neutral-100" }, /* @__PURE__ */ import_react48.default.createElement(ManagedToaster, null), isLoading ? /* @__PURE__ */ import_react48.default.createElement(PageSpinner4, null) : !invoice ? /* @__PURE__ */ import_react48.default.createElement("div", { className: "py-12 text-center text-sm text-neutral-500" }, "Invoice not found or could not be loaded.") : /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-8 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Checkout Summary"), /* @__PURE__ */ import_react48.default.createElement("h2", { className: "text-lg text-black mb-1" }, invoice.name), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate2(invoice.createdAt))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Amount Due"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xl text-black" }, formatUsd2(invoice.amountDue))), /* @__PURE__ */ import_react48.default.createElement("div", null, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Status"), /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${displayStatus === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, displayStatus)), /* @__PURE__ */ import_react48.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-200/60 mt-2" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Reference ID"), /* @__PURE__ */ import_react48.default.createElement("p", { className: "text-xs text-neutral-500 inline-block" }, invoice.invoiceNumber))), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, (displayStatus === "ISSUED" || displayStatus === "OVERDUE") && /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react48.default.createElement(
2856
+ return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex max-w-5xl rounded-2xl bg-white p-6 sm:p-8 flex-col gap-6 animate-in fade-in duration-300 mx-auto w-full border border-neutral-100" }, /* @__PURE__ */ import_react50.default.createElement(ManagedToaster, null), isLoading ? /* @__PURE__ */ import_react50.default.createElement(PageSpinner4, null) : !invoice ? /* @__PURE__ */ import_react50.default.createElement("div", { className: "py-12 text-center text-sm text-neutral-500" }, "Invoice not found or could not be loaded.") : /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-8 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react50.default.createElement("div", null, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Checkout Summary"), /* @__PURE__ */ import_react50.default.createElement("h2", { className: "text-lg text-black mb-1" }, invoice.name), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500" }, "Generated on ", formatDate2(invoice.createdAt))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ import_react50.default.createElement("div", null, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Amount Due"), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xl text-black" }, formatUsd2(invoice.amountDue))), /* @__PURE__ */ import_react50.default.createElement("div", null, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Status"), /* @__PURE__ */ import_react50.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 mt-1 inline-block rounded-full ${displayStatus === "PAID" ? "bg-emerald-100 text-emerald-700" : "bg-neutral-100 text-neutral-700"}` }, displayStatus)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "md:col-span-2 pt-4 border-t border-neutral-200/60 mt-2" }, /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1 " }, "Reference ID"), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500 inline-block" }, invoice.invoiceNumber))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-end gap-4 pt-4" }, (displayStatus === "ISSUED" || displayStatus === "OVERDUE") && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col items-end gap-2 w-full sm:w-auto" }, /* @__PURE__ */ import_react50.default.createElement(
2785
2857
  ThreeDActionButton,
2786
2858
  {
2787
2859
  onClick: handlePayment,
@@ -2790,13 +2862,13 @@ var UniversalCheckoutView = ({
2790
2862
  className: "w-full sm:w-auto"
2791
2863
  },
2792
2864
  "Pay Invoice"
2793
- )), displayStatus === "PAID" && /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[12px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full w-full sm:w-auto text-center" }, "Payment Successful"))));
2865
+ )), displayStatus === "PAID" && /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[12px] tracking-widest text-emerald-600 px-6 py-3 bg-emerald-50 rounded-full w-full sm:w-auto text-center" }, "Payment Successful"))));
2794
2866
  };
2795
2867
 
2796
2868
  // src/components/UniversalDashboardPage.tsx
2797
- var import_react50 = __toESM(require("react"));
2798
- var import_react51 = require("@hugeicons/react");
2799
- var import_core_free_icons15 = require("@hugeicons/core-free-icons");
2869
+ var import_react52 = __toESM(require("react"));
2870
+ var import_react53 = require("@hugeicons/react");
2871
+ var import_core_free_icons16 = require("@hugeicons/core-free-icons");
2800
2872
  var UniversalDashboardPage = ({
2801
2873
  headerTitle,
2802
2874
  headerDescription,
@@ -2807,20 +2879,20 @@ var UniversalDashboardPage = ({
2807
2879
  lists,
2808
2880
  isLoading = false
2809
2881
  }) => {
2810
- const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react50.useState)(false);
2882
+ const [isTimeframeModalOpen, setIsTimeframeModalOpen] = (0, import_react52.useState)(false);
2811
2883
  const selectedTimeframe = timeframes.find((t) => t.id === activeTimeframe) || timeframes[0];
2812
2884
  if (isLoading) {
2813
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons15.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2885
+ return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
2814
2886
  }
2815
- return /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react50.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react50.default.createElement("div", null, /* @__PURE__ */ import_react50.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), timeframes.length > 0 && selectedTimeframe && onTimeframeChange && /* @__PURE__ */ import_react50.default.createElement(
2887
+ return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react52.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("h1", { className: " gradient-text text-xl mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription)), timeframes.length > 0 && selectedTimeframe && onTimeframeChange && /* @__PURE__ */ import_react52.default.createElement(
2816
2888
  "button",
2817
2889
  {
2818
2890
  onClick: () => setIsTimeframeModalOpen(true),
2819
2891
  className: "flex items-center gap-3 px-4 py-2 text-xs bg-white text-black outline-none rounded-full transition-colors hover:bg-neutral-50 shrink-0"
2820
2892
  },
2821
- /* @__PURE__ */ import_react50.default.createElement("span", null, selectedTimeframe.label),
2822
- /* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: import_core_free_icons15.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2823
- )), stats.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-5 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx, className: "p-6 flex flex-col gap-1 min-w-0" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 truncate " }, stat.label), /* @__PURE__ */ import_react50.default.createElement("p", { className: `text-xl tracking-tight truncate ${stat.valueClass || "text-black"}` }, stat.value))))), lists.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col gap-8 w-full max-w-4xl" }, lists.map((list, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx, className: "bg-white rounded-2xl p-6 flex flex-col min-w-0" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "text-neutral-400" }, list.icon), /* @__PURE__ */ import_react50.default.createElement("h2", { className: " text-[11px] text-black tracking-[0.2em] " }, list.title)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1 overflow-y-auto" }, list.items.length === 0 ? /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, list.emptyMessage) : list.items.map((item) => /* @__PURE__ */ import_react50.default.createElement("div", { key: item.id, className: "flex flex-col sm:flex-row sm:items-center justify-between py-4 gap-2 min-w-0 group" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.primaryText), /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate tracking-widest mt-0.5" }, item.secondaryText)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex items-center gap-4 shrink-0 pl-4" }, item.rightText && /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-xs text-black" }, item.rightText), item.rightBadge && /* @__PURE__ */ import_react50.default.createElement("span", { className: `text-[9px] tracking-widest px-2.5 py-1 rounded-full ${item.rightBadgeClass || "bg-neutral-50 text-neutral-600"}` }, item.rightBadge)))))))), isTimeframeModalOpen && timeframes.length > 0 && onTimeframeChange && /* @__PURE__ */ import_react50.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react50.default.createElement("h3", { className: " text-[14px] text-black tracking-tight" }, "Select Timeframe")), /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, timeframes.map((tf) => /* @__PURE__ */ import_react50.default.createElement(
2893
+ /* @__PURE__ */ import_react52.default.createElement("span", null, selectedTimeframe.label),
2894
+ /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.ArrowDown01Icon, size: 14, className: "text-neutral-400" })
2895
+ )), stats.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-2 md:grid-cols-5 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "p-6 flex flex-col gap-1 min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 truncate " }, stat.label), /* @__PURE__ */ import_react52.default.createElement("p", { className: `text-xl tracking-tight truncate ${stat.valueClass || "text-black"}` }, stat.value))))), lists.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-8 w-full max-w-4xl" }, lists.map((list, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "bg-white rounded-2xl p-6 flex flex-col min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "text-neutral-400" }, list.icon), /* @__PURE__ */ import_react52.default.createElement("h2", { className: " text-[11px] text-black tracking-[0.2em] " }, list.title)), /* @__PURE__ */ import_react52.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1 overflow-y-auto" }, list.items.length === 0 ? /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500 py-4" }, list.emptyMessage) : list.items.map((item) => /* @__PURE__ */ import_react52.default.createElement("div", { key: item.id, className: "flex flex-col sm:flex-row sm:items-center justify-between py-4 gap-2 min-w-0 group" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.primaryText), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate tracking-widest mt-0.5" }, item.secondaryText)), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-4 shrink-0 pl-4" }, item.rightText && /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-black" }, item.rightText), item.rightBadge && /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-[9px] tracking-widest px-2.5 py-1 rounded-full ${item.rightBadgeClass || "bg-neutral-50 text-neutral-600"}` }, item.rightBadge)))))))), isTimeframeModalOpen && timeframes.length > 0 && onTimeframeChange && /* @__PURE__ */ import_react52.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsTimeframeModalOpen(false) }), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " text-[14px] text-black tracking-tight" }, "Select Timeframe")), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 pb-2" }, timeframes.map((tf) => /* @__PURE__ */ import_react52.default.createElement(
2824
2896
  "button",
2825
2897
  {
2826
2898
  key: tf.id,
@@ -2830,9 +2902,9 @@ var UniversalDashboardPage = ({
2830
2902
  },
2831
2903
  className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTimeframe === tf.id ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
2832
2904
  },
2833
- /* @__PURE__ */ import_react50.default.createElement("span", { className: "truncate pr-2" }, tf.label),
2834
- activeTimeframe === tf.id && /* @__PURE__ */ import_react50.default.createElement("div", null)
2835
- ))), /* @__PURE__ */ import_react50.default.createElement("div", { className: "w-full flex border-t border-neutral-50" }, /* @__PURE__ */ import_react50.default.createElement(
2905
+ /* @__PURE__ */ import_react52.default.createElement("span", { className: "truncate pr-2" }, tf.label),
2906
+ activeTimeframe === tf.id && /* @__PURE__ */ import_react52.default.createElement("div", null)
2907
+ ))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full flex border-t border-neutral-50" }, /* @__PURE__ */ import_react52.default.createElement(
2836
2908
  "button",
2837
2909
  {
2838
2910
  onClick: () => setIsTimeframeModalOpen(false),
@@ -2843,9 +2915,9 @@ var UniversalDashboardPage = ({
2843
2915
  };
2844
2916
 
2845
2917
  // src/components/UniversalAgentConsole.tsx
2846
- var import_react52 = __toESM(require("react"));
2847
- var import_react53 = require("@hugeicons/react");
2848
- var import_core_free_icons16 = require("@hugeicons/core-free-icons");
2918
+ var import_react54 = __toESM(require("react"));
2919
+ var import_react55 = require("@hugeicons/react");
2920
+ var import_core_free_icons17 = require("@hugeicons/core-free-icons");
2849
2921
  var formatKeyName = (key) => key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
2850
2922
  var toTitleCaseSafe = (str) => {
2851
2923
  if (!str) return "";
@@ -2874,13 +2946,13 @@ var UniversalAgentConsole = ({
2874
2946
  onUploadArchives,
2875
2947
  onDeleteArchive
2876
2948
  }) => {
2877
- const archiveRef = (0, import_react52.useRef)(null);
2878
- const [pendingFiles, setPendingFiles] = (0, import_react52.useState)([]);
2879
- const [isUploading, setIsUploading] = (0, import_react52.useState)(false);
2880
- const [isActioning, setIsActioning] = (0, import_react52.useState)(false);
2881
- const [actionModal, setActionModal] = (0, import_react52.useState)(null);
2882
- const [actionMessage, setActionMessage] = (0, import_react52.useState)("");
2883
- const [archiveToDelete, setArchiveToDelete] = (0, import_react52.useState)(null);
2949
+ const archiveRef = (0, import_react54.useRef)(null);
2950
+ const [pendingFiles, setPendingFiles] = (0, import_react54.useState)([]);
2951
+ const [isUploading, setIsUploading] = (0, import_react54.useState)(false);
2952
+ const [isActioning, setIsActioning] = (0, import_react54.useState)(false);
2953
+ const [actionModal, setActionModal] = (0, import_react54.useState)(null);
2954
+ const [actionMessage, setActionMessage] = (0, import_react54.useState)("");
2955
+ const [archiveToDelete, setArchiveToDelete] = (0, import_react54.useState)(null);
2884
2956
  const handleFileSelect = (e) => {
2885
2957
  if (e.target.files && e.target.files.length > 0) {
2886
2958
  setPendingFiles((prev) => [...prev, ...Array.from(e.target.files)]);
@@ -2906,36 +2978,36 @@ var UniversalAgentConsole = ({
2906
2978
  }
2907
2979
  };
2908
2980
  const DynamicArrayAccordion = ({ items, parentKey }) => {
2909
- const [activeFAQ, setActiveFAQ] = (0, import_react52.useState)(null);
2910
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col relative z-10 bg-transparent w-full mt-2 border-t border-neutral-100" }, items.map((item, index) => {
2981
+ const [activeFAQ, setActiveFAQ] = (0, import_react54.useState)(null);
2982
+ return /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col relative z-10 bg-transparent w-full mt-2 border-t border-neutral-100" }, items.map((item, index) => {
2911
2983
  const isOpen = activeFAQ === index;
2912
2984
  let label = `${parentKey ? formatKeyName(parentKey) : "Item"} ${index + 1}`;
2913
2985
  if (item.fullName) label = toTitleCaseSafe(item.fullName);
2914
2986
  else if (item.role) label = item.role;
2915
2987
  else if (item.proposedName) label = toTitleCaseSafe(item.proposedName);
2916
- return /* @__PURE__ */ import_react52.default.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ import_react52.default.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ import_react52.default.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.ArrowDown01Icon, size: 16 }))), /* @__PURE__ */ import_react52.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 md:pb-8 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "pt-2 flex flex-col gap-3 pr-4 md:pr-12" }, renderDynamicObject(item)))));
2988
+ return /* @__PURE__ */ import_react54.default.createElement("div", { key: index, className: `transition-all duration-300 ${index !== items.length - 1 ? "border-b border-neutral-100" : ""}` }, /* @__PURE__ */ import_react54.default.createElement("button", { className: "flex items-center justify-between w-full gap-4 text-left py-5 md:py-6 group outline-none bg-transparent", onClick: () => setActiveFAQ(isOpen ? null : index) }, /* @__PURE__ */ import_react54.default.createElement("span", { className: `text-[13px] md:text-[14px] transition-colors ${isOpen ? "text-black" : "text-neutral-700 group-hover:text-black"}` }, label), /* @__PURE__ */ import_react54.default.createElement("div", { className: `shrink-0 flex items-center justify-center w-8 h-8 rounded-full border transition-all duration-300 ${isOpen ? "rotate-180 border-black text-black" : "border-neutral-300 text-neutral-500"}` }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.ArrowDown01Icon, size: 16 }))), /* @__PURE__ */ import_react54.default.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 md:pb-8 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "pt-2 flex flex-col gap-3 pr-4 md:pr-12" }, renderDynamicObject(item)))));
2917
2989
  }));
2918
2990
  };
2919
2991
  const renderValue = (key, value) => {
2920
2992
  if (value === null || value === void 0 || value === "") return null;
2921
2993
  if (typeof value === "string") {
2922
- if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ import_react52.default.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors w-fit outline-none mt-2" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Download01Icon, size: 14 }), " Download File");
2923
- if (key.toLowerCase().includes("name") && !value.includes("@")) return /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(value));
2924
- return /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, value);
2994
+ if (value.startsWith("http") || value.startsWith("data:image")) return /* @__PURE__ */ import_react54.default.createElement("a", { href: value, download: true, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 px-5 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors w-fit outline-none mt-2" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Download01Icon, size: 14 }), " Download File");
2995
+ if (key.toLowerCase().includes("name") && !value.includes("@")) return /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(value));
2996
+ return /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, value);
2925
2997
  }
2926
2998
  if (Array.isArray(value)) {
2927
2999
  const validItems = value.filter((item) => item !== null && item !== void 0 && item !== "");
2928
3000
  if (validItems.length === 0) return null;
2929
- if (typeof validItems[0] === "string") return /* @__PURE__ */ import_react52.default.createElement("ul", { className: "list-disc pl-4 mt-1" }, validItems.map((v, i) => /* @__PURE__ */ import_react52.default.createElement("li", { key: i, className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(v))));
2930
- return /* @__PURE__ */ import_react52.default.createElement(DynamicArrayAccordion, { items: validItems, parentKey: key });
3001
+ if (typeof validItems[0] === "string") return /* @__PURE__ */ import_react54.default.createElement("ul", { className: "list-disc pl-4 mt-1" }, validItems.map((v, i) => /* @__PURE__ */ import_react54.default.createElement("li", { key: i, className: "text-[11px] md:text-[13px] leading-[1.8] text-neutral-600" }, toTitleCaseSafe(v))));
3002
+ return /* @__PURE__ */ import_react54.default.createElement(DynamicArrayAccordion, { items: validItems, parentKey: key });
2931
3003
  }
2932
3004
  if (typeof value === "object") {
2933
3005
  if (Object.keys(value).length === 0) return null;
2934
3006
  const renderedObj = renderDynamicObject(value);
2935
3007
  if (!renderedObj || Array.isArray(renderedObj) && renderedObj.length === 0) return null;
2936
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-3 mt-1 w-full border-l border-neutral-100 pl-4 py-2" }, renderedObj);
3008
+ return /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-3 mt-1 w-full border-l border-neutral-100 pl-4 py-2" }, renderedObj);
2937
3009
  }
2938
- return /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-sm text-black" }, String(value));
3010
+ return /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-sm text-black" }, String(value));
2939
3011
  };
2940
3012
  const renderDynamicObject = (obj) => {
2941
3013
  if (!obj) return null;
@@ -2946,22 +3018,22 @@ var UniversalAgentConsole = ({
2946
3018
  return true;
2947
3019
  });
2948
3020
  if (entries.length === 0) return null;
2949
- return entries.map(([k, v]) => /* @__PURE__ */ import_react52.default.createElement("div", { key: k, className: "flex flex-col items-start min-w-0 wrap-break-word w-full mb-3 last:mb-0" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 " }, formatKeyName(k)), renderValue(k, v)));
3021
+ return entries.map(([k, v]) => /* @__PURE__ */ import_react54.default.createElement("div", { key: k, className: "flex flex-col items-start min-w-0 wrap-break-word w-full mb-3 last:mb-0" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 " }, formatKeyName(k)), renderValue(k, v)));
2950
3022
  };
2951
- return /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react52.default.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ import_react52.default.createElement("h1", { className: " text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full rounded-2xl max-w-5xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react52.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 truncate " }, stat.label), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xl text-black tracking-tight truncate" }, stat.value)))))), tabs.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-6" }, tabs.map((tab) => /* @__PURE__ */ import_react52.default.createElement("button", { key: tab.id, onClick: () => onTabChange(tab.id), className: `pb-3 text-sm transition-colors outline-none ${activeTab === tab.id ? "text-black border-b border-black" : "text-neutral-400 hover:text-black"}` }, tab.label))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full bg-white rounded-2xl max-w-5xl overflow-hidden flex flex-col min-h-100" }, isLoadingList ? /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 32, className: "animate-spin text-black" })) : listData.length === 0 ? /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex-1 flex justify-center items-center text-neutral-500 text-sm py-20" }, "No matching applications found.")) : /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, /* @__PURE__ */ import_react52.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1" }, listData.map((item) => /* @__PURE__ */ import_react52.default.createElement("div", { key: item.id, onClick: () => onRowClick(item.id), className: "flex items-center justify-between p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.title), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500 truncate mt-1" }, item.subtitle)), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 rounded-full ${item.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, item.status.replace(/_/g, " ")), /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[11px] text-neutral-400 mt-1" }, item.date))))), totalPages > 1 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-between p-5 bg-neutral-50/50" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 14 }))))))), currentView === "details" && selectedApp && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full bg-white rounded-2xl p-6 sm:p-10 animate-in fade-in duration-300 max-w-5xl flex flex-col" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-between gap-4 pb-6" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => {
3023
+ return /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react54.default.createElement(ManagedToaster, null), currentView === "list" && /* @__PURE__ */ import_react54.default.createElement(import_react54.default.Fragment, null, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col items-start gap-1" }, /* @__PURE__ */ import_react54.default.createElement("h1", { className: " text-xl text-black tracking-tight" }, headerTitle), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-sm text-neutral-500" }, headerDescription)), stats.length > 0 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full rounded-2xl max-w-5xl overflow-hidden bg-white" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, stats.map((stat, idx) => /* @__PURE__ */ import_react54.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react54.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 truncate " }, stat.label), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xl text-black tracking-tight truncate" }, stat.value)))))), tabs.length > 0 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center gap-6" }, tabs.map((tab) => /* @__PURE__ */ import_react54.default.createElement("button", { key: tab.id, onClick: () => onTabChange(tab.id), className: `pb-3 text-sm transition-colors outline-none ${activeTab === tab.id ? "text-black border-b border-black" : "text-neutral-400 hover:text-black"}` }, tab.label))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full bg-white rounded-2xl max-w-5xl overflow-hidden flex flex-col min-h-100" }, isLoadingList ? /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Loading03Icon, size: 32, className: "animate-spin text-black" })) : listData.length === 0 ? /* @__PURE__ */ import_react54.default.createElement(import_react54.default.Fragment, null, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex-1 flex justify-center items-center text-neutral-500 text-sm py-20" }, "No matching applications found.")) : /* @__PURE__ */ import_react54.default.createElement(import_react54.default.Fragment, null, /* @__PURE__ */ import_react54.default.createElement("div", { className: "divide-y divide-neutral-100 flex-1" }, listData.map((item) => /* @__PURE__ */ import_react54.default.createElement("div", { key: item.id, onClick: () => onRowClick(item.id), className: "flex items-center justify-between p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-sm text-black truncate pr-4" }, item.title), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500 truncate mt-1" }, item.subtitle)), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col items-end gap-1 shrink-0 pl-4" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: `text-[11px] tracking-widest px-3 py-1 rounded-full ${item.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, item.status.replace(/_/g, " ")), /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-[11px] text-neutral-400 mt-1" }, item.date))))), totalPages > 1 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center justify-between p-5 bg-neutral-50/50" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => onPageChange(currentPage - 1), disabled: currentPage === 1, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => onPageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.ArrowRight01Icon, size: 14 }))))))), currentView === "details" && selectedApp && /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full bg-white rounded-2xl p-6 sm:p-10 animate-in fade-in duration-300 max-w-5xl flex flex-col" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center justify-between gap-4 pb-6" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => {
2952
3024
  onBackToList();
2953
3025
  setPendingFiles([]);
2954
- }, className: "flex items-center gap-2 text-[11px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none " }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 14 }), " Back to List"), /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-[11px] tracking-widest px-4 py-1.5 rounded-full ${selectedApp.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, selectedApp.status.replace(/_/g, " "))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-2 mb-8" }, /* @__PURE__ */ import_react52.default.createElement("h2", { className: " text-xl text-black tracking-tight" }, selectedApp.name || selectedApp.title), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-neutral-500" }, selectedApp.type ? selectedApp.type.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase()) : selectedApp.subtitle)), selectedApp.agentId === currentAgentId && selectedApp.metadata && Object.keys(selectedApp.metadata).length > 0 ? /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-5" }, renderDynamicObject(selectedApp.metadata)) : selectedApp.agentId === currentAgentId ? /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-5" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-neutral-500" }, "No application data extracted.")) : null, selectedApp.agentId && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-4 pt-8 mt-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-1 mb-4" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " text-sm text-black" }, "Official Archives"), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload final certificates or documents. Once marked completed, the archive unlocks for the user.")), selectedApp.archives?.map((arch) => /* @__PURE__ */ import_react52.default.createElement("div", { key: arch.id, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.File02Icon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react52.default.createElement("span", { className: "truncate pr-2" }, arch.name)), /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setArchiveToDelete(arch), className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Delete02Icon, size: 16 })))), pendingFiles.map((file, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx, className: "flex items-center justify-between text-neutral-600 text-sm w-full" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.AttachmentIcon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react52.default.createElement("span", { className: "truncate pr-2" }, file.name)), /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setPendingFiles((p) => p.filter((_, i) => i !== idx)), className: "text-neutral-400 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Cancel01Icon, size: 16 })))), /* @__PURE__ */ import_react52.default.createElement("input", { type: "file", multiple: true, ref: archiveRef, onChange: handleFileSelect, className: "hidden", accept: "application/pdf,image/*" }), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => archiveRef.current?.click(), disabled: selectedApp.status !== "COMPLETED" || isUploading, className: "flex items-center justify-center gap-3 p-4 border border-neutral-100 rounded-full hover:bg-neutral-50 transition-colors text-black text-sm w-full outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Upload01Icon, size: 18, className: "text-neutral-400" }), " Select Files to Upload"), pendingFiles.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full sm:w-auto shrink-0" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setPendingFiles([]), disabled: isUploading, className: "px-6 py-2 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-100 outline-none w-full sm:w-auto " }, "Clear All"), /* @__PURE__ */ import_react52.default.createElement(ThreeDActionButton, { onClick: executeUpload, disabled: isUploading, isLoading: isUploading, className: "w-full sm:w-auto" }, "Upload ", pendingFiles.length, " File(s)")))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-6" }, !selectedApp.agentId ? /* @__PURE__ */ import_react52.default.createElement(ThreeDActionButton, { onClick: async () => {
3026
+ }, className: "flex items-center gap-2 text-[11px] text-neutral-400 hover:text-black tracking-widest transition-colors outline-none " }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.ArrowLeft01Icon, size: 14 }), " Back to List"), /* @__PURE__ */ import_react54.default.createElement("span", { className: `text-[11px] tracking-widest px-4 py-1.5 rounded-full ${selectedApp.status === "COMPLETED" ? "bg-emerald-50 text-emerald-600" : "bg-neutral-50 text-neutral-600"}` }, selectedApp.status.replace(/_/g, " "))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-2 mb-8" }, /* @__PURE__ */ import_react54.default.createElement("h2", { className: " text-xl text-black tracking-tight" }, selectedApp.name || selectedApp.title), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-sm text-neutral-500" }, selectedApp.type ? selectedApp.type.replace(/_/g, " ").toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase()) : selectedApp.subtitle)), selectedApp.agentId === currentAgentId && selectedApp.metadata && Object.keys(selectedApp.metadata).length > 0 ? /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-5" }, renderDynamicObject(selectedApp.metadata)) : selectedApp.agentId === currentAgentId ? /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-5" }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-sm text-neutral-500" }, "No application data extracted.")) : null, selectedApp.agentId && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-4 pt-8 mt-4 border-t border-neutral-100" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-1 mb-4" }, /* @__PURE__ */ import_react54.default.createElement("h3", { className: " text-sm text-black" }, "Official Archives"), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload final certificates or documents. Once marked completed, the archive unlocks for the user.")), selectedApp.archives?.map((arch) => /* @__PURE__ */ import_react54.default.createElement("div", { key: arch.id, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.File02Icon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react54.default.createElement("span", { className: "truncate pr-2" }, arch.name)), /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setArchiveToDelete(arch), className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Delete02Icon, size: 16 })))), pendingFiles.map((file, idx) => /* @__PURE__ */ import_react54.default.createElement("div", { key: idx, className: "flex items-center justify-between text-neutral-600 text-sm w-full" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.AttachmentIcon, size: 18, className: "shrink-0" }), /* @__PURE__ */ import_react54.default.createElement("span", { className: "truncate pr-2" }, file.name)), /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setPendingFiles((p) => p.filter((_, i) => i !== idx)), className: "text-neutral-400 hover:text-red-500 transition-colors p-1 outline-none shrink-0" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Cancel01Icon, size: 16 })))), /* @__PURE__ */ import_react54.default.createElement("input", { type: "file", multiple: true, ref: archiveRef, onChange: handleFileSelect, className: "hidden", accept: "application/pdf,image/*" }), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => archiveRef.current?.click(), disabled: selectedApp.status !== "COMPLETED" || isUploading, className: "flex items-center justify-center gap-3 p-4 border border-neutral-100 rounded-full hover:bg-neutral-50 transition-colors text-black text-sm w-full outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Upload01Icon, size: 18, className: "text-neutral-400" }), " Select Files to Upload"), pendingFiles.length > 0 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full sm:w-auto shrink-0" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setPendingFiles([]), disabled: isUploading, className: "px-6 py-2 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-100 outline-none w-full sm:w-auto " }, "Clear All"), /* @__PURE__ */ import_react54.default.createElement(ThreeDActionButton, { onClick: executeUpload, disabled: isUploading, isLoading: isUploading, className: "w-full sm:w-auto" }, "Upload ", pendingFiles.length, " File(s)")))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mt-8 pt-6" }, !selectedApp.agentId ? /* @__PURE__ */ import_react54.default.createElement(ThreeDActionButton, { onClick: async () => {
2955
3027
  setIsActioning(true);
2956
3028
  await onAcceptApplication(selectedApp.id);
2957
3029
  setIsActioning(false);
2958
- }, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: import_core_free_icons16.Cancel01Icon, size: 16, className: "text-red-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react52.default.createElement("div", null, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-sm text-red-700" }, "Application Taken"), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-red-600 mt-1" }, "Currently handled by ", selectedApp.agentName || "another agent", "."))) : /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full flex flex-col sm:flex-row items-center gap-4 justify-between" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, "You are the assigned agent."), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-end gap-3 w-full sm:w-auto" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setActionModal("query"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 " }, "Query"), /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setActionModal("reject"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 " }, "Reject"), /* @__PURE__ */ import_react52.default.createElement(ThreeDActionButton, { onClick: () => setActionModal("success"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto" }, "Mark Success"))))), actionModal && /* @__PURE__ */ import_react52.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setActionModal(null) }), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " text-lg text-black tracking-tight capitalize mb-2" }, actionModal === "success" ? "Complete Application" : `${actionModal} Application`), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, actionModal === "success" ? "Are you sure you want to mark this application as successfully completed?" : `Please provide a clear reason for the user. They will see this message and be asked to fix their application.`)), (actionModal === "query" || actionModal === "reject") && /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6 pb-2" }, /* @__PURE__ */ import_react52.default.createElement(TextInput, { label: "Reason for Action", value: actionMessage, onChange: setActionMessage, placeholder: "Enter your reason here...", disabled: isActioning })), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center p-6 pt-4 gap-3" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setActionModal(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react52.default.createElement(ThreeDActionButton, { onClick: async () => {
3030
+ }, disabled: isActioning, isLoading: isActioning, className: "w-full sm:w-auto" }, "Accept Application") : selectedApp.agentId !== currentAgentId ? /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full p-4 border border-red-100 bg-red-50/30 rounded-xl flex items-start gap-3" }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Cancel01Icon, size: 16, className: "text-red-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react54.default.createElement("div", null, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-sm text-red-700" }, "Application Taken"), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-red-600 mt-1" }, "Currently handled by ", selectedApp.agentName || "another agent", "."))) : /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full flex flex-col sm:flex-row items-center gap-4 justify-between" }, /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500" }, "You are the assigned agent."), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-end gap-3 w-full sm:w-auto" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setActionModal("query"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 " }, "Query"), /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setActionModal("reject"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto px-6 py-2 bg-white border border-neutral-100 text-neutral-600 text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-30 " }, "Reject"), /* @__PURE__ */ import_react54.default.createElement(ThreeDActionButton, { onClick: () => setActionModal("success"), disabled: selectedApp.status === "COMPLETED", className: "w-full sm:w-auto" }, "Mark Success"))))), actionModal && /* @__PURE__ */ import_react54.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setActionModal(null) }), /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react54.default.createElement("h3", { className: " text-lg text-black tracking-tight capitalize mb-2" }, actionModal === "success" ? "Complete Application" : `${actionModal} Application`), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500" }, actionModal === "success" ? "Are you sure you want to mark this application as successfully completed?" : `Please provide a clear reason for the user. They will see this message and be asked to fix their application.`)), (actionModal === "query" || actionModal === "reject") && /* @__PURE__ */ import_react54.default.createElement("div", { className: "p-6 pb-2" }, /* @__PURE__ */ import_react54.default.createElement(TextInput, { label: "Reason for Action", value: actionMessage, onChange: setActionMessage, placeholder: "Enter your reason here...", disabled: isActioning })), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center p-6 pt-4 gap-3" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setActionModal(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react54.default.createElement(ThreeDActionButton, { onClick: async () => {
2959
3031
  setIsActioning(true);
2960
3032
  await onUpdateStatus(selectedApp.id, actionModal === "success" ? "COMPLETED" : actionModal === "reject" ? "REJECTED" : "QUEUED", actionMessage);
2961
3033
  setIsActioning(false);
2962
3034
  setActionModal(null);
2963
3035
  setActionMessage("");
2964
- }, disabled: isActioning || (actionModal === "query" || actionModal === "reject") && actionMessage.trim().length < 5, isLoading: isActioning, className: "flex-1" }, "Confirm ", actionModal)))), archiveToDelete && /* @__PURE__ */ import_react52.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setArchiveToDelete(null) }), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: " text-lg text-black tracking-tight mb-2" }, "Delete Document?"), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500" }, 'Are you sure you want to permanently delete "', archiveToDelete.name, '"?')), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center p-6 gap-3" }, /* @__PURE__ */ import_react52.default.createElement("button", { onClick: () => setArchiveToDelete(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react52.default.createElement(ThreeDActionButton, { onClick: async () => {
3036
+ }, disabled: isActioning || (actionModal === "query" || actionModal === "reject") && actionMessage.trim().length < 5, isLoading: isActioning, className: "flex-1" }, "Confirm ", actionModal)))), archiveToDelete && /* @__PURE__ */ import_react54.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isActioning && setArchiveToDelete(null) }), /* @__PURE__ */ import_react54.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 text-left" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react54.default.createElement("h3", { className: " text-lg text-black tracking-tight mb-2" }, "Delete Document?"), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500" }, 'Are you sure you want to permanently delete "', archiveToDelete.name, '"?')), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center p-6 gap-3" }, /* @__PURE__ */ import_react54.default.createElement("button", { onClick: () => setArchiveToDelete(null), disabled: isActioning, className: "flex-1 py-3 text-[11px] tracking-widest text-neutral-600 rounded-full hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50" }, "Cancel"), /* @__PURE__ */ import_react54.default.createElement(ThreeDActionButton, { onClick: async () => {
2965
3037
  setIsActioning(true);
2966
3038
  await onDeleteArchive(selectedApp.id, archiveToDelete.id);
2967
3039
  setIsActioning(false);
@@ -2971,66 +3043,6 @@ var UniversalAgentConsole = ({
2971
3043
 
2972
3044
  // src/components/UniversalOverviewPage.tsx
2973
3045
  var import_react56 = __toESM(require("react"));
2974
-
2975
- // src/components/Banner.tsx
2976
- var import_react54 = __toESM(require("react"));
2977
- var import_react55 = require("@hugeicons/react");
2978
- var import_core_free_icons17 = require("@hugeicons/core-free-icons");
2979
- var Banner = ({
2980
- title,
2981
- message,
2982
- type,
2983
- icon,
2984
- isDismissible = true,
2985
- onDismiss,
2986
- action
2987
- }) => {
2988
- const [isVisible, setIsVisible] = (0, import_react54.useState)(true);
2989
- if (!isVisible) return null;
2990
- const handleDismiss = () => {
2991
- setIsVisible(false);
2992
- if (onDismiss) onDismiss();
2993
- };
2994
- const config = {
2995
- success: {
2996
- bg: "bg-emerald-50",
2997
- iconColor: "text-emerald-600",
2998
- titleColor: "text-emerald-900",
2999
- msgColor: "text-emerald-700",
3000
- defaultIcon: import_core_free_icons17.CheckmarkBadge01Icon,
3001
- closeHover: "hover:bg-emerald-100 text-emerald-500"
3002
- },
3003
- warning: {
3004
- bg: "bg-amber-50",
3005
- iconColor: "text-amber-600",
3006
- titleColor: "text-amber-900",
3007
- msgColor: "text-amber-700",
3008
- defaultIcon: import_core_free_icons17.InformationCircleIcon,
3009
- closeHover: "hover:bg-amber-100 text-amber-500"
3010
- },
3011
- alert: {
3012
- bg: "bg-red-50",
3013
- iconColor: "text-red-600",
3014
- titleColor: "text-red-900",
3015
- msgColor: "text-red-700",
3016
- defaultIcon: import_core_free_icons17.Alert02Icon,
3017
- closeHover: "hover:bg-red-100 text-red-500"
3018
- }
3019
- };
3020
- const currentConfig = config[type];
3021
- const IconToUse = icon || currentConfig.defaultIcon;
3022
- return /* @__PURE__ */ import_react54.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react54.default.createElement("div", { className: `shrink-0 mt-0.5 ${currentConfig.iconColor}` }, /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: IconToUse, size: 20 })), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex-1 flex flex-col min-w-0 pr-6" }, /* @__PURE__ */ import_react54.default.createElement("h4", { className: `text-sm tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react54.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react54.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react54.default.createElement(
3023
- "button",
3024
- {
3025
- onClick: handleDismiss,
3026
- className: `absolute top-3 right-3 p-1.5 rounded-full transition-colors outline-none shrink-0 ${currentConfig.closeHover}`,
3027
- "aria-label": "Dismiss banner"
3028
- },
3029
- /* @__PURE__ */ import_react54.default.createElement(import_react55.HugeiconsIcon, { icon: import_core_free_icons17.Cancel01Icon, size: 16 })
3030
- ));
3031
- };
3032
-
3033
- // src/components/UniversalOverviewPage.tsx
3034
3046
  var UniversalOverviewPage = ({
3035
3047
  headerTitle,
3036
3048
  headerDescription,
@@ -3041,7 +3053,7 @@ var UniversalOverviewPage = ({
3041
3053
  alerts = [],
3042
3054
  banner
3043
3055
  }) => {
3044
- return /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react56.default.createElement("div", null, /* @__PURE__ */ import_react56.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-5xl bg-white" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ import_react56.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react56.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 truncate " }, stat.label), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-lg md:text-xl text-black tracking-tight truncate" }, stat.value)))))), banner && banner.isVisible && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react56.default.createElement(
3056
+ return /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in duration-300 pb-10" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex items-center justify-between gap-4" }, /* @__PURE__ */ import_react56.default.createElement("div", null, /* @__PURE__ */ import_react56.default.createElement("h1", { className: " gradient-text text-xl mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), quickStats.length > 0 && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full rounded-2xl overflow-hidden max-w-5xl bg-white" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-neutral-100" }, quickStats.map((stat, idx) => /* @__PURE__ */ import_react56.default.createElement("div", { key: idx, className: "p-6 flex items-center gap-4 hover:bg-neutral-50/50 transition-colors min-w-0" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-12 h-12 rounded-full border border-neutral-100 bg-white flex items-center justify-center text-black shrink-0" }, stat.icon), /* @__PURE__ */ import_react56.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-400 mb-1 truncate " }, stat.label), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-lg md:text-xl text-black tracking-tight truncate" }, stat.value)))))), banner && banner.isVisible && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react56.default.createElement(
3045
3057
  Banner,
3046
3058
  {
3047
3059
  title: banner.title,
@@ -3162,7 +3174,7 @@ var UniversalLookupPage = ({
3162
3174
  }) => {
3163
3175
  const [isTypeModalOpen, setIsTypeModalOpen] = (0, import_react59.useState)(false);
3164
3176
  const currentOptionLabel = searchOptions.find((opt) => opt.value === selectedSearchType)?.label || "Select Type";
3165
- return /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 pb-20" }, /* @__PURE__ */ import_react59.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react59.default.createElement("h1", { className: " text-xl text-black mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, headerDescription))), /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full max-w-5xl pb-8" }, /* @__PURE__ */ import_react59.default.createElement("form", { className: "flex flex-col gap-6", onSubmit: onSearch, autoComplete: "off" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ import_react59.default.createElement(
3177
+ return /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 pb-20" }, /* @__PURE__ */ import_react59.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react59.default.createElement("h1", { className: " gradient-text text-xl mb-1 truncate tracking-tight" }, headerTitle), /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, headerDescription))), /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full max-w-5xl pb-8" }, /* @__PURE__ */ import_react59.default.createElement("form", { className: "flex flex-col gap-6", onSubmit: onSearch, autoComplete: "off" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ import_react59.default.createElement(
3166
3178
  "button",
3167
3179
  {
3168
3180
  type: "button",
@@ -3594,13 +3606,13 @@ var import_core_free_icons25 = require("@hugeicons/core-free-icons");
3594
3606
  var AiApproveDecline = ({ suggestionTitle, suggestionValue, onApprove, onDecline, onEdit }) => {
3595
3607
  const [isEditing, setIsEditing] = (0, import_react72.useState)(false);
3596
3608
  const [editVal, setEditVal] = (0, import_react72.useState)(typeof suggestionValue === "string" ? suggestionValue : "");
3597
- return /* @__PURE__ */ import_react72.default.createElement("div", { className: "border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-widest text-purple-600 block mb-1 " }, "AI Suggestion: ", suggestionTitle), !isEditing ? /* @__PURE__ */ import_react72.default.createElement("div", { className: "text-sm text-black" }, suggestionValue) : /* @__PURE__ */ import_react72.default.createElement(
3609
+ return /* @__PURE__ */ import_react72.default.createElement("div", { className: "border border-orange-100 bg-linear-to-bl from-orange-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-widest text-orange-600 block mb-1 " }, "AI Suggestion: ", suggestionTitle), !isEditing ? /* @__PURE__ */ import_react72.default.createElement("div", { className: "text-sm text-black" }, suggestionValue) : /* @__PURE__ */ import_react72.default.createElement(
3598
3610
  "input",
3599
3611
  {
3600
3612
  type: "text",
3601
3613
  value: editVal,
3602
3614
  onChange: (e) => setEditVal(e.target.value),
3603
- className: "w-full text-sm p-2 border-b border-purple-200 bg-transparent outline-none focus:border-purple-400 transition-colors",
3615
+ className: "w-full text-sm p-2 border-b border-orange-200 bg-transparent outline-none focus:border-orange-400 transition-colors",
3604
3616
  autoFocus: true
3605
3617
  }
3606
3618
  )), /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex items-center gap-1 mt-2" }, !isEditing ? /* @__PURE__ */ import_react72.default.createElement(import_react72.default.Fragment, null, /* @__PURE__ */ import_react72.default.createElement("button", { onClick: onApprove, title: "Approve", className: "p-1.5 text-black hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.CheckmarkCircle01Icon, size: 28 })), /* @__PURE__ */ import_react72.default.createElement("button", { onClick: onDecline, title: "Decline", className: "p-1.5 text-neutral-400 hover:text-neutral-400 hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 28 })), onEdit && /* @__PURE__ */ import_react72.default.createElement("button", { onClick: () => setIsEditing(true), title: "Edit", className: "ml-auto p-1.5 text-neutral-400 hover:text-black hover:bg-neutral-100 rounded-full transition-colors outline-none" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.PencilEdit01Icon, size: 18 }))) : /* @__PURE__ */ import_react72.default.createElement(import_react72.default.Fragment, null, /* @__PURE__ */ import_react72.default.createElement("button", { onClick: () => {
@@ -3614,7 +3626,7 @@ var import_react74 = __toESM(require("react"));
3614
3626
  var import_react75 = require("@hugeicons/react");
3615
3627
  var import_core_free_icons26 = require("@hugeicons/core-free-icons");
3616
3628
  var AiStageCheck = ({ tasks }) => {
3617
- return /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col gap-3 p-5 rounded-2xl border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white relative overflow-hidden" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-[11px] tracking-widest text-purple-600 mb-1 " }, "AI Processing"), tasks.map((task) => /* @__PURE__ */ import_react74.default.createElement("div", { key: task.id, className: "flex items-center gap-3" }, task.status === "pending" && /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-4 h-4 rounded-full border border-purple-200" }), task.status === "loading" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.Loading03Icon, size: 16, className: "animate-spin text-purple-500" }), task.status === "success" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.CheckmarkCircle02Icon, size: 16, className: "text-emerald-500" }), task.status === "error" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.CancelCircleIcon, size: 16, className: "text-red-500" }), /* @__PURE__ */ import_react74.default.createElement("span", { className: `text-xs transition-colors ${task.status === "success" ? "text-black" : task.status === "loading" ? "text-purple-700" : "text-neutral-500"}` }, task.label))));
3629
+ return /* @__PURE__ */ import_react74.default.createElement("div", { className: "flex flex-col gap-3 p-5 rounded-2xl border border-orange-100 bg-linear-to-bl from-orange-50/80 via-white to-white relative overflow-hidden" }, /* @__PURE__ */ import_react74.default.createElement("span", { className: "text-[11px] tracking-widest text-orange-600 mb-1 " }, "AI Processing"), tasks.map((task) => /* @__PURE__ */ import_react74.default.createElement("div", { key: task.id, className: "flex items-center gap-3" }, task.status === "pending" && /* @__PURE__ */ import_react74.default.createElement("div", { className: "w-4 h-4 rounded-full border border-orange-200" }), task.status === "loading" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.Loading03Icon, size: 16, className: "animate-spin text-orange-500" }), task.status === "success" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.CheckmarkCircle02Icon, size: 16, className: "text-emerald-500" }), task.status === "error" && /* @__PURE__ */ import_react74.default.createElement(import_react75.HugeiconsIcon, { icon: import_core_free_icons26.CancelCircleIcon, size: 16, className: "text-red-500" }), /* @__PURE__ */ import_react74.default.createElement("span", { className: `text-xs transition-colors ${task.status === "success" ? "text-black" : task.status === "loading" ? "text-orange-700" : "text-neutral-500"}` }, task.label))));
3618
3630
  };
3619
3631
 
3620
3632
  // src/components/Stagger.tsx
@@ -4227,7 +4239,7 @@ var UniversalRegistrationFlow = ({
4227
4239
  const newForm = { ...formData, natureOfBusiness: suggestedNature };
4228
4240
  setFormData(newForm);
4229
4241
  approveSection("natureApproved", newForm);
4230
- }, onDecline: () => setSuggestedNature(null) }))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "pr-4" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.natureOfBusiness?.specificLabel), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 mt-1" }, formData.businessDesc)), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("natureApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), formState.natureApproved && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "What name would you like to register?")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 -mt-2" }, "Provide two options. We will verify availability against the official registry."), !formState.nameApproved ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Proposed Name 1 (Preferred)", value: formData.proposedName, onChange: (v) => setFormData({ ...formData, proposedName: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Proposed Name 2 (Alternative)", value: formData.proposedName2, onChange: (v) => setFormData({ ...formData, proposedName2: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => handleCheckNames(formData.proposedName), disabled: !formData.proposedName || !formData.proposedName2 || isCheckingName || isCheckingQualifier || isReadOnly, isLoading: isCheckingQualifier || isCheckingName, className: "w-fit" }, "Check Availability")), (isCheckingQualifier || isCheckingName) && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: [{ id: "1", label: "AI Qualifier Pre-check...", status: isCheckingQualifier ? "loading" : "success" }, { id: "2", label: "Checking Official Registry Database...", status: isCheckingName ? "loading" : "pending" }, { id: "3", label: "Fallback Checking Public Database...", status: isCheckingName ? "loading" : "pending" }, { id: "4", label: "Validation Status...", status: isCheckingName ? "loading" : "pending" }] })), qualifierCheckResult && /* @__PURE__ */ import_react78.default.createElement("div", { className: "mt-2 animate-in fade-in" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-purple-600 block mb-1" }, "AI Suggestion: Structural Qualifier Missing"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black mb-3" }, "Nigerian registrations require a structural qualifier to be approved."), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-2" }, (qualifierCheckResult.suggestions || []).map((alt, i) => /* @__PURE__ */ import_react78.default.createElement("button", { key: i, onClick: () => setFormData({ ...formData, proposedName: alt }), className: "text-left px-4 py-2 border border-neutral-100 rounded-full hover:border-black text-sm transition-colors outline-none" }, alt)))), /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => setQualifierCheckResult(null), className: "w-fit text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors mt-2 outline-none" }, "Edit Name Manually"))), nameCheckResult && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in" }, nameCheckResult.status === "APPROVED" || nameCheckResult.status === "APPROVED_WARNING" || nameCheckResult.status === "SKIPPED" ? /* @__PURE__ */ import_react78.default.createElement(AiApproveDecline, { suggestionTitle: nameCheckResult.status === "APPROVED" ? "Name Available!" : "Fallback Approval", suggestionValue: /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: `mb-1 ${nameCheckResult.status === "APPROVED" ? "text-emerald-600 " : "text-orange-500 "}` }, nameCheckResult.status === "APPROVED" ? "Excellent chance of approval." : "Validation Bypassed / Fallback."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-600" }, nameCheckResult.message), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-600 mt-2 " }, "Proposed Option: ", nameCheckResult.approvedOption)), onApprove: () => {
4242
+ }, onDecline: () => setSuggestedNature(null) }))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "pr-4" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.natureOfBusiness?.specificLabel), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 mt-1" }, formData.businessDesc)), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("natureApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), formState.natureApproved && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "What name would you like to register?")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 -mt-2" }, "Provide two options. We will verify availability against the official registry."), !formState.nameApproved ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Proposed Name 1 (Preferred)", value: formData.proposedName, onChange: (v) => setFormData({ ...formData, proposedName: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Proposed Name 2 (Alternative)", value: formData.proposedName2, onChange: (v) => setFormData({ ...formData, proposedName2: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => handleCheckNames(formData.proposedName), disabled: !formData.proposedName || !formData.proposedName2 || isCheckingName || isCheckingQualifier || isReadOnly, isLoading: isCheckingQualifier || isCheckingName, className: "w-fit" }, "Check Availability")), (isCheckingQualifier || isCheckingName) && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: [{ id: "1", label: "AI Qualifier Pre-check...", status: isCheckingQualifier ? "loading" : "success" }, { id: "2", label: "Checking Official Registry Database...", status: isCheckingName ? "loading" : "pending" }, { id: "3", label: "Fallback Checking Public Database...", status: isCheckingName ? "loading" : "pending" }, { id: "4", label: "Validation Status...", status: isCheckingName ? "loading" : "pending" }] })), qualifierCheckResult && /* @__PURE__ */ import_react78.default.createElement("div", { className: "mt-2 animate-in fade-in" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "border border-orange-100 bg-linear-to-bl from-orange-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-orange-600 block mb-1" }, "AI Suggestion: Structural Qualifier Missing"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black mb-3" }, "Nigerian registrations require a structural qualifier to be approved."), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-2" }, (qualifierCheckResult.suggestions || []).map((alt, i) => /* @__PURE__ */ import_react78.default.createElement("button", { key: i, onClick: () => setFormData({ ...formData, proposedName: alt }), className: "text-left px-4 py-2 border border-neutral-100 rounded-full hover:border-black text-sm transition-colors outline-none" }, alt)))), /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => setQualifierCheckResult(null), className: "w-fit text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors mt-2 outline-none" }, "Edit Name Manually"))), nameCheckResult && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in" }, nameCheckResult.status === "APPROVED" || nameCheckResult.status === "APPROVED_WARNING" || nameCheckResult.status === "SKIPPED" ? /* @__PURE__ */ import_react78.default.createElement(AiApproveDecline, { suggestionTitle: nameCheckResult.status === "APPROVED" ? "Name Available!" : "Fallback Approval", suggestionValue: /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: `mb-1 ${nameCheckResult.status === "APPROVED" ? "text-emerald-600 " : "text-orange-500 "}` }, nameCheckResult.status === "APPROVED" ? "Excellent chance of approval." : "Validation Bypassed / Fallback."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-600" }, nameCheckResult.message), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-600 mt-2 " }, "Proposed Option: ", nameCheckResult.approvedOption)), onApprove: () => {
4231
4243
  const newForm = { ...formData, approvedName: nameCheckResult.approvedOption };
4232
4244
  setFormData(newForm);
4233
4245
  approveSection("nameApproved", newForm);
@@ -4235,7 +4247,7 @@ var UniversalRegistrationFlow = ({
4235
4247
  }, disabled: isReadOnly || isSubmitting })), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("addressApproved"), disabled: !formData.address || !formData.city || !formData.state || isReadOnly, className: "w-fit mt-2" }, "Confirm Address")) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-neutral-500" }, formData.address, ", ", formData.city, ", ", formData.state), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("addressApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), formState.addressApproved && type === "company" && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between gap-2 text-black" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "Directors & Shareholders")), !formState.membersDetailsApproved && /* @__PURE__ */ import_react78.default.createElement("div", { className: `text-xs px-3 py-1 rounded-full ${getCompanyTotalShares() === 100 ? "bg-emerald-50 text-emerald-600" : "bg-red-50 text-red-500"}` }, "Total Shares: ", getCompanyTotalShares(), "%")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 -mt-2" }, "Provide details for all individuals. Ensure total share percentage equals 100%."), !formState.membersDetailsApproved ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6 " }, formData.members.map((member, i) => /* @__PURE__ */ import_react78.default.createElement("div", { key: member.id, className: "flex flex-col gap-4 border border-neutral-100 p-5 rounded-2xl bg-neutral-50/30" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-between items-center mb-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400" }, "Member ", i + 1), formData.members.length > 1 && !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => removeCompanyMember(i), className: "text-red-500 text-xs hover:text-red-600" }, "Remove")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Role", value: member.role, readOnly: true, onClick: () => !isReadOnly && setActiveModal({ isOpen: true, type: "role", memberIndex: i }), onChange: () => {
4236
4248
  }, disabled: isReadOnly || isSubmitting }), member.role !== "Director Only" && /* @__PURE__ */ import_react78.default.createElement(NumberInput, { label: "Share Percentage (%)", value: member.sharePercentage, onChange: (v) => updateCompanyMemberInfo(i, "sharePercentage", v), disabled: isReadOnly || isSubmitting })), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name", value: member.fullName, onChange: (v) => updateCompanyMemberInfo(i, "fullName", v), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(NumberInput, { label: "Phone Number", value: member.phone, onChange: (v) => updateCompanyMemberInfo(i, "phone", v), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Email Address", value: member.email, onChange: (v) => updateCompanyMemberInfo(i, "email", v), disabled: isReadOnly || isSubmitting })), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Nationality", value: member.nationality, readOnly: true, onClick: () => !isReadOnly && setActiveModal({ isOpen: true, type: "nationality", memberIndex: i }), onChange: () => {
4237
4249
  }, disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Residential Address", value: member.address, onChange: (v) => updateCompanyMemberInfo(i, "address", v), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "City", value: member.city, onChange: (v) => updateCompanyMemberInfo(i, "city", v), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "State", value: member.state, readOnly: true, onClick: () => !isReadOnly && setActiveModal({ isOpen: true, type: "state", memberIndex: i }), onChange: () => {
4238
- }, disabled: isReadOnly || isSubmitting })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-2" }, !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: addCompanyMember, className: "px-6 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none" }, "+ Add Member"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("membersDetailsApproved"), disabled: !areCompanyMembersValid() || isReadOnly, className: "w-fit" }, "Confirm Members"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.members.length, " Member(s) Registered"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mt-1" }, "Total Shares: 100% Verified.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("membersDetailsApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), formState.addressApproved && type === "business" && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "Who owns the business?")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 -mt-2" }, "Provide basic contact info. We will extract your DOB and ID number automatically in the next step."), !formState.ownerApproved ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 " }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name", value: formData.ownerName, onChange: (v) => setFormData({ ...formData, ownerName: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(NumberInput, { label: "Phone Number", value: formData.ownerPhone, onChange: (v) => setFormData({ ...formData, ownerPhone: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Email Address", value: formData.ownerEmail, onChange: (v) => setFormData({ ...formData, ownerEmail: v }), disabled: isReadOnly || isSubmitting })), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("ownerApproved"), disabled: !formData.ownerName || !formData.ownerPhone || !formData.ownerEmail || isReadOnly, className: "w-fit mt-2" }, "Confirm Owner Details")) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.ownerName), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mt-1" }, formData.ownerEmail, " \u2022 ", formData.ownerPhone)), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("ownerApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Close"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep0Valid, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 1 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in" }, type === "company" ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm text-black" }, "Member Identity Documents"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload valid means of identification, passport photographs, and signatures for every director and shareholder.")), !formState.membersDocsApproved ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6" }, formData.members.map((member, i) => /* @__PURE__ */ import_react78.default.createElement("div", { key: member.id, className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-black mb-1" }, member.fullName || `Member ${i + 1}`, " ", /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-400 ml-2" }, "(", member.role, ")")), /* @__PURE__ */ import_react78.default.createElement("input", { id: `id-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "id"), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("input", { id: `pass-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "passport"), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("input", { id: `sig-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "signature"), disabled: isReadOnly || isAnyUploading }), !member.idExtractedData && !globalExtractingId ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`id-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Valid ID (NIN, License, Voter's Card)") : globalExtractingId && !member.idExtractedData ? /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: aiTasks })) : member.idExtractedData ? /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white p-5 rounded-xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-purple-600 block mb-2" }, "Review Extracted ID"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name on ID", value: member.idExtractedData.fullName, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, fullName: v }), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "ID Number", value: member.idExtractedData.idNumber, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, idNumber: v }), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Date of Birth", value: member.idExtractedData.dob, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, dob: v }), disabled: isReadOnly || isAnyUploading })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 mt-2" }, !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "id"), disabled: isAnyUploading, className: "px-6 py-2 bg-white border border-neutral-100 text-neutral-500 text-[11px] rounded-full tracking-widest hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, "Delete & Re-upload ID"))) : null, !member.passportFileUrl && !globalUploadingPassport ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`pass-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Passport Photo") : globalUploadingPassport && !member.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Passport...") : member.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.IdentificationIcon, size: 18 }), " Passport Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "passport"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))) : null, !member.signatureFileUrl && !globalUploadingSignature ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`sig-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Signature") : globalUploadingSignature && !member.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Signature...") : member.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.SignatureIcon, size: 18 }), " Signature Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "signature"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))) : null)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("membersDocsApproved"), disabled: !areCompanyMemberDocsValid() || isReadOnly || isAnyUploading, className: "w-fit" }, "Confirm All Documents"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between bg-emerald-50 p-6 rounded-full" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-emerald-800" }, "Documents Uploaded"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-emerald-600 mt-1" }, "Data safely extracted.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("membersDocsApproved"), className: "p-2 text-emerald-700 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))) : /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: idRef, onChange: (e) => handleBusinessUpload(e, "id"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: passportRef, onChange: (e) => handleBusinessUpload(e, "passport"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: signatureRef, onChange: (e) => handleBusinessUpload(e, "signature"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "Upload Means of Identification")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 -mt-2" }, "Upload your NIN, Driver's License, Voter's Card, or Int'l Passport (JPG/PNG/WEBP)."), !formState.idApproved ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && idRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `w-full h-32 border border-neutral-100 rounded-full flex flex-col items-center justify-center gap-2 transition-colors outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "hover:bg-neutral-50 text-black"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 24, className: "text-neutral-400" }), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs" }, "Select ID Image to Upload")), globalExtractingId && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: aiTasks })), formData.idExtractedData && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in border border-purple-100 bg-linear-to-bl from-purple-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-purple-600 block mb-2" }, "Review AI Extracted Data"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mb-4" }, "Please verify the extracted information and correct any OCR mistakes before approving."), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name on ID", value: formData.idExtractedData.fullName, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, fullName: v } })), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "ID Number", value: formData.idExtractedData.idNumber, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, idNumber: v } })), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Date of Birth (YYYY-MM-DD)", value: formData.idExtractedData.dob, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, dob: v } })), disabled: isReadOnly || isAnyUploading })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 mt-2" }, /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("idApproved"), disabled: isAnyUploading || isReadOnly, className: "w-fit shrink-0" }, "Approve Data"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("id"), disabled: isAnyUploading, className: "px-6 py-2 bg-white border border-neutral-100 text-neutral-500 text-[11px] rounded-full tracking-widest hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, "Delete & Re-upload")))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between bg-emerald-50 p-6 rounded-full" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-emerald-800" }, "ID Document Verified"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-emerald-600 mt-1" }, "Data safely extracted and stored.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("idApproved"), className: "p-2 text-emerald-700 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3 " }, !formState.passportApproved && !globalUploadingPassport ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && passportRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Passport Photo") : globalUploadingPassport && !formData.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Passport...") : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.IdentificationIcon, size: 18 }), " Passport Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("passport"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))), !formState.signatureApproved && !globalUploadingSignature ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && signatureRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Signature") : globalUploadingSignature && !formData.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Signature...") : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.SignatureIcon, size: 18 }), " Signature Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("signature"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 })))))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 border-t border-neutral-100 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other1Ref, onChange: (e) => handleOptionalUpload(e, "other1"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other2Ref, onChange: (e) => handleOptionalUpload(e, "other2"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other3Ref, onChange: (e) => handleOptionalUpload(e, "other3"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-1 mb-2" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm text-black" }, "Additional Documents (Optional)"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "If your ", type === "company" ? "company" : "business", " involves regulated professional services, please upload relevant licenses, certificates, or permits here (up to 3 documents).")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3" }, [1, 2, 3].map((num) => {
4250
+ }, disabled: isReadOnly || isSubmitting })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-2" }, !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: addCompanyMember, className: "px-6 py-2 bg-white border border-neutral-100 text-black text-[11px] tracking-widest rounded-full hover:bg-neutral-50 transition-colors outline-none" }, "+ Add Member"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("membersDetailsApproved"), disabled: !areCompanyMembersValid() || isReadOnly, className: "w-fit" }, "Confirm Members"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.members.length, " Member(s) Registered"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mt-1" }, "Total Shares: 100% Verified.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("membersDetailsApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), formState.addressApproved && type === "business" && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "Who owns the business?")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-400 -mt-2" }, "Provide basic contact info. We will extract your DOB and ID number automatically in the next step."), !formState.ownerApproved ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 " }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name", value: formData.ownerName, onChange: (v) => setFormData({ ...formData, ownerName: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(NumberInput, { label: "Phone Number", value: formData.ownerPhone, onChange: (v) => setFormData({ ...formData, ownerPhone: v }), disabled: isReadOnly || isSubmitting }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Email Address", value: formData.ownerEmail, onChange: (v) => setFormData({ ...formData, ownerEmail: v }), disabled: isReadOnly || isSubmitting })), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("ownerApproved"), disabled: !formData.ownerName || !formData.ownerPhone || !formData.ownerEmail || isReadOnly, className: "w-fit mt-2" }, "Confirm Owner Details")) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-black" }, formData.ownerName), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mt-1" }, formData.ownerEmail, " \u2022 ", formData.ownerPhone)), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("ownerApproved"), className: "p-2 text-neutral-400 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Close"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep0Valid, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 1 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-8 animate-in fade-in" }, type === "company" ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm text-black" }, "Member Identity Documents"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "Upload valid means of identification, passport photographs, and signatures for every director and shareholder.")), !formState.membersDocsApproved ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6" }, formData.members.map((member, i) => /* @__PURE__ */ import_react78.default.createElement("div", { key: member.id, className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-black mb-1" }, member.fullName || `Member ${i + 1}`, " ", /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-400 ml-2" }, "(", member.role, ")")), /* @__PURE__ */ import_react78.default.createElement("input", { id: `id-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "id"), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("input", { id: `pass-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "passport"), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("input", { id: `sig-upload-${i}`, type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", className: "hidden", onChange: (e) => handleCompanyMemberUpload(e, i, "signature"), disabled: isReadOnly || isAnyUploading }), !member.idExtractedData && !globalExtractingId ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`id-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Valid ID (NIN, License, Voter's Card)") : globalExtractingId && !member.idExtractedData ? /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: aiTasks })) : member.idExtractedData ? /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in border border-orange-100 bg-linear-to-bl from-orange-50/80 via-white to-white p-5 rounded-xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-orange-600 block mb-2" }, "Review Extracted ID"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name on ID", value: member.idExtractedData.fullName, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, fullName: v }), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "ID Number", value: member.idExtractedData.idNumber, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, idNumber: v }), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Date of Birth", value: member.idExtractedData.dob, onChange: (v) => updateCompanyMemberInfo(i, "idExtractedData", { ...member.idExtractedData, dob: v }), disabled: isReadOnly || isAnyUploading })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 mt-2" }, !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "id"), disabled: isAnyUploading, className: "px-6 py-2 bg-white border border-neutral-100 text-neutral-500 text-[11px] rounded-full tracking-widest hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, "Delete & Re-upload ID"))) : null, !member.passportFileUrl && !globalUploadingPassport ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`pass-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Passport Photo") : globalUploadingPassport && !member.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Passport...") : member.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.IdentificationIcon, size: 18 }), " Passport Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "passport"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))) : null, !member.signatureFileUrl && !globalUploadingSignature ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && document.getElementById(`sig-upload-${i}`)?.click(), className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}`, disabled: isReadOnly || isAnyUploading }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Signature") : globalUploadingSignature && !member.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Signature...") : member.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.SignatureIcon, size: 18 }), " Signature Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteCompanyMemberDocument(i, "signature"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))) : null)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("membersDocsApproved"), disabled: !areCompanyMemberDocsValid() || isReadOnly || isAnyUploading, className: "w-fit" }, "Confirm All Documents"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between bg-emerald-50 p-6 rounded-full" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-emerald-800" }, "Documents Uploaded"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-emerald-600 mt-1" }, "Data safely extracted.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("membersDocsApproved"), className: "p-2 text-emerald-700 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))) : /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: idRef, onChange: (e) => handleBusinessUpload(e, "id"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: passportRef, onChange: (e) => handleBusinessUpload(e, "passport"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: signatureRef, onChange: (e) => handleBusinessUpload(e, "signature"), disabled: isReadOnly || isAnyUploading, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 text-black" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm " }, "Upload Means of Identification")), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 -mt-2" }, "Upload your NIN, Driver's License, Voter's Card, or Int'l Passport (JPG/PNG/WEBP)."), !formState.idApproved ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && idRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `w-full h-32 border border-neutral-100 rounded-full flex flex-col items-center justify-center gap-2 transition-colors outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "hover:bg-neutral-50 text-black"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 24, className: "text-neutral-400" }), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-xs" }, "Select ID Image to Upload")), globalExtractingId && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2" }, /* @__PURE__ */ import_react78.default.createElement(AiStageCheck, { tasks: aiTasks })), formData.idExtractedData && /* @__PURE__ */ import_react78.default.createElement("div", { className: " mt-2 animate-in fade-in border border-orange-100 bg-linear-to-bl from-orange-50/80 via-white to-white p-5 rounded-2xl flex flex-col gap-4 relative overflow-hidden" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[11px] tracking-widest text-orange-600 block mb-2" }, "Review AI Extracted Data"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 mb-4" }, "Please verify the extracted information and correct any OCR mistakes before approving."), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Full Name on ID", value: formData.idExtractedData.fullName, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, fullName: v } })), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "ID Number", value: formData.idExtractedData.idNumber, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, idNumber: v } })), disabled: isReadOnly || isAnyUploading }), /* @__PURE__ */ import_react78.default.createElement(TextInput, { label: "Date of Birth (YYYY-MM-DD)", value: formData.idExtractedData.dob, onChange: (v) => setFormData((f) => ({ ...f, idExtractedData: { ...f.idExtractedData, dob: v } })), disabled: isReadOnly || isAnyUploading })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-2 mt-2" }, /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: () => approveSection("idApproved"), disabled: isAnyUploading || isReadOnly, className: "w-fit shrink-0" }, "Approve Data"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("id"), disabled: isAnyUploading, className: "px-6 py-2 bg-white border border-neutral-100 text-neutral-500 text-[11px] rounded-full tracking-widest hover:bg-neutral-50 transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, "Delete & Re-upload")))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: " flex items-center justify-between bg-emerald-50 p-6 rounded-full" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-sm text-emerald-800" }, "ID Document Verified"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-emerald-600 mt-1" }, "Data safely extracted and stored.")), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => editSection("idApproved"), className: "p-2 text-emerald-700 hover:text-black transition-colors outline-none shrink-0" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.PencilEdit01Icon, size: 16 })))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3 " }, !formState.passportApproved && !globalUploadingPassport ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && passportRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Passport Photo") : globalUploadingPassport && !formData.passportFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Passport...") : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.IdentificationIcon, size: 18 }), " Passport Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("passport"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 }))), !formState.signatureApproved && !globalUploadingSignature ? /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => !isReadOnly && !isAnyUploading && signatureRef.current?.click(), disabled: isReadOnly || isAnyUploading, className: `flex items-center gap-3 p-4 border border-neutral-100 rounded-full transition-colors text-sm w-full outline-none ${isAnyUploading ? "opacity-50 cursor-not-allowed bg-neutral-50 text-neutral-400" : "text-black hover:bg-neutral-50"}` }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Upload01Icon, size: 18, className: "text-neutral-400" }), " Upload Signature") : globalUploadingSignature && !formData.signatureFileUrl ? /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Signature...") : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.SignatureIcon, size: 18 }), " Signature Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteBusinessDocument("signature"), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 })))))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 pt-6 border-t border-neutral-100 animate-in slide-in-from-top-4 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other1Ref, onChange: (e) => handleOptionalUpload(e, "other1"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other2Ref, onChange: (e) => handleOptionalUpload(e, "other2"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("input", { type: "file", accept: "image/jpeg, image/png, image/webp, application/pdf", ref: other3Ref, onChange: (e) => handleOptionalUpload(e, "other3"), disabled: isAnyUploading || isReadOnly, className: "hidden" }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-1 mb-2" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm text-black" }, "Additional Documents (Optional)"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-neutral-500 leading-relaxed" }, "If your ", type === "company" ? "company" : "business", " involves regulated professional services, please upload relevant licenses, certificates, or permits here (up to 3 documents).")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-3" }, [1, 2, 3].map((num) => {
4239
4251
  const docType = `other${num}`;
4240
4252
  const ref = num === 1 ? other1Ref : num === 2 ? other2Ref : other3Ref;
4241
4253
  const isUploading = num === 1 ? isUploadingOther1 : num === 2 ? isUploadingOther2 : isUploadingOther3;
@@ -4339,7 +4351,7 @@ SECRET_KEY="${secKey}"
4339
4351
  };
4340
4352
  const hasWebhookChanges = webhookUrl !== initialWebhookUrl;
4341
4353
  const isWebhookSaveDisabled = isSavingWebhook || isReadOnly || !hasWebhookChanges;
4342
- return /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react80.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react80.default.createElement("h1", { className: " text-xl text-black mb-1 truncate tracking-tight" }, "Developer Settings"), /* @__PURE__ */ import_react80.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react80.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full flex items-center justify-center shrink-0" }, /* @__PURE__ */ import_react80.default.createElement(import_react81.HugeiconsIcon, { icon: import_core_free_icons29.CircleLock02Icon, size: 18, className: "text-current" }))), isLoading ? /* @__PURE__ */ import_react80.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react80.default.createElement("div", { className: "w-full max-w-5xl flex flex-col gap-12" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react80.default.createElement(
4354
+ return /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react80.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react80.default.createElement("h1", { className: " text-xl text-black mb-1 truncate gradient-text tracking-tight" }, "Developer Settings"), /* @__PURE__ */ import_react80.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react80.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full flex items-center justify-center shrink-0" }, /* @__PURE__ */ import_react80.default.createElement(import_react81.HugeiconsIcon, { icon: import_core_free_icons29.CircleLock02Icon, size: 18, className: "text-current" }))), isLoading ? /* @__PURE__ */ import_react80.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react80.default.createElement("div", { className: "w-full max-w-5xl flex flex-col gap-12" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react80.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react80.default.createElement(
4343
4355
  TextInput,
4344
4356
  {
4345
4357
  label: "Public Key",