@retinalabsllc/zairusjs 21.1.6 → 21.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +64 -2
- package/dist/index.d.ts +64 -2
- package/dist/index.js +219 -56
- package/dist/index.mjs +220 -56
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -63,11 +63,13 @@ __export(index_exports, {
|
|
|
63
63
|
TextInput: () => TextInput,
|
|
64
64
|
ThreeDActionButton: () => ThreeDActionButton,
|
|
65
65
|
ThreeDButton: () => ThreeDButton,
|
|
66
|
+
UniversalApplicationDetails: () => UniversalApplicationDetails,
|
|
66
67
|
UniversalApplicationPage2: () => UniversalApplicationPage2,
|
|
67
68
|
UniversalApplicationsPage: () => UniversalApplicationsPage,
|
|
68
69
|
UniversalBuyCryptoPage: () => UniversalBuyCryptoPage,
|
|
69
70
|
UniversalCardActionPage: () => UniversalCardActionPage,
|
|
70
71
|
UniversalCardPage: () => UniversalCardPage,
|
|
72
|
+
UniversalCreateApplication: () => UniversalCreateApplication,
|
|
71
73
|
UniversalCreateHuddle: () => UniversalCreateHuddle,
|
|
72
74
|
UniversalDeveloperSettings: () => UniversalDeveloperSettings,
|
|
73
75
|
UniversalErrorView: () => UniversalErrorView,
|
|
@@ -6428,19 +6430,11 @@ var UniversalHome3 = ({
|
|
|
6428
6430
|
setIsResolving(false);
|
|
6429
6431
|
}
|
|
6430
6432
|
};
|
|
6431
|
-
return /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react97.default.createElement(
|
|
6432
|
-
"button",
|
|
6433
|
-
{
|
|
6434
|
-
onClick: () => window.dispatchEvent(new Event("open-sidebar")),
|
|
6435
|
-
className: "md:hidden flex items-center justify-center w-7 h-7 bg-white rounded-full text-black transition-all duration-300 outline-none hover:bg-stone-50",
|
|
6436
|
-
"aria-label": "Open Menu"
|
|
6437
|
-
},
|
|
6438
|
-
/* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.SidebarLeft01Icon, size: 16 })
|
|
6439
|
-
)), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ import_react97.default.createElement(
|
|
6433
|
+
return /* @__PURE__ */ import_react97.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-3" }), /* @__PURE__ */ import_react97.default.createElement("div", { className: "flex items-center gap-2 shrink-0" }, /* @__PURE__ */ import_react97.default.createElement(
|
|
6440
6434
|
"button",
|
|
6441
6435
|
{
|
|
6442
6436
|
onClick: () => router.push("/app/ai"),
|
|
6443
|
-
className: "relative w-
|
|
6437
|
+
className: "relative w-9 h-9 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
|
|
6444
6438
|
},
|
|
6445
6439
|
/* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Robot01Icon, size: 16, className: "text-black" })
|
|
6446
6440
|
), /* @__PURE__ */ import_react97.default.createElement(
|
|
@@ -6450,7 +6444,7 @@ var UniversalHome3 = ({
|
|
|
6450
6444
|
setShowNotifDialog(true);
|
|
6451
6445
|
setSelectedNotif(null);
|
|
6452
6446
|
},
|
|
6453
|
-
className: "relative w-
|
|
6447
|
+
className: "relative w-9 h-9 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
|
|
6454
6448
|
},
|
|
6455
6449
|
/* @__PURE__ */ import_react97.default.createElement(import_react98.HugeiconsIcon, { icon: import_core_free_icons38.Notification01Icon, size: 16, className: "text-black" }),
|
|
6456
6450
|
hasUnreadNotifs && /* @__PURE__ */ import_react97.default.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
|
|
@@ -6464,7 +6458,7 @@ var UniversalHome3 = ({
|
|
|
6464
6458
|
/* @__PURE__ */ import_react97.default.createElement(
|
|
6465
6459
|
"img",
|
|
6466
6460
|
{
|
|
6467
|
-
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/
|
|
6461
|
+
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/create-file.avif",
|
|
6468
6462
|
alt: "New Application",
|
|
6469
6463
|
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
6470
6464
|
}
|
|
@@ -6479,7 +6473,7 @@ var UniversalHome3 = ({
|
|
|
6479
6473
|
/* @__PURE__ */ import_react97.default.createElement(
|
|
6480
6474
|
"img",
|
|
6481
6475
|
{
|
|
6482
|
-
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/
|
|
6476
|
+
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/search-file.avif",
|
|
6483
6477
|
alt: "Check Application",
|
|
6484
6478
|
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
6485
6479
|
}
|
|
@@ -6546,6 +6540,7 @@ function RootSidebar({
|
|
|
6546
6540
|
currentPath,
|
|
6547
6541
|
isMobileOpen,
|
|
6548
6542
|
closeMobile,
|
|
6543
|
+
openMobile,
|
|
6549
6544
|
onNavClick,
|
|
6550
6545
|
avatarSrc,
|
|
6551
6546
|
title = "App",
|
|
@@ -6582,7 +6577,22 @@ function RootSidebar({
|
|
|
6582
6577
|
}
|
|
6583
6578
|
};
|
|
6584
6579
|
const finalAvatarSrc = avatarSrc || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
6585
|
-
return /* @__PURE__ */ import_react99.default.createElement(import_react99.default.Fragment, null, /* @__PURE__ */ import_react99.default.createElement(
|
|
6580
|
+
return /* @__PURE__ */ import_react99.default.createElement(import_react99.default.Fragment, null, !isMobileOpen && /* @__PURE__ */ import_react99.default.createElement(
|
|
6581
|
+
"button",
|
|
6582
|
+
{
|
|
6583
|
+
onClick: openMobile,
|
|
6584
|
+
className: "md:hidden fixed left-0 top-1/2 -translate-y-1/2 z-50 bg-white border border-stone-200 border-l-0 shadow-[4px_0_24px_rgba(0,0,0,0.06)] rounded-r-xl py-6 px-1.5 flex items-center justify-center outline-none hover:bg-stone-50 transition-colors",
|
|
6585
|
+
"aria-label": "Open Menu"
|
|
6586
|
+
},
|
|
6587
|
+
/* @__PURE__ */ import_react99.default.createElement(
|
|
6588
|
+
"span",
|
|
6589
|
+
{
|
|
6590
|
+
className: "text-[10px] font-medium uppercase tracking-[0.2em] text-stone-500",
|
|
6591
|
+
style: { writingMode: "vertical-rl", transform: "rotate(180deg)" }
|
|
6592
|
+
},
|
|
6593
|
+
"Open Menu"
|
|
6594
|
+
)
|
|
6595
|
+
), /* @__PURE__ */ import_react99.default.createElement(
|
|
6586
6596
|
"div",
|
|
6587
6597
|
{
|
|
6588
6598
|
className: `fixed inset-0 bg-black/30 shadow-2xl transition-opacity duration-300 md:hidden z-90 ${isMobileOpen ? "opacity-100 pointer-events-auto" : "opacity-0 pointer-events-none"}`,
|
|
@@ -7013,15 +7023,7 @@ var UniversalSettings2 = ({
|
|
|
7013
7023
|
tabs.push({ id: "ORGANIZATION", label: "Organization" });
|
|
7014
7024
|
}
|
|
7015
7025
|
tabs.push({ id: "ACCOUNT", label: "Profile" });
|
|
7016
|
-
return /* @__PURE__ */ import_react101.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center
|
|
7017
|
-
"button",
|
|
7018
|
-
{
|
|
7019
|
-
onClick: () => window.dispatchEvent(new Event("open-sidebar")),
|
|
7020
|
-
className: "md:hidden flex shrink-0 items-center justify-center w-7 h-7 bg-white rounded-full text-black transition-all duration-300 outline-none hover:bg-stone-50",
|
|
7021
|
-
"aria-label": "Open Menu"
|
|
7022
|
-
},
|
|
7023
|
-
/* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.SidebarLeft01Icon, size: 16 })
|
|
7024
|
-
), /* @__PURE__ */ import_react101.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings")), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center mb-4 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
7026
|
+
return /* @__PURE__ */ import_react101.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react101.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings")), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center mb-4 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
7025
7027
|
const isActive = activeTab === tab.id;
|
|
7026
7028
|
return /* @__PURE__ */ import_react101.default.createElement(
|
|
7027
7029
|
"button",
|
|
@@ -7051,7 +7053,7 @@ var UniversalSettings2 = ({
|
|
|
7051
7053
|
onClose: () => setMemberToRemove(null),
|
|
7052
7054
|
onConfirm: handleConfirmRemove
|
|
7053
7055
|
}
|
|
7054
|
-
),
|
|
7056
|
+
), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "mb-6 flex w-full items-center" }, /* @__PURE__ */ import_react101.default.createElement(
|
|
7055
7057
|
"button",
|
|
7056
7058
|
{
|
|
7057
7059
|
onClick: () => setExpandedId(null),
|
|
@@ -7071,7 +7073,7 @@ var UniversalSettings2 = ({
|
|
|
7071
7073
|
))))))) : /* @__PURE__ */ import_react101.default.createElement(import_react101.default.Fragment, null, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react101.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react101.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react101.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react101.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react101.default.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react101.default.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ import_react101.default.createElement("button", { type: "button", onClick: () => {
|
|
7072
7074
|
setIsInviteMode(false);
|
|
7073
7075
|
setInviteEmail("");
|
|
7074
|
-
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react101.default.createElement(PageSpinner10, null) : /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react101.default.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react101.default.createElement(MemberAvatar5, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react101.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowRight01Icon, size: 14 })))))))), /* @__PURE__ */ import_react101.default.createElement(ReusableOptions, { isOpen:
|
|
7076
|
+
}, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react101.default.createElement(PageSpinner10, null) : /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react101.default.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react101.default.createElement(MemberAvatar5, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react101.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowLeft01Icon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.ArrowRight01Icon, size: 14 })))))))), /* @__PURE__ */ import_react101.default.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ import_react101.default.createElement(OrgAvatar3, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.Loading03Icon, size: 12, className: "animate-spin" }) : /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CloudUploadIcon, size: 14 })), /* @__PURE__ */ import_react101.default.createElement("input", { type: "file", ref: orgFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "ORGANIZATION") })), /* @__PURE__ */ import_react101.default.createElement("div", null, /* @__PURE__ */ import_react101.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ import_react101.default.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles."))), !canManage && /* @__PURE__ */ import_react101.default.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react101.default.createElement(import_react102.HugeiconsIcon, { icon: import_core_free_icons40.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react101.default.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ import_react101.default.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react101.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react101.default.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react101.default.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ import_react101.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react101.default.createElement(InputSpinner4, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react101.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react101.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react101.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react101.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react101.default.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ import_react101.default.createElement("button", { type: "button", onClick: () => {
|
|
7075
7077
|
setOrgName(initialOrgName || "");
|
|
7076
7078
|
setOrgSlug(initialOrgSlug || "");
|
|
7077
7079
|
setOrgAvatarUrl(initialOrgAvatarUrl || "");
|
|
@@ -7092,8 +7094,6 @@ var UniversalSettings2 = ({
|
|
|
7092
7094
|
// src/components/UniversalDeveloperSettings.tsx
|
|
7093
7095
|
var import_react103 = __toESM(require("react"));
|
|
7094
7096
|
var import_react_hot_toast20 = require("react-hot-toast");
|
|
7095
|
-
var import_react104 = require("@hugeicons/react");
|
|
7096
|
-
var import_core_free_icons41 = require("@hugeicons/core-free-icons");
|
|
7097
7097
|
var UniversalDeveloperSettings = ({
|
|
7098
7098
|
initialPublicKey,
|
|
7099
7099
|
initialWebhookUrl,
|
|
@@ -7166,15 +7166,7 @@ AUDDITUR_SECRET_KEY="${secKey}"
|
|
|
7166
7166
|
};
|
|
7167
7167
|
const hasWebhookChanges = webhookUrl !== initialWebhookUrl;
|
|
7168
7168
|
const isWebhookSaveDisabled = isSavingWebhook || isReadOnly || !hasWebhookChanges;
|
|
7169
|
-
return /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ import_react103.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col min-w-0 gap-1" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react103.default.createElement(
|
|
7170
|
-
"button",
|
|
7171
|
-
{
|
|
7172
|
-
onClick: () => window.dispatchEvent(new Event("open-sidebar")),
|
|
7173
|
-
className: "md:hidden flex shrink-0 items-center justify-center w-7 h-7 bg-white rounded-full text-black transition-all duration-300 outline-none hover:bg-stone-50",
|
|
7174
|
-
"aria-label": "Open Menu"
|
|
7175
|
-
},
|
|
7176
|
-
/* @__PURE__ */ import_react103.default.createElement(import_react104.HugeiconsIcon, { icon: import_core_free_icons41.SidebarLeft01Icon, size: 16 })
|
|
7177
|
-
), /* @__PURE__ */ import_react103.default.createElement("h1", { className: "font-serif text-xl text-black truncate tracking-tight" }, "Developer Settings")), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react103.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit sm:mt-1" }, "Read Only Access")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "w-full max-w-2xl flex flex-col gap-12" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react103.default.createElement(
|
|
7169
|
+
return /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ import_react103.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col min-w-0 gap-1" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react103.default.createElement("h1", { className: "font-serif text-xl text-black truncate tracking-tight" }, "Developer Settings")), /* @__PURE__ */ import_react103.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react103.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit sm:mt-1" }, "Read Only Access")), /* @__PURE__ */ import_react103.default.createElement("div", { className: "w-full max-w-2xl flex flex-col gap-12" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react103.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react103.default.createElement(
|
|
7178
7170
|
TextInput,
|
|
7179
7171
|
{
|
|
7180
7172
|
label: "Public Key",
|
|
@@ -7239,9 +7231,9 @@ AUDDITUR_SECRET_KEY="${secKey}"
|
|
|
7239
7231
|
};
|
|
7240
7232
|
|
|
7241
7233
|
// src/components/UniversalApplicationPage2.tsx
|
|
7242
|
-
var
|
|
7243
|
-
var
|
|
7244
|
-
var
|
|
7234
|
+
var import_react104 = __toESM(require("react"));
|
|
7235
|
+
var import_react105 = require("@hugeicons/react");
|
|
7236
|
+
var import_core_free_icons41 = require("@hugeicons/core-free-icons");
|
|
7245
7237
|
var UniversalApplicationPage2 = ({
|
|
7246
7238
|
userRole = "MEMBER",
|
|
7247
7239
|
applications,
|
|
@@ -7257,9 +7249,9 @@ var UniversalApplicationPage2 = ({
|
|
|
7257
7249
|
onCreateApplication
|
|
7258
7250
|
}) => {
|
|
7259
7251
|
const canManage = userRole === "ADMIN" || userRole === "MANAGER" || userRole === "OWNER";
|
|
7260
|
-
const [showStatusModal, setShowStatusModal] = (0,
|
|
7261
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
7262
|
-
const typingTimer = (0,
|
|
7252
|
+
const [showStatusModal, setShowStatusModal] = (0, import_react104.useState)(false);
|
|
7253
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react104.useState)(searchQuery);
|
|
7254
|
+
const typingTimer = (0, import_react104.useRef)(null);
|
|
7263
7255
|
const handleSearchInput = (e) => {
|
|
7264
7256
|
const val = e.target.value;
|
|
7265
7257
|
setLocalSearchQuery(val);
|
|
@@ -7277,15 +7269,7 @@ var UniversalApplicationPage2 = ({
|
|
|
7277
7269
|
"QUERIED",
|
|
7278
7270
|
"AWAITING_PAYMENT"
|
|
7279
7271
|
];
|
|
7280
|
-
return /* @__PURE__ */
|
|
7281
|
-
"button",
|
|
7282
|
-
{
|
|
7283
|
-
onClick: () => window.dispatchEvent(new Event("open-sidebar")),
|
|
7284
|
-
className: "md:hidden flex shrink-0 items-center justify-center w-7 h-7 bg-white rounded-full text-black transition-all duration-300 outline-none hover:bg-stone-50",
|
|
7285
|
-
"aria-label": "Open Menu"
|
|
7286
|
-
},
|
|
7287
|
-
/* @__PURE__ */ import_react105.default.createElement(import_react106.HugeiconsIcon, { icon: import_core_free_icons42.SidebarLeft01Icon, size: 16 })
|
|
7288
|
-
), /* @__PURE__ */ import_react105.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Applications Directory")), /* @__PURE__ */ import_react105.default.createElement("p", { className: "text-xs text-stone-500" }, "Search, filter, and track all your organizational applications.")), /* @__PURE__ */ import_react105.default.createElement("div", { className: "flex flex-row flex-nowrap mb-2 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react105.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react105.default.createElement(import_react106.HugeiconsIcon, { icon: import_core_free_icons42.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react105.default.createElement(
|
|
7272
|
+
return /* @__PURE__ */ import_react104.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react104.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Applications Directory")), /* @__PURE__ */ import_react104.default.createElement("p", { className: "text-xs text-stone-500" }, "Search, filter, and track all your organizational applications.")), /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex flex-row flex-nowrap mb-2 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react104.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react104.default.createElement(import_react105.HugeiconsIcon, { icon: import_core_free_icons41.Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ import_react104.default.createElement(
|
|
7289
7273
|
"input",
|
|
7290
7274
|
{
|
|
7291
7275
|
type: "text",
|
|
@@ -7294,15 +7278,15 @@ var UniversalApplicationPage2 = ({
|
|
|
7294
7278
|
onChange: handleSearchInput,
|
|
7295
7279
|
className: "w-full pl-10 pr-4 py-2.5 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent shadow-[0_2px_10px_rgba(0,0,0,0.02)]"
|
|
7296
7280
|
}
|
|
7297
|
-
)), /* @__PURE__ */
|
|
7281
|
+
)), /* @__PURE__ */ import_react104.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react104.default.createElement(
|
|
7298
7282
|
"button",
|
|
7299
7283
|
{
|
|
7300
7284
|
onClick: () => setShowStatusModal(true),
|
|
7301
7285
|
className: "flex items-center justify-center bg-white shadow-[0_2px_10px_rgba(0,0,0,0.02)] w-10 h-10 rounded-full text-stone-500 hover:text-black transition-colors outline-none relative"
|
|
7302
7286
|
},
|
|
7303
|
-
/* @__PURE__ */
|
|
7304
|
-
activeStatusFilter !== "ALL" && /* @__PURE__ */
|
|
7305
|
-
))), /* @__PURE__ */
|
|
7287
|
+
/* @__PURE__ */ import_react104.default.createElement(import_react105.HugeiconsIcon, { icon: import_core_free_icons41.SearchList02Icon, size: 18 }),
|
|
7288
|
+
activeStatusFilter !== "ALL" && /* @__PURE__ */ import_react104.default.createElement("span", { className: "absolute top-2 right-2 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
|
|
7289
|
+
))), /* @__PURE__ */ import_react104.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react104.default.createElement(
|
|
7306
7290
|
UniversalApplicationsPage,
|
|
7307
7291
|
{
|
|
7308
7292
|
headerTitle: "Recent Filings",
|
|
@@ -7315,7 +7299,7 @@ var UniversalApplicationPage2 = ({
|
|
|
7315
7299
|
onApplicationClick,
|
|
7316
7300
|
onCreateApplication: canManage ? onCreateApplication : void 0
|
|
7317
7301
|
}
|
|
7318
|
-
)), /* @__PURE__ */
|
|
7302
|
+
)), /* @__PURE__ */ import_react104.default.createElement(
|
|
7319
7303
|
ReusableOptions,
|
|
7320
7304
|
{
|
|
7321
7305
|
isOpen: showStatusModal,
|
|
@@ -7330,6 +7314,183 @@ var UniversalApplicationPage2 = ({
|
|
|
7330
7314
|
}
|
|
7331
7315
|
));
|
|
7332
7316
|
};
|
|
7317
|
+
|
|
7318
|
+
// src/components/UniversalApplicationDetails.tsx
|
|
7319
|
+
var import_react106 = __toESM(require("react"));
|
|
7320
|
+
var import_react107 = require("@hugeicons/react");
|
|
7321
|
+
var import_core_free_icons42 = require("@hugeicons/core-free-icons");
|
|
7322
|
+
var formatType2 = (type) => type.split("_").map((w) => w[0] + w.slice(1).toLowerCase()).join(" ");
|
|
7323
|
+
var UniversalApplicationDetails = ({
|
|
7324
|
+
onBackHref,
|
|
7325
|
+
application,
|
|
7326
|
+
canDelete,
|
|
7327
|
+
onDeleteSubmit
|
|
7328
|
+
}) => {
|
|
7329
|
+
const [isDeleting, setIsDeleting] = (0, import_react106.useState)(false);
|
|
7330
|
+
const [confirmDialog, setConfirmDialog] = (0, import_react106.useState)(false);
|
|
7331
|
+
const isLockedStatus = ["COMPLETED", "PENDING", "REJECTED", "QUERIED"].includes(application.status);
|
|
7332
|
+
const deletePermitted = canDelete && !isLockedStatus;
|
|
7333
|
+
const handleDelete = async () => {
|
|
7334
|
+
setIsDeleting(true);
|
|
7335
|
+
try {
|
|
7336
|
+
await onDeleteSubmit();
|
|
7337
|
+
setConfirmDialog(false);
|
|
7338
|
+
} catch (error) {
|
|
7339
|
+
}
|
|
7340
|
+
setIsDeleting(false);
|
|
7341
|
+
};
|
|
7342
|
+
return /* @__PURE__ */ import_react106.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react106.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react106.default.createElement(
|
|
7343
|
+
ConfirmationDialog,
|
|
7344
|
+
{
|
|
7345
|
+
isOpen: confirmDialog,
|
|
7346
|
+
title: "Delete Application",
|
|
7347
|
+
message: "Are you sure you want to permanently delete this application and its assets? This action cannot be undone.",
|
|
7348
|
+
confirmText: "Delete Application",
|
|
7349
|
+
cancelText: "Cancel",
|
|
7350
|
+
isProcessing: isDeleting,
|
|
7351
|
+
isDestructive: true,
|
|
7352
|
+
onClose: () => setConfirmDialog(false),
|
|
7353
|
+
onConfirm: handleDelete
|
|
7354
|
+
}
|
|
7355
|
+
), /* @__PURE__ */ import_react106.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react106.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react106.default.createElement(import_react107.HugeiconsIcon, { icon: import_core_free_icons42.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react106.default.createElement("div", { className: "mb-8 px-1 flex flex-col sm:flex-row sm:items-center justify-between gap-4" }, /* @__PURE__ */ import_react106.default.createElement("div", null, /* @__PURE__ */ import_react106.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Application Details"), /* @__PURE__ */ import_react106.default.createElement("p", { className: "text-xs text-stone-500" }, "Review your filing entity and access its workspace.")), /* @__PURE__ */ import_react106.default.createElement("div", { className: "px-4 py-1.5 bg-stone-100 text-stone-600 rounded-full text-xs self-start sm:self-auto uppercase tracking-widest " }, application.status)), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-1 w-full" }, /* @__PURE__ */ import_react106.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react106.default.createElement("span", { className: "text-sm text-black py-2 " }, application.name)), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col gap-1 w-full border-t border-stone-100 pt-6" }, /* @__PURE__ */ import_react106.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Filing Type"), /* @__PURE__ */ import_react106.default.createElement("span", { className: "text-sm text-black py-2" }, formatType2(application.type))), /* @__PURE__ */ import_react106.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 border-t border-stone-100" }, /* @__PURE__ */ import_react106.default.createElement("a", { href: `/app/applications/app/${application.id}`, className: "flex-1 w-full py-2.5 bg-[#d97757] text-white rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/90" }, "Open Application"), /* @__PURE__ */ import_react106.default.createElement("a", { href: `/app/applications/assets/${application.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Application Assets"), deletePermitted && /* @__PURE__ */ import_react106.default.createElement("button", { onClick: () => setConfirmDialog(true), className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Delete Application"))));
|
|
7356
|
+
};
|
|
7357
|
+
|
|
7358
|
+
// src/components/UniversalCreateApplication.tsx
|
|
7359
|
+
var import_react108 = __toESM(require("react"));
|
|
7360
|
+
var import_react_hot_toast21 = __toESM(require("react-hot-toast"));
|
|
7361
|
+
var import_react109 = require("@hugeicons/react");
|
|
7362
|
+
var import_core_free_icons43 = require("@hugeicons/core-free-icons");
|
|
7363
|
+
var MemberAvatar6 = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
7364
|
+
const [loaded, setLoaded] = (0, import_react108.useState)(false);
|
|
7365
|
+
const [error, setError] = (0, import_react108.useState)(false);
|
|
7366
|
+
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
7367
|
+
return /* @__PURE__ */ import_react108.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react108.default.createElement("img", { src: error || !src ? defaultAvatar : src, alt: "Avatar", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })));
|
|
7368
|
+
};
|
|
7369
|
+
var UniversalCreateApplication = ({
|
|
7370
|
+
onBackHref,
|
|
7371
|
+
userRole = "MEMBER",
|
|
7372
|
+
applicationTypesMeta = [],
|
|
7373
|
+
members,
|
|
7374
|
+
isMembersLoading,
|
|
7375
|
+
membersCurrentPage,
|
|
7376
|
+
membersTotalPages,
|
|
7377
|
+
onMembersPageChange,
|
|
7378
|
+
membersSearchQuery,
|
|
7379
|
+
onMembersSearchChange,
|
|
7380
|
+
companies,
|
|
7381
|
+
isCompaniesLoading,
|
|
7382
|
+
companiesCurrentPage,
|
|
7383
|
+
companiesTotalPages,
|
|
7384
|
+
onCompaniesPageChange,
|
|
7385
|
+
companiesSearchQuery,
|
|
7386
|
+
onCompaniesSearchChange,
|
|
7387
|
+
onCreateSubmit
|
|
7388
|
+
}) => {
|
|
7389
|
+
const canManage = userRole === "ADMIN" || userRole === "MANAGER" || userRole === "OWNER";
|
|
7390
|
+
const [creationMode, setCreationMode] = (0, import_react108.useState)("EXISTING");
|
|
7391
|
+
const defaultTypeKey = applicationTypesMeta.length > 0 ? applicationTypesMeta[0].key : "";
|
|
7392
|
+
const [selectedTypeKey, setSelectedTypeKey] = (0, import_react108.useState)(defaultTypeKey);
|
|
7393
|
+
(0, import_react108.useEffect)(() => {
|
|
7394
|
+
if (!selectedTypeKey && applicationTypesMeta.length > 0) {
|
|
7395
|
+
setSelectedTypeKey(applicationTypesMeta[0].key);
|
|
7396
|
+
}
|
|
7397
|
+
}, [applicationTypesMeta, selectedTypeKey]);
|
|
7398
|
+
const [selectedCompanyId, setSelectedCompanyId] = (0, import_react108.useState)(null);
|
|
7399
|
+
const [newCompanyName, setNewCompanyName] = (0, import_react108.useState)("");
|
|
7400
|
+
const [isPrivate, setIsPrivate] = (0, import_react108.useState)(false);
|
|
7401
|
+
const [selectedParticipants, setSelectedParticipants] = (0, import_react108.useState)(/* @__PURE__ */ new Set());
|
|
7402
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react108.useState)(false);
|
|
7403
|
+
const [showTypeModal, setShowTypeModal] = (0, import_react108.useState)(false);
|
|
7404
|
+
const [showMembersModal, setShowMembersModal] = (0, import_react108.useState)(false);
|
|
7405
|
+
const [showCompaniesModal, setShowCompaniesModal] = (0, import_react108.useState)(false);
|
|
7406
|
+
const [localMemSearch, setLocalMemSearch] = (0, import_react108.useState)(membersSearchQuery);
|
|
7407
|
+
const memTimer = (0, import_react108.useRef)(null);
|
|
7408
|
+
const handleMemSearch = (e) => {
|
|
7409
|
+
const val = e.target.value;
|
|
7410
|
+
setLocalMemSearch(val);
|
|
7411
|
+
if (memTimer.current) clearTimeout(memTimer.current);
|
|
7412
|
+
memTimer.current = setTimeout(() => onMembersSearchChange(val), 500);
|
|
7413
|
+
};
|
|
7414
|
+
const [localCompSearch, setLocalCompSearch] = (0, import_react108.useState)(companiesSearchQuery);
|
|
7415
|
+
const compTimer = (0, import_react108.useRef)(null);
|
|
7416
|
+
const handleCompSearch = (e) => {
|
|
7417
|
+
const val = e.target.value;
|
|
7418
|
+
setLocalCompSearch(val);
|
|
7419
|
+
if (compTimer.current) clearTimeout(compTimer.current);
|
|
7420
|
+
compTimer.current = setTimeout(() => onCompaniesSearchChange(val), 500);
|
|
7421
|
+
};
|
|
7422
|
+
const toggleParticipant = (userId) => {
|
|
7423
|
+
if (!canManage) return;
|
|
7424
|
+
const newSet = new Set(selectedParticipants);
|
|
7425
|
+
if (newSet.has(userId)) newSet.delete(userId);
|
|
7426
|
+
else newSet.add(userId);
|
|
7427
|
+
setSelectedParticipants(newSet);
|
|
7428
|
+
};
|
|
7429
|
+
const handleSubmit = async (e) => {
|
|
7430
|
+
e.preventDefault();
|
|
7431
|
+
if (!canManage) return;
|
|
7432
|
+
if (!selectedTypeKey) return import_react_hot_toast21.default.error("Please select a valid application type.");
|
|
7433
|
+
if (creationMode === "EXISTING" && !selectedCompanyId) return import_react_hot_toast21.default.error("Please select a company.");
|
|
7434
|
+
if (creationMode === "NEW" && newCompanyName.trim().length < 2) return import_react_hot_toast21.default.error("Company name is required.");
|
|
7435
|
+
setIsSubmitting(true);
|
|
7436
|
+
try {
|
|
7437
|
+
await onCreateSubmit({
|
|
7438
|
+
creationMode,
|
|
7439
|
+
companyId: creationMode === "EXISTING" ? selectedCompanyId : void 0,
|
|
7440
|
+
newCompany: creationMode === "NEW" ? {
|
|
7441
|
+
name: newCompanyName.trim(),
|
|
7442
|
+
isPrivate,
|
|
7443
|
+
assignedUsers: isPrivate ? Array.from(selectedParticipants) : []
|
|
7444
|
+
} : void 0,
|
|
7445
|
+
type: selectedTypeKey
|
|
7446
|
+
});
|
|
7447
|
+
} catch (error) {
|
|
7448
|
+
import_react_hot_toast21.default.error(error.message || "Failed to create application.");
|
|
7449
|
+
setIsSubmitting(false);
|
|
7450
|
+
}
|
|
7451
|
+
};
|
|
7452
|
+
const activeCompany = companies.find((c) => c.id === selectedCompanyId);
|
|
7453
|
+
const activeTypeObj = applicationTypesMeta.find((t) => t.key === selectedTypeKey) || applicationTypesMeta[0];
|
|
7454
|
+
const modeTabs = [
|
|
7455
|
+
{ id: "EXISTING", label: "Select Company" },
|
|
7456
|
+
{ id: "NEW", label: "New Company" }
|
|
7457
|
+
];
|
|
7458
|
+
return /* @__PURE__ */ import_react108.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react108.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react108.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react108.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col gap-1 mb-6 px-1" }, /* @__PURE__ */ import_react108.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Application"), /* @__PURE__ */ import_react108.default.createElement("p", { className: "text-xs text-stone-500" }, "Initiate a new registration or filing for a company.")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center mb-4 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, modeTabs.map((tab) => {
|
|
7459
|
+
const isActive = creationMode === tab.id;
|
|
7460
|
+
return /* @__PURE__ */ import_react108.default.createElement(
|
|
7461
|
+
"button",
|
|
7462
|
+
{
|
|
7463
|
+
key: tab.id,
|
|
7464
|
+
type: "button",
|
|
7465
|
+
onClick: () => setCreationMode(tab.id),
|
|
7466
|
+
disabled: isSubmitting,
|
|
7467
|
+
className: `px-4 py-1.5 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-stone-50 text-black" : "text-stone-500 hover:text-black hover:bg-stone-50/50"}`
|
|
7468
|
+
},
|
|
7469
|
+
tab.label
|
|
7470
|
+
);
|
|
7471
|
+
}))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react108.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, !canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-start gap-3 p-4 bg-stone-50 rounded-xl" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.CircleLock02Icon, size: 20, className: "text-stone-500 shrink-0 mt-0.5" }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Access Restricted"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-500 mt-1 leading-relaxed" }, "You lack clearance to create applications."))), creationMode === "EXISTING" ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react108.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Target Company"), /* @__PURE__ */ import_react108.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowCompaniesModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Building03Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react108.default.createElement("span", { className: `w-full pl-8 text-sm truncate block ${activeCompany ? "text-black" : "text-stone-400"}` }, activeCompany ? activeCompany.name : "Select an existing company..."))) : /* @__PURE__ */ import_react108.default.createElement(import_react108.default.Fragment, null, /* @__PURE__ */ import_react108.default.createElement(TextInput, { label: "Company Name", value: newCompanyName, onChange: (val) => setNewCompanyName(val), disabled: isSubmitting || !canManage, placeholder: "e.g. Acme Innovations Ltd.", maxLength: 80 }), /* @__PURE__ */ import_react108.default.createElement("div", { className: `flex items-center justify-between py-2 mt-2 ${!canManage ? "opacity-50 pointer-events-none" : ""}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Company"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-500" }, "Only assigned members can view and access its applications.")), /* @__PURE__ */ import_react108.default.createElement("button", { type: "button", onClick: () => setIsPrivate(!isPrivate), disabled: !canManage || isSubmitting, className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#d97757]" : "bg-stone-200"}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` }))), isPrivate && /* @__PURE__ */ import_react108.default.createElement("div", { className: `flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl ${!canManage ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-black tracking-tight" }, "Assigned Members"), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-[#d97757]" }, selectedParticipants.size, " added")), /* @__PURE__ */ import_react108.default.createElement("button", { type: "button", onClick: () => setShowMembersModal(true), disabled: !canManage || isSubmitting, className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access"))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react108.default.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Application Type"), /* @__PURE__ */ import_react108.default.createElement("div", { onClick: () => canManage && !isSubmitting && setShowTypeModal(true), className: `flex items-center relative w-full border-b border-stone-200 transition-all duration-300 pb-3 pt-3 ${!canManage || isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black cursor-pointer"}` }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.File02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ import_react108.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, activeTypeObj?.label || "Select Type..."))), canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "pt-6" }, /* @__PURE__ */ import_react108.default.createElement(ThreeDActionButton, { type: "submit", disabled: isSubmitting || !selectedTypeKey || creationMode === "EXISTING" && !selectedCompanyId || creationMode === "NEW" && newCompanyName.length < 2, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Create Application")))), showTypeModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowTypeModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 border-b border-stone-100" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight " }, "Application Type"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowTypeModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-3 space-y-2" }, applicationTypesMeta.map((item) => {
|
|
7472
|
+
const isSelected = selectedTypeKey === item.key;
|
|
7473
|
+
return /* @__PURE__ */ import_react108.default.createElement(
|
|
7474
|
+
"div",
|
|
7475
|
+
{
|
|
7476
|
+
key: item.key,
|
|
7477
|
+
onClick: () => {
|
|
7478
|
+
setSelectedTypeKey(item.key);
|
|
7479
|
+
setShowTypeModal(false);
|
|
7480
|
+
},
|
|
7481
|
+
className: `p-4 rounded-xl cursor-pointer transition-all border ${isSelected ? "bg-white border-[#d97757]" : "bg-stone-100 border-transparent hover:bg-stone-200/60"}`
|
|
7482
|
+
},
|
|
7483
|
+
/* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react108.default.createElement("h4", { className: "text-xs text-black" }, item.label), isSelected && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Tick02Icon, size: 16, className: "text-[#d97757] shrink-0" })),
|
|
7484
|
+
/* @__PURE__ */ import_react108.default.createElement("p", { className: "text-[11px] text-stone-500 mt-1 leading-relaxed whitespace-normal wrap-break-word" }, item.desc)
|
|
7485
|
+
);
|
|
7486
|
+
})))), showCompaniesModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowCompaniesModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Select Company"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowCompaniesModal(false), className: "text-[#d97757] outline-none text-sm" }, "Close")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react108.default.createElement("input", { type: "text", placeholder: "Search companies...", value: localCompSearch, onChange: handleCompSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-200 transition-colors" }))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isCompaniesLoading ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, size: 28, className: "animate-spin text-black" })) : companies.length === 0 ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No companies available.") : companies.map((comp) => /* @__PURE__ */ import_react108.default.createElement("div", { key: comp.id, onClick: () => {
|
|
7487
|
+
setSelectedCompanyId(comp.id);
|
|
7488
|
+
setShowCompaniesModal(false);
|
|
7489
|
+
}, className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col min-w-0 flex-1 pl-2" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black truncate" }, comp.name), comp.isPrivate && /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-[10px] text-[#d97757] mt-0.5 tracking-widest uppercase" }, "Private")), selectedCompanyId === comp.id && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Tick02Icon, size: 16, className: "text-[#d97757] mr-2" })))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", companiesCurrentPage, " of ", companiesTotalPages || 1), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react108.default.createElement("button", { disabled: companiesCurrentPage <= 1 || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react108.default.createElement("button", { disabled: companiesCurrentPage >= companiesTotalPages || isCompaniesLoading, onClick: () => onCompaniesPageChange(companiesCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowRight01Icon, size: 12 })))))), showMembersModal && canManage && /* @__PURE__ */ import_react108.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Assign Members"), /* @__PURE__ */ import_react108.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#d97757] outline-none text-sm" }, "Done")), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Search01Icon, size: 16, className: "text-stone-400 absolute left-4 top-1/2 -translate-y-1/2 pointer-events-none" }), /* @__PURE__ */ import_react108.default.createElement("input", { type: "text", placeholder: "Search team...", value: localMemSearch, onChange: handleMemSearch, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black outline-none focus:bg-stone-200 transition-colors" }))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, isMembersLoading ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
|
|
7490
|
+
const isChecked = selectedParticipants.has(member.userId);
|
|
7491
|
+
return /* @__PURE__ */ import_react108.default.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react108.default.createElement(MemberAvatar6, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))), /* @__PURE__ */ import_react108.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react108.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#d97757]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.Tick02Icon, size: 14, className: "text-white" }))));
|
|
7492
|
+
})), /* @__PURE__ */ import_react108.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react108.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages || 1), /* @__PURE__ */ import_react108.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react108.default.createElement("button", { disabled: membersCurrentPage <= 1 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowLeft01Icon, size: 12 })), /* @__PURE__ */ import_react108.default.createElement("button", { disabled: membersCurrentPage >= membersTotalPages || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50" }, /* @__PURE__ */ import_react108.default.createElement(import_react109.HugeiconsIcon, { icon: import_core_free_icons43.ArrowRight01Icon, size: 12 })))))));
|
|
7493
|
+
};
|
|
7333
7494
|
// Annotate the CommonJS export names for ESM import in node:
|
|
7334
7495
|
0 && (module.exports = {
|
|
7335
7496
|
AppBento2,
|
|
@@ -7364,11 +7525,13 @@ var UniversalApplicationPage2 = ({
|
|
|
7364
7525
|
TextInput,
|
|
7365
7526
|
ThreeDActionButton,
|
|
7366
7527
|
ThreeDButton,
|
|
7528
|
+
UniversalApplicationDetails,
|
|
7367
7529
|
UniversalApplicationPage2,
|
|
7368
7530
|
UniversalApplicationsPage,
|
|
7369
7531
|
UniversalBuyCryptoPage,
|
|
7370
7532
|
UniversalCardActionPage,
|
|
7371
7533
|
UniversalCardPage,
|
|
7534
|
+
UniversalCreateApplication,
|
|
7372
7535
|
UniversalCreateHuddle,
|
|
7373
7536
|
UniversalDeveloperSettings,
|
|
7374
7537
|
UniversalErrorView,
|