@retinalabsllc/zairusjs 16.1.90 → 16.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 +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +202 -214
- package/dist/index.mjs +204 -216
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -64,10 +64,10 @@ __export(index_exports, {
|
|
|
64
64
|
UniversalBuyCryptoPage: () => UniversalBuyCryptoPage,
|
|
65
65
|
UniversalCardActionPage: () => UniversalCardActionPage,
|
|
66
66
|
UniversalCardPage: () => UniversalCardPage,
|
|
67
|
-
UniversalDepartmentsPage: () => UniversalDepartmentsPage,
|
|
68
67
|
UniversalErrorView: () => UniversalErrorView,
|
|
69
68
|
UniversalHome2: () => UniversalHome2,
|
|
70
69
|
UniversalHomeView: () => UniversalHomeView,
|
|
70
|
+
UniversalHuddlesPage: () => UniversalHuddlesPage,
|
|
71
71
|
UniversalMembersPage: () => UniversalMembersPage,
|
|
72
72
|
UniversalOrganizationPage: () => UniversalOrganizationPage,
|
|
73
73
|
UniversalProfilePage: () => UniversalProfilePage,
|
|
@@ -1700,7 +1700,7 @@ var ConfirmationDialog = ({
|
|
|
1700
1700
|
{
|
|
1701
1701
|
onClick: onConfirm,
|
|
1702
1702
|
disabled: isProcessing,
|
|
1703
|
-
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-
|
|
1703
|
+
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
|
|
1704
1704
|
},
|
|
1705
1705
|
isProcessing ? /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
|
|
1706
1706
|
))));
|
|
@@ -4514,67 +4514,68 @@ var UniversalBuyCryptoPage = ({
|
|
|
4514
4514
|
}))))));
|
|
4515
4515
|
};
|
|
4516
4516
|
|
|
4517
|
-
// src/components/
|
|
4517
|
+
// src/components/UniversalHuddlesPage.tsx
|
|
4518
4518
|
var import_react77 = __toESM(require("react"));
|
|
4519
|
-
var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
|
|
4520
4519
|
var import_react78 = require("@hugeicons/react");
|
|
4521
4520
|
var import_core_free_icons27 = require("@hugeicons/core-free-icons");
|
|
4522
|
-
var
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4521
|
+
var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
4522
|
+
const [loaded, setLoaded] = (0, import_react77.useState)(false);
|
|
4523
|
+
const [error, setError] = (0, import_react77.useState)(false);
|
|
4524
|
+
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
|
|
4525
|
+
const finalSrc = error || !src ? defaultAvatar : src;
|
|
4526
|
+
const getStatusColor = () => {
|
|
4527
|
+
switch (status?.toUpperCase()) {
|
|
4528
|
+
case "SCHEDULED":
|
|
4529
|
+
return "bg-amber-500";
|
|
4530
|
+
case "ONGOING":
|
|
4531
|
+
return "bg-emerald-500";
|
|
4532
|
+
case "COMPLETED":
|
|
4533
|
+
return "bg-neutral-400";
|
|
4534
|
+
case "CANCELLED":
|
|
4535
|
+
return "bg-rose-500";
|
|
4536
|
+
default:
|
|
4537
|
+
return "bg-neutral-200";
|
|
4538
|
+
}
|
|
4539
|
+
};
|
|
4540
|
+
return /* @__PURE__ */ import_react77.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react77.default.createElement(
|
|
4541
|
+
"img",
|
|
4542
|
+
{
|
|
4543
|
+
src: finalSrc,
|
|
4544
|
+
alt: "Huddle Avatar",
|
|
4545
|
+
className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
|
|
4546
|
+
onLoad: () => setLoaded(true),
|
|
4547
|
+
onError: () => setError(true)
|
|
4548
|
+
}
|
|
4549
|
+
)), /* @__PURE__ */ import_react77.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4526
4550
|
};
|
|
4527
4551
|
var PageSpinner6 = () => /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4528
|
-
var
|
|
4552
|
+
var UniversalHuddlesPage = ({
|
|
4529
4553
|
headerTitle,
|
|
4530
4554
|
headerDescription,
|
|
4531
|
-
|
|
4555
|
+
huddles,
|
|
4532
4556
|
isLoading,
|
|
4533
4557
|
currentPage,
|
|
4534
4558
|
totalPages,
|
|
4535
4559
|
onPageChange,
|
|
4536
|
-
|
|
4537
|
-
|
|
4560
|
+
onHuddleClick,
|
|
4561
|
+
onCreateHuddle
|
|
4538
4562
|
}) => {
|
|
4539
|
-
|
|
4540
|
-
const [deptName, setDeptName] = (0, import_react77.useState)("");
|
|
4541
|
-
const [isCreating, setIsCreating] = (0, import_react77.useState)(false);
|
|
4542
|
-
const handleCreateSubmit = async (e) => {
|
|
4543
|
-
e.preventDefault();
|
|
4544
|
-
if (deptName.length < 2 || isCreating || !onCreateDepartment) return;
|
|
4545
|
-
setIsCreating(true);
|
|
4546
|
-
try {
|
|
4547
|
-
await onCreateDepartment(deptName);
|
|
4548
|
-
setDeptName("");
|
|
4549
|
-
setIsCreateModalOpen(false);
|
|
4550
|
-
} catch (error) {
|
|
4551
|
-
import_react_hot_toast13.default.error(error.message || "Failed to create department.");
|
|
4552
|
-
} finally {
|
|
4553
|
-
setIsCreating(false);
|
|
4554
|
-
}
|
|
4555
|
-
};
|
|
4556
|
-
return /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react77.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateDepartment && /* @__PURE__ */ import_react77.default.createElement(
|
|
4563
|
+
return /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react77.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateHuddle && /* @__PURE__ */ import_react77.default.createElement(
|
|
4557
4564
|
"button",
|
|
4558
4565
|
{
|
|
4559
|
-
onClick:
|
|
4566
|
+
onClick: onCreateHuddle,
|
|
4560
4567
|
className: "shrink-0 px-4 py-1.5 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
|
|
4561
4568
|
},
|
|
4562
4569
|
"Create new"
|
|
4563
|
-
)), headerDescription && /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react77.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react77.default.createElement("div", null,
|
|
4570
|
+
)), headerDescription && /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react77.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react77.default.createElement("div", null, huddles.length === 0 ? /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No huddles available") : huddles.map((huddle) => /* @__PURE__ */ import_react77.default.createElement(
|
|
4564
4571
|
"div",
|
|
4565
4572
|
{
|
|
4566
|
-
key:
|
|
4567
|
-
onClick: () =>
|
|
4573
|
+
key: huddle.id,
|
|
4574
|
+
onClick: () => onHuddleClick(huddle.id),
|
|
4568
4575
|
className: "flex flex-row items-center gap-4 py-2 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4569
4576
|
},
|
|
4570
|
-
/* @__PURE__ */ import_react77.default.createElement(
|
|
4571
|
-
|
|
4572
|
-
{
|
|
4573
|
-
src: src || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif",
|
|
4574
|
-
alt: "Member",
|
|
4575
|
-
className: "w-full h-full object-cover"
|
|
4576
|
-
}
|
|
4577
|
-
)))), dept.totalMembers > 0 ? /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-500 truncate block" }, formatMembersCount(dept.totalMembers), " ", dept.totalMembers > 4 ? "+" : "") : /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-400 truncate block" }, "No Members"))),
|
|
4577
|
+
/* @__PURE__ */ import_react77.default.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
|
|
4578
|
+
/* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-500 truncate block mt-0.5" }, huddle.timeString)),
|
|
4578
4579
|
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14, className: "shrink-0 text-neutral-400" })
|
|
4579
4580
|
))), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react77.default.createElement(
|
|
4580
4581
|
"button",
|
|
@@ -4592,55 +4593,13 @@ var UniversalDepartmentsPage = ({
|
|
|
4592
4593
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4593
4594
|
},
|
|
4594
4595
|
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14 })
|
|
4595
|
-
)))))), isCreateModalOpen && /* @__PURE__ */ import_react77.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isCreating && setIsCreateModalOpen(false) }), /* @__PURE__ */ import_react77.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center justify-between pt-5 px-5 shrink-0 " }, /* @__PURE__ */ import_react77.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Create Department"), /* @__PURE__ */ import_react77.default.createElement(
|
|
4596
|
-
"button",
|
|
4597
|
-
{
|
|
4598
|
-
onClick: () => setIsCreateModalOpen(false),
|
|
4599
|
-
disabled: isCreating,
|
|
4600
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4601
|
-
},
|
|
4602
|
-
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.CancelCircleIcon, size: 18 })
|
|
4603
|
-
)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react77.default.createElement("form", { onSubmit: handleCreateSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react77.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Department Name"), /* @__PURE__ */ import_react77.default.createElement(
|
|
4604
|
-
"input",
|
|
4605
|
-
{
|
|
4606
|
-
type: "text",
|
|
4607
|
-
value: deptName,
|
|
4608
|
-
onChange: (e) => setDeptName(e.target.value),
|
|
4609
|
-
required: true,
|
|
4610
|
-
autoFocus: true,
|
|
4611
|
-
maxLength: 50,
|
|
4612
|
-
disabled: isCreating,
|
|
4613
|
-
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-200 text-black outline-none focus:border-black transition-all duration-300 disabled:opacity-50",
|
|
4614
|
-
placeholder: "e.g. Engineering, Marketing..."
|
|
4615
|
-
}
|
|
4616
|
-
)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react77.default.createElement(
|
|
4617
|
-
ThreeDActionButton,
|
|
4618
|
-
{
|
|
4619
|
-
type: "submit",
|
|
4620
|
-
disabled: deptName.length < 2 || isCreating,
|
|
4621
|
-
isLoading: isCreating,
|
|
4622
|
-
className: "w-full"
|
|
4623
|
-
},
|
|
4624
|
-
"Create Department"
|
|
4625
|
-
), /* @__PURE__ */ import_react77.default.createElement(
|
|
4626
|
-
"button",
|
|
4627
|
-
{
|
|
4628
|
-
type: "button",
|
|
4629
|
-
onClick: () => {
|
|
4630
|
-
setIsCreateModalOpen(false);
|
|
4631
|
-
setDeptName("");
|
|
4632
|
-
},
|
|
4633
|
-
disabled: isCreating,
|
|
4634
|
-
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-xs tracking-wide"
|
|
4635
|
-
},
|
|
4636
|
-
"Cancel"
|
|
4637
4596
|
)))))));
|
|
4638
4597
|
};
|
|
4639
4598
|
|
|
4640
4599
|
// src/components/UniversalMembersPage.tsx
|
|
4641
4600
|
var import_react79 = __toESM(require("react"));
|
|
4642
4601
|
var import_react80 = require("@hugeicons/react");
|
|
4643
|
-
var
|
|
4602
|
+
var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
|
|
4644
4603
|
var import_core_free_icons28 = require("@hugeicons/core-free-icons");
|
|
4645
4604
|
var MemberAvatar = ({ src, status }) => {
|
|
4646
4605
|
const [loaded, setLoaded] = (0, import_react79.useState)(false);
|
|
@@ -4735,11 +4694,11 @@ var UniversalMembersPage = ({
|
|
|
4735
4694
|
setIsRemoving(true);
|
|
4736
4695
|
try {
|
|
4737
4696
|
await onRemoveMember(memberToRemove.id);
|
|
4738
|
-
|
|
4697
|
+
import_react_hot_toast13.default.success("Member removed successfully.");
|
|
4739
4698
|
setExpandedId(null);
|
|
4740
4699
|
setMemberToRemove(null);
|
|
4741
4700
|
} catch (error) {
|
|
4742
|
-
|
|
4701
|
+
import_react_hot_toast13.default.error("Failed to remove member.");
|
|
4743
4702
|
} finally {
|
|
4744
4703
|
setIsRemoving(false);
|
|
4745
4704
|
}
|
|
@@ -4753,7 +4712,7 @@ var UniversalMembersPage = ({
|
|
|
4753
4712
|
setInviteEmail("");
|
|
4754
4713
|
setIsInviteMode(false);
|
|
4755
4714
|
} catch (error) {
|
|
4756
|
-
|
|
4715
|
+
import_react_hot_toast13.default.error(error.message || "Failed to send invitation.");
|
|
4757
4716
|
} finally {
|
|
4758
4717
|
setIsInviting(false);
|
|
4759
4718
|
}
|
|
@@ -4900,15 +4859,29 @@ var UniversalMembersPage = ({
|
|
|
4900
4859
|
var import_react81 = __toESM(require("react"));
|
|
4901
4860
|
var import_navigation6 = require("next/navigation");
|
|
4902
4861
|
var import_react82 = require("@hugeicons/react");
|
|
4903
|
-
var
|
|
4862
|
+
var import_react_hot_toast14 = __toESM(require("react-hot-toast"));
|
|
4904
4863
|
var import_core_free_icons29 = require("@hugeicons/core-free-icons");
|
|
4864
|
+
var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
|
|
4865
|
+
const [loaded, setLoaded] = (0, import_react81.useState)(false);
|
|
4866
|
+
const [error, setError] = (0, import_react81.useState)(false);
|
|
4867
|
+
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
|
|
4868
|
+
const finalSrc = error || !src ? defaultAvatar : src;
|
|
4869
|
+
return /* @__PURE__ */ import_react81.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react81.default.createElement(
|
|
4870
|
+
"img",
|
|
4871
|
+
{
|
|
4872
|
+
src: finalSrc,
|
|
4873
|
+
alt: "Workspace Avatar",
|
|
4874
|
+
className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
|
|
4875
|
+
onLoad: () => setLoaded(true),
|
|
4876
|
+
onError: () => setError(true)
|
|
4877
|
+
}
|
|
4878
|
+
)));
|
|
4879
|
+
};
|
|
4905
4880
|
var UniversalHome2 = ({
|
|
4906
4881
|
avatarSrc,
|
|
4907
|
-
userStatus = "ACTIVE",
|
|
4908
4882
|
organizations = [],
|
|
4909
4883
|
activeOrgId,
|
|
4910
4884
|
onOrganizationSelect,
|
|
4911
|
-
barIcons = [],
|
|
4912
4885
|
createHuddleAction,
|
|
4913
4886
|
joinHuddleAction,
|
|
4914
4887
|
notifications = [],
|
|
@@ -4920,7 +4893,7 @@ var UniversalHome2 = ({
|
|
|
4920
4893
|
onResolveInvite,
|
|
4921
4894
|
formatNotifDate,
|
|
4922
4895
|
customContent,
|
|
4923
|
-
|
|
4896
|
+
huddlesProps,
|
|
4924
4897
|
onLogout
|
|
4925
4898
|
}) => {
|
|
4926
4899
|
const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react81.useState)(false);
|
|
@@ -4934,27 +4907,13 @@ var UniversalHome2 = ({
|
|
|
4934
4907
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4935
4908
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
4936
4909
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
4937
|
-
const getDisplayStatus = () => {
|
|
4938
|
-
if (userStatus === "ACTIVE") return "Online";
|
|
4939
|
-
if (userStatus === "BUSY") return "Busy";
|
|
4940
|
-
if (userStatus === "OFFLINE") return "Offline";
|
|
4941
|
-
if (userStatus === "AWAY") return "Away";
|
|
4942
|
-
return "Online";
|
|
4943
|
-
};
|
|
4944
|
-
const getStatusColor = () => {
|
|
4945
|
-
if (userStatus === "ACTIVE") return "bg-emerald-500";
|
|
4946
|
-
if (userStatus === "BUSY") return "bg-amber-500";
|
|
4947
|
-
if (userStatus === "OFFLINE") return "bg-rose-500";
|
|
4948
|
-
if (userStatus === "AWAY") return "bg-neutral-400";
|
|
4949
|
-
return "bg-emerald-500";
|
|
4950
|
-
};
|
|
4951
4910
|
const handleResolve = async (resolution) => {
|
|
4952
4911
|
if (!onResolveInvite || !selectedNotif) return;
|
|
4953
4912
|
setIsResolving(true);
|
|
4954
4913
|
try {
|
|
4955
4914
|
await onResolveInvite(selectedNotif, resolution);
|
|
4956
4915
|
} catch (error) {
|
|
4957
|
-
|
|
4916
|
+
import_react_hot_toast14.default.error("Failed to process invitation");
|
|
4958
4917
|
} finally {
|
|
4959
4918
|
setIsResolving(false);
|
|
4960
4919
|
}
|
|
@@ -4964,7 +4923,7 @@ var UniversalHome2 = ({
|
|
|
4964
4923
|
try {
|
|
4965
4924
|
if (onLogout) await onLogout();
|
|
4966
4925
|
} catch (e) {
|
|
4967
|
-
|
|
4926
|
+
import_react_hot_toast14.default.error("Failed to log out cleanly.");
|
|
4968
4927
|
} finally {
|
|
4969
4928
|
setIsLoggingOut(false);
|
|
4970
4929
|
setShowLogoutConfirm(false);
|
|
@@ -5040,9 +4999,9 @@ var UniversalHome2 = ({
|
|
|
5040
4999
|
}
|
|
5041
5000
|
)
|
|
5042
5001
|
))), customContent && /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react81.default.createElement(
|
|
5043
|
-
|
|
5002
|
+
UniversalHuddlesPage,
|
|
5044
5003
|
{
|
|
5045
|
-
...
|
|
5004
|
+
...huddlesProps
|
|
5046
5005
|
}
|
|
5047
5006
|
)), showOrgSwitcher && /* @__PURE__ */ import_react81.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ import_react81.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react81.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ import_react81.default.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ import_react81.default.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ import_react81.default.createElement(
|
|
5048
5007
|
"button",
|
|
@@ -5054,6 +5013,7 @@ var UniversalHome2 = ({
|
|
|
5054
5013
|
},
|
|
5055
5014
|
className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-neutral-50 last:border-0 ${activeOrgId === org.id ? "bg-neutral-50" : "hover:bg-neutral-50/50"}`
|
|
5056
5015
|
},
|
|
5016
|
+
/* @__PURE__ */ import_react81.default.createElement(OrgAvatar, { src: org.avatarUrl }),
|
|
5057
5017
|
/* @__PURE__ */ import_react81.default.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ import_react81.default.createElement("span", { className: `text-[13px] tracking-tight truncate w-full text-left ${activeOrgId === org.id ? "text-black " : "text-neutral-600"}` }, org.name), /* @__PURE__ */ import_react81.default.createElement("span", { className: "text-[11px] text-[#068afe] capitalize truncate w-full text-left mt-0.5" }, org.role?.toLowerCase() || "Member")),
|
|
5058
5018
|
activeOrgId === org.id && /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#068afe] shrink-0" })
|
|
5059
5019
|
)))), /* @__PURE__ */ import_react81.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react81.default.createElement(
|
|
@@ -5115,13 +5075,59 @@ var UniversalHome2 = ({
|
|
|
5115
5075
|
};
|
|
5116
5076
|
|
|
5117
5077
|
// src/components/UniversalSettings.tsx
|
|
5078
|
+
var import_react85 = __toESM(require("react"));
|
|
5079
|
+
var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
|
|
5080
|
+
var import_react86 = require("@hugeicons/react");
|
|
5081
|
+
var import_core_free_icons31 = require("@hugeicons/core-free-icons");
|
|
5082
|
+
|
|
5083
|
+
// src/components/ReusableOptions.tsx
|
|
5118
5084
|
var import_react83 = __toESM(require("react"));
|
|
5119
|
-
var import_react_hot_toast16 = __toESM(require("react-hot-toast"));
|
|
5120
5085
|
var import_react84 = require("@hugeicons/react");
|
|
5121
5086
|
var import_core_free_icons30 = require("@hugeicons/core-free-icons");
|
|
5087
|
+
var ReusableOptions = ({
|
|
5088
|
+
isOpen,
|
|
5089
|
+
onClose,
|
|
5090
|
+
title,
|
|
5091
|
+
options,
|
|
5092
|
+
selectedOption,
|
|
5093
|
+
onSelect,
|
|
5094
|
+
showSearch = false
|
|
5095
|
+
}) => {
|
|
5096
|
+
const [searchQuery, setSearchQuery] = (0, import_react83.useState)("");
|
|
5097
|
+
if (!isOpen) return null;
|
|
5098
|
+
const filteredOptions = options.filter(
|
|
5099
|
+
(opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
|
|
5100
|
+
);
|
|
5101
|
+
return /* @__PURE__ */ import_react83.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react83.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react83.default.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react83.default.createElement(
|
|
5102
|
+
"input",
|
|
5103
|
+
{
|
|
5104
|
+
type: "text",
|
|
5105
|
+
placeholder: "Search...",
|
|
5106
|
+
value: searchQuery,
|
|
5107
|
+
onChange: (e) => setSearchQuery(e.target.value),
|
|
5108
|
+
className: "w-full pl-10 pr-4 py-2.5 bg-neutral-100 rounded-full text-[13px] text-black placeholder-neutral-400 outline-none focus:bg-neutral-200 transition-colors"
|
|
5109
|
+
}
|
|
5110
|
+
))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, filteredOptions.length === 0 ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-6 text-center text-[12px] text-neutral-400" }, "No options found.") : filteredOptions.map((opt) => {
|
|
5111
|
+
const isSelected = selectedOption === opt;
|
|
5112
|
+
return /* @__PURE__ */ import_react83.default.createElement(
|
|
5113
|
+
"button",
|
|
5114
|
+
{
|
|
5115
|
+
key: opt,
|
|
5116
|
+
onClick: () => {
|
|
5117
|
+
onSelect(opt);
|
|
5118
|
+
onClose();
|
|
5119
|
+
},
|
|
5120
|
+
className: `w-full text-left p-4 text-[13px] tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#068afe] bg-[#068afe]/10" : "text-neutral-600 hover:bg-neutral-50/50"}`
|
|
5121
|
+
},
|
|
5122
|
+
opt
|
|
5123
|
+
);
|
|
5124
|
+
}))));
|
|
5125
|
+
};
|
|
5126
|
+
|
|
5127
|
+
// src/components/UniversalSettings.tsx
|
|
5122
5128
|
var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
5123
|
-
const [loaded, setLoaded] = (0,
|
|
5124
|
-
const [error, setError] = (0,
|
|
5129
|
+
const [loaded, setLoaded] = (0, import_react85.useState)(false);
|
|
5130
|
+
const [error, setError] = (0, import_react85.useState)(false);
|
|
5125
5131
|
const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
5126
5132
|
const finalSrc = error || !src ? defaultAvatar : src;
|
|
5127
5133
|
const getStatusColor = () => {
|
|
@@ -5138,7 +5144,7 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5138
5144
|
return "bg-neutral-200";
|
|
5139
5145
|
}
|
|
5140
5146
|
};
|
|
5141
|
-
return /* @__PURE__ */
|
|
5147
|
+
return /* @__PURE__ */ import_react85.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react85.default.createElement(
|
|
5142
5148
|
"img",
|
|
5143
5149
|
{
|
|
5144
5150
|
src: finalSrc,
|
|
@@ -5147,10 +5153,10 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
|
5147
5153
|
onLoad: () => setLoaded(true),
|
|
5148
5154
|
onError: () => setError(true)
|
|
5149
5155
|
}
|
|
5150
|
-
)), /* @__PURE__ */
|
|
5156
|
+
)), /* @__PURE__ */ import_react85.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
5151
5157
|
};
|
|
5152
|
-
var PageSpinner8 = () => /* @__PURE__ */
|
|
5153
|
-
var InputSpinner3 = () => /* @__PURE__ */
|
|
5158
|
+
var PageSpinner8 = () => /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
5159
|
+
var InputSpinner3 = () => /* @__PURE__ */ import_react85.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_react85.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react85.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" }));
|
|
5154
5160
|
var UniversalSettings = ({
|
|
5155
5161
|
accountType,
|
|
5156
5162
|
userRole,
|
|
@@ -5184,41 +5190,31 @@ var UniversalSettings = ({
|
|
|
5184
5190
|
const onBackHandler = onBack ?? (() => {
|
|
5185
5191
|
if (typeof window !== "undefined") window.history.back();
|
|
5186
5192
|
});
|
|
5187
|
-
const [activeTab, setActiveTab] = (0,
|
|
5188
|
-
(0,
|
|
5193
|
+
const [activeTab, setActiveTab] = (0, import_react85.useState)(accountType === "ORGANIZATION" ? "MEMBERS" : "ACCOUNT");
|
|
5194
|
+
(0, import_react85.useEffect)(() => {
|
|
5189
5195
|
if (accountType === "INDIVIDUAL" && activeTab === "MEMBERS") {
|
|
5190
5196
|
setActiveTab("ACCOUNT");
|
|
5191
5197
|
}
|
|
5192
5198
|
}, [accountType, activeTab]);
|
|
5193
|
-
const [expandedId, setExpandedId] = (0,
|
|
5194
|
-
const [memberToRemove, setMemberToRemove] = (0,
|
|
5195
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
5196
|
-
const [isInviteMode, setIsInviteMode] = (0,
|
|
5197
|
-
const [inviteEmail, setInviteEmail] = (0,
|
|
5198
|
-
const [isInviting, setIsInviting] = (0,
|
|
5199
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
5200
|
-
const [isTyping, setIsTyping] = (0,
|
|
5201
|
-
const isFirstSearchMount = (0,
|
|
5202
|
-
const [isStatusModalOpen, setIsStatusModalOpen] = (0,
|
|
5203
|
-
const [isRoleModalOpen, setIsRoleModalOpen] = (0,
|
|
5204
|
-
const
|
|
5205
|
-
const
|
|
5206
|
-
const [
|
|
5207
|
-
const [
|
|
5208
|
-
const [
|
|
5209
|
-
const [slugAvailable, setSlugAvailable] = (0, import_react83.useState)(null);
|
|
5210
|
-
const [isSavingAccount, setIsSavingAccount] = (0, import_react83.useState)(false);
|
|
5199
|
+
const [expandedId, setExpandedId] = (0, import_react85.useState)(null);
|
|
5200
|
+
const [memberToRemove, setMemberToRemove] = (0, import_react85.useState)(null);
|
|
5201
|
+
const [isRemoving, setIsRemoving] = (0, import_react85.useState)(false);
|
|
5202
|
+
const [isInviteMode, setIsInviteMode] = (0, import_react85.useState)(false);
|
|
5203
|
+
const [inviteEmail, setInviteEmail] = (0, import_react85.useState)("");
|
|
5204
|
+
const [isInviting, setIsInviting] = (0, import_react85.useState)(false);
|
|
5205
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react85.useState)(membersSearchQuery);
|
|
5206
|
+
const [isTyping, setIsTyping] = (0, import_react85.useState)(false);
|
|
5207
|
+
const isFirstSearchMount = (0, import_react85.useRef)(true);
|
|
5208
|
+
const [isStatusModalOpen, setIsStatusModalOpen] = (0, import_react85.useState)(false);
|
|
5209
|
+
const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react85.useState)(false);
|
|
5210
|
+
const [displayName, setDisplayName] = (0, import_react85.useState)(initialDisplayName);
|
|
5211
|
+
const [slug, setSlug] = (0, import_react85.useState)(initialSlug);
|
|
5212
|
+
const [isCheckingSlug, setIsCheckingSlug] = (0, import_react85.useState)(false);
|
|
5213
|
+
const [slugAvailable, setSlugAvailable] = (0, import_react85.useState)(null);
|
|
5214
|
+
const [isSavingAccount, setIsSavingAccount] = (0, import_react85.useState)(false);
|
|
5211
5215
|
const isAccountReadOnly = accountType === "ORGANIZATION" && userRole !== "ADMIN" && userRole !== "MANAGER";
|
|
5212
5216
|
const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
|
|
5213
|
-
(0,
|
|
5214
|
-
function handleClickOutside(event) {
|
|
5215
|
-
if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) setIsStatusModalOpen(false);
|
|
5216
|
-
if (roleDropdownRef.current && !roleDropdownRef.current.contains(event.target)) setIsRoleModalOpen(false);
|
|
5217
|
-
}
|
|
5218
|
-
document.addEventListener("mousedown", handleClickOutside);
|
|
5219
|
-
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
5220
|
-
}, []);
|
|
5221
|
-
(0, import_react83.useEffect)(() => {
|
|
5217
|
+
(0, import_react85.useEffect)(() => {
|
|
5222
5218
|
if (activeTab !== "MEMBERS") return;
|
|
5223
5219
|
if (isFirstSearchMount.current) {
|
|
5224
5220
|
isFirstSearchMount.current = false;
|
|
@@ -5236,11 +5232,11 @@ var UniversalSettings = ({
|
|
|
5236
5232
|
setIsRemoving(true);
|
|
5237
5233
|
try {
|
|
5238
5234
|
await onRemoveMember(memberToRemove.userId);
|
|
5239
|
-
|
|
5235
|
+
import_react_hot_toast15.default.success("Member removed successfully.");
|
|
5240
5236
|
setExpandedId(null);
|
|
5241
5237
|
setMemberToRemove(null);
|
|
5242
5238
|
} catch (error) {
|
|
5243
|
-
|
|
5239
|
+
import_react_hot_toast15.default.error("Failed to remove member.");
|
|
5244
5240
|
} finally {
|
|
5245
5241
|
setIsRemoving(false);
|
|
5246
5242
|
}
|
|
@@ -5254,19 +5250,19 @@ var UniversalSettings = ({
|
|
|
5254
5250
|
setInviteEmail("");
|
|
5255
5251
|
setIsInviteMode(false);
|
|
5256
5252
|
} catch (error) {
|
|
5257
|
-
|
|
5253
|
+
import_react_hot_toast15.default.error(error.message || "Failed to send invitation.");
|
|
5258
5254
|
} finally {
|
|
5259
5255
|
setIsInviting(false);
|
|
5260
5256
|
}
|
|
5261
5257
|
};
|
|
5262
5258
|
const activeExpandedMember = expandedId ? members.find((m) => m.id === expandedId) : null;
|
|
5263
|
-
(0,
|
|
5259
|
+
(0, import_react85.useEffect)(() => {
|
|
5264
5260
|
setDisplayName(initialDisplayName || "");
|
|
5265
5261
|
setSlug(initialSlug || "");
|
|
5266
5262
|
}, [initialDisplayName, initialSlug]);
|
|
5267
5263
|
const handleDisplayNameChange = (val) => setDisplayName(val.replace(/[^a-zA-Z0-9\s-]/g, "").substring(0, 50));
|
|
5268
5264
|
const handleSlugChange = (val) => setSlug(val.toLowerCase().replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").substring(0, 50));
|
|
5269
|
-
(0,
|
|
5265
|
+
(0, import_react85.useEffect)(() => {
|
|
5270
5266
|
if (!slug || slug === initialSlug) {
|
|
5271
5267
|
setSlugAvailable(null);
|
|
5272
5268
|
setIsCheckingSlug(false);
|
|
@@ -5297,7 +5293,7 @@ var UniversalSettings = ({
|
|
|
5297
5293
|
e.preventDefault();
|
|
5298
5294
|
if (isSavingAccount || isCheckingSlug || isAccountReadOnly || !onSaveAccount) return;
|
|
5299
5295
|
if (slug !== initialSlug && slugAvailable === false) {
|
|
5300
|
-
|
|
5296
|
+
import_react_hot_toast15.default.error("Please select an available address handle.");
|
|
5301
5297
|
return;
|
|
5302
5298
|
}
|
|
5303
5299
|
setIsSavingAccount(true);
|
|
@@ -5308,19 +5304,19 @@ var UniversalSettings = ({
|
|
|
5308
5304
|
};
|
|
5309
5305
|
const res = await onSaveAccount(payload);
|
|
5310
5306
|
if (res.success) {
|
|
5311
|
-
|
|
5307
|
+
import_react_hot_toast15.default.success("Profile updated successfully.");
|
|
5312
5308
|
} else {
|
|
5313
|
-
|
|
5309
|
+
import_react_hot_toast15.default.error(res.error || "Failed to update profile.");
|
|
5314
5310
|
}
|
|
5315
5311
|
} catch (error) {
|
|
5316
|
-
|
|
5312
|
+
import_react_hot_toast15.default.error("Service unavailable. Try again later.");
|
|
5317
5313
|
} finally {
|
|
5318
5314
|
setIsSavingAccount(false);
|
|
5319
5315
|
}
|
|
5320
5316
|
};
|
|
5321
5317
|
const hasAccountChanges = displayName !== initialDisplayName || slug !== initialSlug;
|
|
5322
5318
|
const isAccountSaveDisabled = isSavingAccount || isAccountReadOnly || isCheckingSlug || !hasAccountChanges || displayName.length < 3 || slug.length < 3 || slug !== initialSlug && slugAvailable === false;
|
|
5323
|
-
return /* @__PURE__ */
|
|
5319
|
+
return /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react85.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react85.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-6 mb-6 overflow-x-auto custom-scrollbar px-1" }, accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement(
|
|
5324
5320
|
"button",
|
|
5325
5321
|
{
|
|
5326
5322
|
onClick: () => {
|
|
@@ -5331,21 +5327,21 @@ var UniversalSettings = ({
|
|
|
5331
5327
|
className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "MEMBERS" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
|
|
5332
5328
|
},
|
|
5333
5329
|
"Members"
|
|
5334
|
-
), /* @__PURE__ */
|
|
5330
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5335
5331
|
"button",
|
|
5336
5332
|
{
|
|
5337
5333
|
onClick: () => setActiveTab("ACCOUNT"),
|
|
5338
5334
|
className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "ACCOUNT" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
|
|
5339
5335
|
},
|
|
5340
5336
|
"Account Profile"
|
|
5341
|
-
), /* @__PURE__ */
|
|
5337
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5342
5338
|
"button",
|
|
5343
5339
|
{
|
|
5344
5340
|
onClick: () => setActiveTab("BILLING"),
|
|
5345
5341
|
className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "BILLING" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
|
|
5346
5342
|
},
|
|
5347
5343
|
"Billing"
|
|
5348
|
-
)), activeTab === "MEMBERS" && accountType === "ORGANIZATION" && /* @__PURE__ */
|
|
5344
|
+
)), activeTab === "MEMBERS" && accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5349
5345
|
ConfirmationDialog,
|
|
5350
5346
|
{
|
|
5351
5347
|
isOpen: !!memberToRemove,
|
|
@@ -5358,7 +5354,7 @@ var UniversalSettings = ({
|
|
|
5358
5354
|
onClose: () => setMemberToRemove(null),
|
|
5359
5355
|
onConfirm: handleConfirmRemove
|
|
5360
5356
|
}
|
|
5361
|
-
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */
|
|
5357
|
+
), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react85.default.createElement(
|
|
5362
5358
|
"input",
|
|
5363
5359
|
{
|
|
5364
5360
|
type: "text",
|
|
@@ -5367,28 +5363,28 @@ var UniversalSettings = ({
|
|
|
5367
5363
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
5368
5364
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
5369
5365
|
}
|
|
5370
|
-
)), /* @__PURE__ */
|
|
5366
|
+
)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5371
5367
|
"button",
|
|
5372
5368
|
{
|
|
5373
5369
|
onClick: () => setIsStatusModalOpen(true),
|
|
5374
5370
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
5375
5371
|
},
|
|
5376
|
-
/* @__PURE__ */
|
|
5377
|
-
), /* @__PURE__ */
|
|
5372
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.SearchList02Icon, size: 16 })
|
|
5373
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5378
5374
|
"button",
|
|
5379
5375
|
{
|
|
5380
5376
|
onClick: () => setIsRoleModalOpen(true),
|
|
5381
5377
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
5382
5378
|
},
|
|
5383
|
-
/* @__PURE__ */
|
|
5384
|
-
))), /* @__PURE__ */
|
|
5379
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ListSettingIcon, size: 16 })
|
|
5380
|
+
))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ import_react85.default.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
|
|
5385
5381
|
"button",
|
|
5386
5382
|
{
|
|
5387
5383
|
onClick: () => setMemberToRemove(activeExpandedMember),
|
|
5388
5384
|
className: "w-full sm:flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-[12px] tracking-wide transition-colors outline-none"
|
|
5389
5385
|
},
|
|
5390
5386
|
"Remove Access"
|
|
5391
|
-
), /* @__PURE__ */
|
|
5387
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5392
5388
|
"button",
|
|
5393
5389
|
{
|
|
5394
5390
|
onClick: () => setExpandedId(null),
|
|
@@ -5397,14 +5393,14 @@ var UniversalSettings = ({
|
|
|
5397
5393
|
"Close Profile"
|
|
5398
5394
|
))) : (
|
|
5399
5395
|
// Standard List & Invite Header
|
|
5400
|
-
/* @__PURE__ */
|
|
5396
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react85.default.Fragment, null, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
|
|
5401
5397
|
"button",
|
|
5402
5398
|
{
|
|
5403
5399
|
onClick: () => setIsInviteMode(true),
|
|
5404
5400
|
className: "shrink-0 px-4 py-1.5 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
|
|
5405
5401
|
},
|
|
5406
5402
|
"Invite Team"
|
|
5407
|
-
)), !isInviteMode && /* @__PURE__ */
|
|
5403
|
+
)), !isInviteMode && /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react85.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react85.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react85.default.createElement(
|
|
5408
5404
|
"input",
|
|
5409
5405
|
{
|
|
5410
5406
|
type: "email",
|
|
@@ -5415,7 +5411,7 @@ var UniversalSettings = ({
|
|
|
5415
5411
|
className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-200 text-black outline-none focus:border-black transition-all duration-300",
|
|
5416
5412
|
placeholder: "name@company.com"
|
|
5417
5413
|
}
|
|
5418
|
-
)), /* @__PURE__ */
|
|
5414
|
+
)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5419
5415
|
ThreeDActionButton,
|
|
5420
5416
|
{
|
|
5421
5417
|
type: "submit",
|
|
@@ -5424,7 +5420,7 @@ var UniversalSettings = ({
|
|
|
5424
5420
|
className: "w-full"
|
|
5425
5421
|
},
|
|
5426
5422
|
"Send Invitation"
|
|
5427
|
-
), /* @__PURE__ */
|
|
5423
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5428
5424
|
"button",
|
|
5429
5425
|
{
|
|
5430
5426
|
type: "button",
|
|
@@ -5436,54 +5432,52 @@ var UniversalSettings = ({
|
|
|
5436
5432
|
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-xs tracking-wide"
|
|
5437
5433
|
},
|
|
5438
5434
|
"Cancel"
|
|
5439
|
-
))) : isMembersLoading || isTyping ? /* @__PURE__ */
|
|
5435
|
+
))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react85.default.createElement(PageSpinner8, null) : /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react85.default.createElement(
|
|
5440
5436
|
"div",
|
|
5441
5437
|
{
|
|
5442
5438
|
key: member.id,
|
|
5443
5439
|
onClick: () => setExpandedId(member.id),
|
|
5444
5440
|
className: "flex items-center justify-between py-3 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
5445
5441
|
},
|
|
5446
|
-
/* @__PURE__ */
|
|
5447
|
-
))), /* @__PURE__ */
|
|
5442
|
+
/* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react85.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react85.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[13px] text-black truncate" }, member.fullName), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-neutral-500 capitalize truncate" }, member.role.toLowerCase())))
|
|
5443
|
+
))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5448
5444
|
"button",
|
|
5449
5445
|
{
|
|
5450
5446
|
onClick: () => onMembersPageChange(membersCurrentPage - 1),
|
|
5451
5447
|
disabled: membersCurrentPage <= 1 || isMembersLoading,
|
|
5452
5448
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5453
5449
|
},
|
|
5454
|
-
/* @__PURE__ */
|
|
5455
|
-
), /* @__PURE__ */
|
|
5450
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowLeft01Icon, size: 14 })
|
|
5451
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5456
5452
|
"button",
|
|
5457
5453
|
{
|
|
5458
5454
|
onClick: () => onMembersPageChange(membersCurrentPage + 1),
|
|
5459
5455
|
disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0,
|
|
5460
5456
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
5461
5457
|
},
|
|
5462
|
-
/* @__PURE__ */
|
|
5458
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowRight01Icon, size: 14 })
|
|
5463
5459
|
))))))
|
|
5464
|
-
)),
|
|
5465
|
-
|
|
5466
|
-
{
|
|
5467
|
-
|
|
5468
|
-
|
|
5469
|
-
|
|
5470
|
-
|
|
5471
|
-
|
|
5472
|
-
|
|
5473
|
-
}
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
/* @__PURE__ */ import_react83.default.createElement("span", { className: "truncate pr-2 capitalize" }, option.toLowerCase())
|
|
5486
|
-
))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react83.default.createElement("button", { onClick: () => setIsRoleModalOpen(false), className: "w-full py-4 text-[13px] text-[#068afe] hover:text-[#068afe] transition-colors outline-none" }, "Cancel"))))), activeTab === "ACCOUNT" && /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react83.default.createElement("div", null, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react83.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSaveAccount, autoComplete: "off" }, /* @__PURE__ */ import_react83.default.createElement(
|
|
5460
|
+
)), /* @__PURE__ */ import_react85.default.createElement(
|
|
5461
|
+
ReusableOptions,
|
|
5462
|
+
{
|
|
5463
|
+
isOpen: isStatusModalOpen,
|
|
5464
|
+
onClose: () => setIsStatusModalOpen(false),
|
|
5465
|
+
title: "Status Filter",
|
|
5466
|
+
options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"],
|
|
5467
|
+
selectedOption: activeStatusFilter,
|
|
5468
|
+
onSelect: (status) => onStatusFilterChange(status)
|
|
5469
|
+
}
|
|
5470
|
+
), /* @__PURE__ */ import_react85.default.createElement(
|
|
5471
|
+
ReusableOptions,
|
|
5472
|
+
{
|
|
5473
|
+
isOpen: isRoleModalOpen,
|
|
5474
|
+
onClose: () => setIsRoleModalOpen(false),
|
|
5475
|
+
title: "Role Filter",
|
|
5476
|
+
options: ["ALL", "ADMIN", "MANAGER", "MEMBER", "GUEST"],
|
|
5477
|
+
selectedOption: activeRoleFilter,
|
|
5478
|
+
onSelect: (role) => onRoleFilterChange(role)
|
|
5479
|
+
}
|
|
5480
|
+
)), activeTab === "ACCOUNT" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react85.default.createElement("div", null, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react85.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSaveAccount, autoComplete: "off" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5487
5481
|
TextInput,
|
|
5488
5482
|
{
|
|
5489
5483
|
label: "Display Name",
|
|
@@ -5493,7 +5487,7 @@ var UniversalSettings = ({
|
|
|
5493
5487
|
placeholder: "Sovereign User",
|
|
5494
5488
|
maxLength: 50
|
|
5495
5489
|
}
|
|
5496
|
-
), accountType === "ORGANIZATION" && /* @__PURE__ */
|
|
5490
|
+
), accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react85.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center relative w-full border-b border-neutral-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5497
5491
|
"input",
|
|
5498
5492
|
{
|
|
5499
5493
|
type: "text",
|
|
@@ -5505,7 +5499,7 @@ var UniversalSettings = ({
|
|
|
5505
5499
|
className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
5506
5500
|
placeholder: "workspace-handle"
|
|
5507
5501
|
}
|
|
5508
|
-
), /* @__PURE__ */
|
|
5502
|
+
), /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react85.default.createElement(InputSpinner3, null), !isCheckingSlug && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react85.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react85.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react85.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 && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react85.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react85.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react85.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_react85.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react85.default.createElement(
|
|
5509
5503
|
ThreeDActionButton,
|
|
5510
5504
|
{
|
|
5511
5505
|
type: "submit",
|
|
@@ -5514,7 +5508,7 @@ var UniversalSettings = ({
|
|
|
5514
5508
|
className: "min-w-32"
|
|
5515
5509
|
},
|
|
5516
5510
|
"Save Changes"
|
|
5517
|
-
), hasAccountChanges && !isSavingAccount && !isAccountReadOnly && /* @__PURE__ */
|
|
5511
|
+
), hasAccountChanges && !isSavingAccount && !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
|
|
5518
5512
|
"button",
|
|
5519
5513
|
{
|
|
5520
5514
|
type: "button",
|
|
@@ -5525,21 +5519,15 @@ var UniversalSettings = ({
|
|
|
5525
5519
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
|
|
5526
5520
|
},
|
|
5527
5521
|
"Cancel"
|
|
5528
|
-
))))), activeTab === "BILLING" && /* @__PURE__ */
|
|
5522
|
+
))))), activeTab === "BILLING" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-row items-center justify-between w-full mt-2" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ import_react85.default.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Coins01Icon, size: 24, className: "text-black" }), /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-2xl text-black tracking-tight" }, aiCredits))), /* @__PURE__ */ import_react85.default.createElement(
|
|
5529
5523
|
"button",
|
|
5530
5524
|
{
|
|
5531
5525
|
onClick: onTopUp,
|
|
5532
|
-
className: "
|
|
5526
|
+
className: "w-10 h-10 rounded-full border border-neutral-200 flex items-center justify-center text-black hover:bg-neutral-50 transition-colors outline-none shrink-0",
|
|
5527
|
+
"aria-label": "Top Up Credits"
|
|
5533
5528
|
},
|
|
5534
|
-
|
|
5535
|
-
))
|
|
5536
|
-
"img",
|
|
5537
|
-
{
|
|
5538
|
-
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/save_box.avif",
|
|
5539
|
-
alt: "Credits",
|
|
5540
|
-
className: "absolute bottom-2 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
|
|
5541
|
-
}
|
|
5542
|
-
)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
|
|
5529
|
+
/* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.PlusSignIcon, size: 16 })
|
|
5530
|
+
)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
|
|
5543
5531
|
};
|
|
5544
5532
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5545
5533
|
0 && (module.exports = {
|
|
@@ -5576,10 +5564,10 @@ var UniversalSettings = ({
|
|
|
5576
5564
|
UniversalBuyCryptoPage,
|
|
5577
5565
|
UniversalCardActionPage,
|
|
5578
5566
|
UniversalCardPage,
|
|
5579
|
-
UniversalDepartmentsPage,
|
|
5580
5567
|
UniversalErrorView,
|
|
5581
5568
|
UniversalHome2,
|
|
5582
5569
|
UniversalHomeView,
|
|
5570
|
+
UniversalHuddlesPage,
|
|
5583
5571
|
UniversalMembersPage,
|
|
5584
5572
|
UniversalOrganizationPage,
|
|
5585
5573
|
UniversalProfilePage,
|