@retinalabsllc/zairusjs 16.0.95 → 16.1.1
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 +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +66 -8
- package/dist/index.mjs +66 -8
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1016,6 +1016,7 @@ interface UniversalMembersPageProps {
|
|
|
1016
1016
|
actionButtonText: string;
|
|
1017
1017
|
hideAction?: boolean;
|
|
1018
1018
|
onRemoveMember: (memberId: string) => Promise<void>;
|
|
1019
|
+
onInviteMember: (email: string) => Promise<void>;
|
|
1019
1020
|
}
|
|
1020
1021
|
declare const UniversalMembersPage: React.FC<UniversalMembersPageProps>;
|
|
1021
1022
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1016,6 +1016,7 @@ interface UniversalMembersPageProps {
|
|
|
1016
1016
|
actionButtonText: string;
|
|
1017
1017
|
hideAction?: boolean;
|
|
1018
1018
|
onRemoveMember: (memberId: string) => Promise<void>;
|
|
1019
|
+
onInviteMember: (email: string) => Promise<void>;
|
|
1019
1020
|
}
|
|
1020
1021
|
declare const UniversalMembersPage: React.FC<UniversalMembersPageProps>;
|
|
1021
1022
|
|
package/dist/index.js
CHANGED
|
@@ -4573,7 +4573,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4573
4573
|
return "bg-neutral-200";
|
|
4574
4574
|
}
|
|
4575
4575
|
};
|
|
4576
|
-
return /* @__PURE__ */ import_react79.default.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden
|
|
4576
|
+
return /* @__PURE__ */ import_react79.default.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react79.default.createElement(import_react80.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react79.default.createElement(
|
|
4577
4577
|
"img",
|
|
4578
4578
|
{
|
|
4579
4579
|
src: finalSrc,
|
|
@@ -4582,7 +4582,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4582
4582
|
onLoad: () => setLoaded(true),
|
|
4583
4583
|
onError: () => setError(true)
|
|
4584
4584
|
}
|
|
4585
|
-
)), /* @__PURE__ */ import_react79.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-
|
|
4585
|
+
)), /* @__PURE__ */ import_react79.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-2.5 h-2.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4586
4586
|
};
|
|
4587
4587
|
var PageSpinner7 = () => /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react79.default.createElement(import_react80.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4588
4588
|
var UniversalMembersPage = ({
|
|
@@ -4601,17 +4601,22 @@ var UniversalMembersPage = ({
|
|
|
4601
4601
|
onRoleFilterChange,
|
|
4602
4602
|
actionButtonText,
|
|
4603
4603
|
hideAction = false,
|
|
4604
|
-
onRemoveMember
|
|
4604
|
+
onRemoveMember,
|
|
4605
|
+
onInviteMember
|
|
4605
4606
|
}) => {
|
|
4606
4607
|
const [expandedId, setExpandedId] = (0, import_react79.useState)(null);
|
|
4607
4608
|
const [memberToRemove, setMemberToRemove] = (0, import_react79.useState)(null);
|
|
4608
4609
|
const [isRemoving, setIsRemoving] = (0, import_react79.useState)(false);
|
|
4610
|
+
const [isInviteMode, setIsInviteMode] = (0, import_react79.useState)(false);
|
|
4611
|
+
const [inviteEmail, setInviteEmail] = (0, import_react79.useState)("");
|
|
4612
|
+
const [isInviting, setIsInviting] = (0, import_react79.useState)(false);
|
|
4609
4613
|
const [localSearchQuery, setLocalSearchQuery] = (0, import_react79.useState)(searchQuery);
|
|
4610
4614
|
const [isTyping, setIsTyping] = (0, import_react79.useState)(false);
|
|
4611
4615
|
const [isStatusModalOpen, setIsStatusModalOpen] = (0, import_react79.useState)(false);
|
|
4612
4616
|
const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react79.useState)(false);
|
|
4613
4617
|
const statusDropdownRef = (0, import_react79.useRef)(null);
|
|
4614
4618
|
const roleDropdownRef = (0, import_react79.useRef)(null);
|
|
4619
|
+
const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
|
|
4615
4620
|
(0, import_react79.useEffect)(() => {
|
|
4616
4621
|
function handleClickOutside(event) {
|
|
4617
4622
|
if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) {
|
|
@@ -4651,6 +4656,20 @@ var UniversalMembersPage = ({
|
|
|
4651
4656
|
setIsRemoving(false);
|
|
4652
4657
|
}
|
|
4653
4658
|
};
|
|
4659
|
+
const handleInviteSubmit = async (e) => {
|
|
4660
|
+
e.preventDefault();
|
|
4661
|
+
if (inviteEmail.length < 5 || isInviting) return;
|
|
4662
|
+
setIsInviting(true);
|
|
4663
|
+
try {
|
|
4664
|
+
await onInviteMember(inviteEmail);
|
|
4665
|
+
setInviteEmail("");
|
|
4666
|
+
setIsInviteMode(false);
|
|
4667
|
+
} catch (error) {
|
|
4668
|
+
import_react_hot_toast13.default.error(error.message || "Failed to send invitation.");
|
|
4669
|
+
} finally {
|
|
4670
|
+
setIsInviting(false);
|
|
4671
|
+
}
|
|
4672
|
+
};
|
|
4654
4673
|
const isListLoading = isLoading || isTyping;
|
|
4655
4674
|
return /* @__PURE__ */ import_react79.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react79.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react79.default.createElement(
|
|
4656
4675
|
ConfirmationDialog,
|
|
@@ -4665,7 +4684,7 @@ var UniversalMembersPage = ({
|
|
|
4665
4684
|
onClose: () => setMemberToRemove(null),
|
|
4666
4685
|
onConfirm: handleConfirmRemove
|
|
4667
4686
|
}
|
|
4668
|
-
), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react79.default.createElement(import_react80.HugeiconsIcon, { icon: import_core_free_icons28.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react79.default.createElement(
|
|
4687
|
+
), !isInviteMode && /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react79.default.createElement(import_react80.HugeiconsIcon, { icon: import_core_free_icons28.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react79.default.createElement(
|
|
4669
4688
|
"input",
|
|
4670
4689
|
{
|
|
4671
4690
|
type: "text",
|
|
@@ -4688,7 +4707,46 @@ var UniversalMembersPage = ({
|
|
|
4688
4707
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
4689
4708
|
},
|
|
4690
4709
|
/* @__PURE__ */ import_react79.default.createElement(import_react80.HugeiconsIcon, { icon: import_core_free_icons28.ListSettingIcon, size: 16 })
|
|
4691
|
-
))), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-
|
|
4710
|
+
))), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-row items-start justify-between gap-4" }, /* @__PURE__ */ import_react79.default.createElement("div", null, /* @__PURE__ */ import_react79.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, isInviteMode ? "Add Member" : headerTitle), headerDescription && !isInviteMode && /* @__PURE__ */ import_react79.default.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), !isInviteMode && /* @__PURE__ */ import_react79.default.createElement(
|
|
4711
|
+
"button",
|
|
4712
|
+
{
|
|
4713
|
+
onClick: () => setIsInviteMode(true),
|
|
4714
|
+
className: "shrink-0 px-4 py-2 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
|
|
4715
|
+
},
|
|
4716
|
+
"Invite Team"
|
|
4717
|
+
)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react79.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react79.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react79.default.createElement(
|
|
4718
|
+
"input",
|
|
4719
|
+
{
|
|
4720
|
+
type: "email",
|
|
4721
|
+
value: inviteEmail,
|
|
4722
|
+
onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)),
|
|
4723
|
+
required: true,
|
|
4724
|
+
autoFocus: true,
|
|
4725
|
+
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",
|
|
4726
|
+
placeholder: "name@company.com"
|
|
4727
|
+
}
|
|
4728
|
+
)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react79.default.createElement(
|
|
4729
|
+
ThreeDActionButton,
|
|
4730
|
+
{
|
|
4731
|
+
type: "submit",
|
|
4732
|
+
disabled: inviteEmail.length < 5 || isInviting,
|
|
4733
|
+
isLoading: isInviting,
|
|
4734
|
+
className: "w-full"
|
|
4735
|
+
},
|
|
4736
|
+
"Send Invitation"
|
|
4737
|
+
), /* @__PURE__ */ import_react79.default.createElement(
|
|
4738
|
+
"button",
|
|
4739
|
+
{
|
|
4740
|
+
type: "button",
|
|
4741
|
+
onClick: () => {
|
|
4742
|
+
setIsInviteMode(false);
|
|
4743
|
+
setInviteEmail("");
|
|
4744
|
+
},
|
|
4745
|
+
disabled: isInviting,
|
|
4746
|
+
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"
|
|
4747
|
+
},
|
|
4748
|
+
"Cancel"
|
|
4749
|
+
))) : isListLoading ? /* @__PURE__ */ import_react79.default.createElement(PageSpinner7, null) : /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react79.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react79.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react79.default.createElement(import_react79.default.Fragment, { key: member.id }, expandedId === member.id ? /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col p-5 bg-neutral-50 rounded-xl animate-in fade-in zoom-in-95 duration-200 gap-5 my-2" }, /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react79.default.createElement(MemberAvatar, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "text-[14px] text-black tracking-tight truncate" }, member.name), /* @__PURE__ */ import_react79.default.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, member.role.toLowerCase()))), member.departmentName && /* @__PURE__ */ import_react79.default.createElement("div", { className: "pt-3 border-t border-neutral-200" }, /* @__PURE__ */ import_react79.default.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Department"), /* @__PURE__ */ import_react79.default.createElement("span", { className: "text-[13px] text-black truncate block" }, member.departmentName)), /* @__PURE__ */ import_react79.default.createElement("div", { className: "flex gap-3 pt-2" }, !hideAction && /* @__PURE__ */ import_react79.default.createElement(
|
|
4692
4750
|
"button",
|
|
4693
4751
|
{
|
|
4694
4752
|
onClick: () => setMemberToRemove(member),
|
|
@@ -4777,7 +4835,7 @@ var UniversalHome2 = ({
|
|
|
4777
4835
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4778
4836
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
4779
4837
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
4780
|
-
return /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-
|
|
4838
|
+
return /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ import_react81.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.Loading03Icon, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ import_react81.default.createElement(
|
|
4781
4839
|
"img",
|
|
4782
4840
|
{
|
|
4783
4841
|
src: finalAvatarSrc,
|
|
@@ -4808,7 +4866,7 @@ var UniversalHome2 = ({
|
|
|
4808
4866
|
{
|
|
4809
4867
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cal_a.avif",
|
|
4810
4868
|
alt: "Create Huddle",
|
|
4811
|
-
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
|
|
4869
|
+
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 "
|
|
4812
4870
|
}
|
|
4813
4871
|
)
|
|
4814
4872
|
), /* @__PURE__ */ import_react81.default.createElement(
|
|
@@ -4823,7 +4881,7 @@ var UniversalHome2 = ({
|
|
|
4823
4881
|
{
|
|
4824
4882
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cam_a.avif",
|
|
4825
4883
|
alt: "Join Huddle",
|
|
4826
|
-
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
|
|
4884
|
+
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 "
|
|
4827
4885
|
}
|
|
4828
4886
|
)
|
|
4829
4887
|
))), 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(
|
package/dist/index.mjs
CHANGED
|
@@ -4593,7 +4593,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4593
4593
|
return "bg-neutral-200";
|
|
4594
4594
|
}
|
|
4595
4595
|
};
|
|
4596
|
-
return /* @__PURE__ */ React47.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React47.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden
|
|
4596
|
+
return /* @__PURE__ */ React47.createElement("div", { className: "relative w-10 h-10 shrink-0" }, /* @__PURE__ */ React47.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React47.createElement(HugeiconsIcon33, { icon: Loading03Icon21, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React47.createElement(
|
|
4597
4597
|
"img",
|
|
4598
4598
|
{
|
|
4599
4599
|
src: finalSrc,
|
|
@@ -4602,7 +4602,7 @@ var MemberAvatar = ({ src, status }) => {
|
|
|
4602
4602
|
onLoad: () => setLoaded(true),
|
|
4603
4603
|
onError: () => setError(true)
|
|
4604
4604
|
}
|
|
4605
|
-
)), /* @__PURE__ */ React47.createElement("div", { className: `absolute -bottom-1 -right-1 w-
|
|
4605
|
+
)), /* @__PURE__ */ React47.createElement("div", { className: `absolute -bottom-1 -right-1 w-2.5 h-2.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
|
|
4606
4606
|
};
|
|
4607
4607
|
var PageSpinner7 = () => /* @__PURE__ */ React47.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon33, { icon: Loading03Icon21, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4608
4608
|
var UniversalMembersPage = ({
|
|
@@ -4621,17 +4621,22 @@ var UniversalMembersPage = ({
|
|
|
4621
4621
|
onRoleFilterChange,
|
|
4622
4622
|
actionButtonText,
|
|
4623
4623
|
hideAction = false,
|
|
4624
|
-
onRemoveMember
|
|
4624
|
+
onRemoveMember,
|
|
4625
|
+
onInviteMember
|
|
4625
4626
|
}) => {
|
|
4626
4627
|
const [expandedId, setExpandedId] = useState32(null);
|
|
4627
4628
|
const [memberToRemove, setMemberToRemove] = useState32(null);
|
|
4628
4629
|
const [isRemoving, setIsRemoving] = useState32(false);
|
|
4630
|
+
const [isInviteMode, setIsInviteMode] = useState32(false);
|
|
4631
|
+
const [inviteEmail, setInviteEmail] = useState32("");
|
|
4632
|
+
const [isInviting, setIsInviting] = useState32(false);
|
|
4629
4633
|
const [localSearchQuery, setLocalSearchQuery] = useState32(searchQuery);
|
|
4630
4634
|
const [isTyping, setIsTyping] = useState32(false);
|
|
4631
4635
|
const [isStatusModalOpen, setIsStatusModalOpen] = useState32(false);
|
|
4632
4636
|
const [isRoleModalOpen, setIsRoleModalOpen] = useState32(false);
|
|
4633
4637
|
const statusDropdownRef = useRef12(null);
|
|
4634
4638
|
const roleDropdownRef = useRef12(null);
|
|
4639
|
+
const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
|
|
4635
4640
|
useEffect18(() => {
|
|
4636
4641
|
function handleClickOutside(event) {
|
|
4637
4642
|
if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) {
|
|
@@ -4671,6 +4676,20 @@ var UniversalMembersPage = ({
|
|
|
4671
4676
|
setIsRemoving(false);
|
|
4672
4677
|
}
|
|
4673
4678
|
};
|
|
4679
|
+
const handleInviteSubmit = async (e) => {
|
|
4680
|
+
e.preventDefault();
|
|
4681
|
+
if (inviteEmail.length < 5 || isInviting) return;
|
|
4682
|
+
setIsInviting(true);
|
|
4683
|
+
try {
|
|
4684
|
+
await onInviteMember(inviteEmail);
|
|
4685
|
+
setInviteEmail("");
|
|
4686
|
+
setIsInviteMode(false);
|
|
4687
|
+
} catch (error) {
|
|
4688
|
+
toast12.error(error.message || "Failed to send invitation.");
|
|
4689
|
+
} finally {
|
|
4690
|
+
setIsInviting(false);
|
|
4691
|
+
}
|
|
4692
|
+
};
|
|
4674
4693
|
const isListLoading = isLoading || isTyping;
|
|
4675
4694
|
return /* @__PURE__ */ React47.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React47.createElement(ManagedToaster, null), /* @__PURE__ */ React47.createElement(
|
|
4676
4695
|
ConfirmationDialog,
|
|
@@ -4685,7 +4704,7 @@ var UniversalMembersPage = ({
|
|
|
4685
4704
|
onClose: () => setMemberToRemove(null),
|
|
4686
4705
|
onConfirm: handleConfirmRemove
|
|
4687
4706
|
}
|
|
4688
|
-
), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon33, { icon: Search01Icon3, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React47.createElement(
|
|
4707
|
+
), !isInviteMode && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ React47.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon33, { icon: Search01Icon3, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React47.createElement(
|
|
4689
4708
|
"input",
|
|
4690
4709
|
{
|
|
4691
4710
|
type: "text",
|
|
@@ -4708,7 +4727,46 @@ var UniversalMembersPage = ({
|
|
|
4708
4727
|
className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
4709
4728
|
},
|
|
4710
4729
|
/* @__PURE__ */ React47.createElement(HugeiconsIcon33, { icon: ListSettingIcon2, size: 16 })
|
|
4711
|
-
))), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-
|
|
4730
|
+
))), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-row items-start justify-between gap-4" }, /* @__PURE__ */ React47.createElement("div", null, /* @__PURE__ */ React47.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, isInviteMode ? "Add Member" : headerTitle), headerDescription && !isInviteMode && /* @__PURE__ */ React47.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), !isInviteMode && /* @__PURE__ */ React47.createElement(
|
|
4731
|
+
"button",
|
|
4732
|
+
{
|
|
4733
|
+
onClick: () => setIsInviteMode(true),
|
|
4734
|
+
className: "shrink-0 px-4 py-2 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
|
|
4735
|
+
},
|
|
4736
|
+
"Invite Team"
|
|
4737
|
+
)), /* @__PURE__ */ React47.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ React47.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React47.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React47.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React47.createElement(
|
|
4738
|
+
"input",
|
|
4739
|
+
{
|
|
4740
|
+
type: "email",
|
|
4741
|
+
value: inviteEmail,
|
|
4742
|
+
onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)),
|
|
4743
|
+
required: true,
|
|
4744
|
+
autoFocus: true,
|
|
4745
|
+
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",
|
|
4746
|
+
placeholder: "name@company.com"
|
|
4747
|
+
}
|
|
4748
|
+
)), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React47.createElement(
|
|
4749
|
+
ThreeDActionButton,
|
|
4750
|
+
{
|
|
4751
|
+
type: "submit",
|
|
4752
|
+
disabled: inviteEmail.length < 5 || isInviting,
|
|
4753
|
+
isLoading: isInviting,
|
|
4754
|
+
className: "w-full"
|
|
4755
|
+
},
|
|
4756
|
+
"Send Invitation"
|
|
4757
|
+
), /* @__PURE__ */ React47.createElement(
|
|
4758
|
+
"button",
|
|
4759
|
+
{
|
|
4760
|
+
type: "button",
|
|
4761
|
+
onClick: () => {
|
|
4762
|
+
setIsInviteMode(false);
|
|
4763
|
+
setInviteEmail("");
|
|
4764
|
+
},
|
|
4765
|
+
disabled: isInviting,
|
|
4766
|
+
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"
|
|
4767
|
+
},
|
|
4768
|
+
"Cancel"
|
|
4769
|
+
))) : isListLoading ? /* @__PURE__ */ React47.createElement(PageSpinner7, null) : /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ React47.createElement("div", null, members.length === 0 ? /* @__PURE__ */ React47.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ React47.createElement(React47.Fragment, { key: member.id }, expandedId === member.id ? /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col p-5 bg-neutral-50 rounded-xl animate-in fade-in zoom-in-95 duration-200 gap-5 my-2" }, /* @__PURE__ */ React47.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React47.createElement(MemberAvatar, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React47.createElement("span", { className: "text-[14px] text-black tracking-tight truncate" }, member.name), /* @__PURE__ */ React47.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, member.role.toLowerCase()))), member.departmentName && /* @__PURE__ */ React47.createElement("div", { className: "pt-3 border-t border-neutral-200" }, /* @__PURE__ */ React47.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Department"), /* @__PURE__ */ React47.createElement("span", { className: "text-[13px] text-black truncate block" }, member.departmentName)), /* @__PURE__ */ React47.createElement("div", { className: "flex gap-3 pt-2" }, !hideAction && /* @__PURE__ */ React47.createElement(
|
|
4712
4770
|
"button",
|
|
4713
4771
|
{
|
|
4714
4772
|
onClick: () => setMemberToRemove(member),
|
|
@@ -4804,7 +4862,7 @@ var UniversalHome2 = ({
|
|
|
4804
4862
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4805
4863
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
4806
4864
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
4807
|
-
return /* @__PURE__ */ React48.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React48.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ React48.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-
|
|
4865
|
+
return /* @__PURE__ */ React48.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React48.createElement("div", { className: "flex items-center justify-between w-full pb-4" }, /* @__PURE__ */ React48.createElement("div", { className: "w-10 h-10 shrink-0 cursor-pointer", onClick: () => router.push("/app/account/me") }, /* @__PURE__ */ React48.createElement("div", { className: "relative w-full h-full rounded-lg overflow-hidden bg-white flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-white" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Loading03Icon22, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ React48.createElement(
|
|
4808
4866
|
"img",
|
|
4809
4867
|
{
|
|
4810
4868
|
src: finalAvatarSrc,
|
|
@@ -4835,7 +4893,7 @@ var UniversalHome2 = ({
|
|
|
4835
4893
|
{
|
|
4836
4894
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cal_a.avif",
|
|
4837
4895
|
alt: "Create Huddle",
|
|
4838
|
-
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
|
|
4896
|
+
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 "
|
|
4839
4897
|
}
|
|
4840
4898
|
)
|
|
4841
4899
|
), /* @__PURE__ */ React48.createElement(
|
|
@@ -4850,7 +4908,7 @@ var UniversalHome2 = ({
|
|
|
4850
4908
|
{
|
|
4851
4909
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cam_a.avif",
|
|
4852
4910
|
alt: "Join Huddle",
|
|
4853
|
-
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
|
|
4911
|
+
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 "
|
|
4854
4912
|
}
|
|
4855
4913
|
)
|
|
4856
4914
|
))), customContent && /* @__PURE__ */ React48.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ React48.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ React48.createElement(
|