@retinalabsllc/zairusjs 20.1.9 → 20.1.15

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.mjs CHANGED
@@ -606,7 +606,7 @@ var ReusableOptions = ({
606
606
  const filteredOptions = options.filter(
607
607
  (opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
608
608
  );
609
- return /* @__PURE__ */ React8.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React8.createElement("h3", { className: "text-sm text-black tracking-tight" }, title), /* @__PURE__ */ React8.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ React8.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React8.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React8.createElement(
609
+ return /* @__PURE__ */ React8.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React8.createElement("h3", { className: "text-lg text-black tracking-tight" }, title), /* @__PURE__ */ React8.createElement("button", { onClick: onClose, className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ React8.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React8.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: Search01Icon, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React8.createElement(
610
610
  "input",
611
611
  {
612
612
  type: "text",
@@ -625,7 +625,7 @@ var ReusableOptions = ({
625
625
  onSelect(opt);
626
626
  onClose();
627
627
  },
628
- className: `w-full text-left p-4 text-sm tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#d97757] bg-[#d97757]/10" : "text-stone-600 hover:bg-stone-50/50"}`
628
+ className: `w-full text-left p-4 text-xs tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#d97757] bg-[#d97757]/10" : "text-stone-600 hover:bg-stone-50/50"}`
629
629
  },
630
630
  opt.charAt(0).toUpperCase() + opt.slice(1).toLowerCase()
631
631
  );
@@ -747,7 +747,7 @@ var CalendarPicker = ({
747
747
  {
748
748
  onClick: handlePrevMonth,
749
749
  disabled: viewYear === today.getFullYear() && viewMonth === today.getMonth(),
750
- className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
750
+ className: "w-8 h-8 flex items-center justify-center border border-stone-200 rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
751
751
  },
752
752
  /* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowLeft01Icon, size: 16, className: "text-black" })
753
753
  ), /* @__PURE__ */ React9.createElement(
@@ -755,7 +755,7 @@ var CalendarPicker = ({
755
755
  {
756
756
  onClick: handleNextMonth,
757
757
  disabled: viewYear === maxDate.getFullYear() && viewMonth === 11,
758
- className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
758
+ className: "w-8 h-8 flex items-center justify-center border border-stone-200 rounded-full hover:bg-stone-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
759
759
  },
760
760
  /* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: ArrowRight01Icon, size: 16, className: "text-black" })
761
761
  ))), /* @__PURE__ */ React9.createElement("div", { className: "grid grid-cols-7 gap-1" }, DAYS_OF_WEEK.map((d) => /* @__PURE__ */ React9.createElement("div", { key: d, className: "text-center text-xs text-stone-400 py-2" }, d)), Array.from({ length: firstDayOffset }).map((_, i) => /* @__PURE__ */ React9.createElement("div", { key: `empty-${i}` })), Array.from({ length: daysInMonth }).map((_, i) => {
@@ -818,7 +818,7 @@ var ConfirmationDialog = ({
818
818
  {
819
819
  onClick: onConfirm,
820
820
  disabled: isProcessing,
821
- className: `flex-1 py-4 text-sm transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-stone-50" : "text-black hover:bg-stone-50"}`
821
+ className: `flex-1 py-4 text-sm transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-[#d97757] hover:bg-stone-50" : "text-black hover:bg-stone-50"}`
822
822
  },
823
823
  isProcessing ? /* @__PURE__ */ React10.createElement(HugeiconsIcon6, { icon: Loading03Icon3, className: "animate-spin", size: 18 }) : confirmText
824
824
  ))));
@@ -969,10 +969,10 @@ var UniversalHuddleDetails = ({
969
969
  setTitle(e.target.value.substring(0, 80));
970
970
  setIsDirty(true);
971
971
  },
972
- className: "w-full text-sm border-b border-stone-200 focus:border-black outline-none py-2 text-black bg-transparent",
972
+ className: "w-full text-sm focus:border-[#d97757] outline-none py-2 text-black bg-transparent",
973
973
  autoFocus: true
974
974
  }
975
- ), /* @__PURE__ */ React11.createElement("button", { onClick: () => setIsEditingTitle(false), className: "text-xs text-[#d97757] outline-none " }, "Done")) : /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("span", { className: "text-sm text-black py-2" }, title), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setIsEditingTitle(true), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Calendar01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setCalendarMode("DATE"), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Clock01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setCalendarMode("TIME"), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Globe02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowTimezoneModal(true), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit")))), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between py-2 mt-2" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React11.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-stone-500" }, "Only invited members can join.")), /* @__PURE__ */ React11.createElement(
975
+ ), /* @__PURE__ */ React11.createElement("button", { onClick: () => setIsEditingTitle(false), className: "text-xs text-[#d97757] outline-none " }, "Done")) : /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("span", { className: "text-sm text-black py-2" }, title), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setIsEditingTitle(true), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 border-b border-stone-200 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Calendar01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setCalendarMode("DATE"), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 border-b border-stone-200 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Clock01Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setCalendarMode("TIME"), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))), /* @__PURE__ */ React11.createElement("div", { className: "space-y-1.5 border-b border-stone-200 w-full" }, /* @__PURE__ */ React11.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center relative w-full border-b border-transparent pb-3 pt-3" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Globe02Icon, size: 16, className: "text-stone-400 absolute left-0" }), /* @__PURE__ */ React11.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowTimezoneModal(true), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit")))), /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between py-2 mt-2" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React11.createElement("span", { className: "text-sm text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-stone-500" }, "Only invited members can join.")), /* @__PURE__ */ React11.createElement(
976
976
  "button",
977
977
  {
978
978
  type: "button",
@@ -986,7 +986,7 @@ var UniversalHuddleDetails = ({
986
986
  className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#d97757]" : "bg-stone-200"} ${!enableEdits && "opacity-50 cursor-not-allowed"}`
987
987
  },
988
988
  /* @__PURE__ */ React11.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` })
989
- )), isPrivate && /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-black tracking-tight" }, "Participants"), /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-[#d97757] " }, selectedParticipants.size, " added")), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowMembersModal(true), className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access")), isDirty && /* @__PURE__ */ React11.createElement("div", { className: "pt-4 animate-in fade-in duration-300" }, /* @__PURE__ */ React11.createElement(ThreeDActionButton, { onClick: handleUpdate, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Save Changes")), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 " }, (liveStatus === "SCHEDULED" || liveStatus === "ONGOING") && /* @__PURE__ */ React11.createElement("a", { href: `/app/join/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-[#d97757] text-[#d97757] rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/5" }, "Join Huddle"), /* @__PURE__ */ React11.createElement("a", { href: `/app/assets/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Huddle Assets"), canDelete && liveStatus === "SCHEDULED" && /* @__PURE__ */ React11.createElement("button", { onClick: () => setConfirmDialog("CANCEL"), className: "flex-1 w-full py-2.5 bg-transparent border border-rose-200 text-rose-600 rounded-full text-center text-xs transition-colors hover:bg-rose-50" }, "Cancel Huddle"), canDelete && liveStatus !== "SCHEDULED" && /* @__PURE__ */ React11.createElement("button", { onClick: () => setConfirmDialog("DELETE"), className: "flex-1 w-full py-2.5 bg-transparent border border-rose-200 text-rose-600 rounded-full text-center text-xs transition-colors hover:bg-rose-50" }, "Delete Huddle"))), /* @__PURE__ */ React11.createElement(
989
+ )), isPrivate && /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-stone-50 p-4 rounded-xl" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-black tracking-tight" }, "Participants"), /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-[#d97757] " }, selectedParticipants.size, " added")), enableEdits && /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowMembersModal(true), className: "px-4 py-2 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent" }, "Manage Access")), isDirty && /* @__PURE__ */ React11.createElement("div", { className: "pt-4 animate-in fade-in duration-300" }, /* @__PURE__ */ React11.createElement(ThreeDActionButton, { onClick: handleUpdate, isLoading: isSubmitting, className: "w-full sm:w-auto min-w-40" }, "Save Changes")), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 pt-6 mt-2 " }, (liveStatus === "SCHEDULED" || liveStatus === "ONGOING") && /* @__PURE__ */ React11.createElement("a", { href: `/app/join/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-[#d97757] text-[#d97757] rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/5" }, "Join Huddle"), /* @__PURE__ */ React11.createElement("a", { href: `/app/assets/${huddle.id}`, className: "flex-1 w-full py-2.5 bg-transparent border border-stone-200 text-black rounded-full text-center text-xs transition-colors hover:bg-stone-50" }, "Huddle Assets"), canDelete && liveStatus === "SCHEDULED" && /* @__PURE__ */ React11.createElement("button", { onClick: () => setConfirmDialog("CANCEL"), className: "flex-1 w-full py-2.5 bg-transparent border border-[#d97757] text-[#d97757] rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/10" }, "Cancel Huddle"), canDelete && liveStatus !== "SCHEDULED" && /* @__PURE__ */ React11.createElement("button", { onClick: () => setConfirmDialog("DELETE"), className: "flex-1 w-full py-2.5 bg-transparent border border-[#d97757] text-[#d97757] rounded-full text-center text-xs transition-colors hover:bg-[#d97757]/10" }, "Delete Huddle"))), /* @__PURE__ */ React11.createElement(
990
990
  CalendarPicker,
991
991
  {
992
992
  isOpen: calendarMode !== null,
@@ -1012,7 +1012,7 @@ var UniversalHuddleDetails = ({
1012
1012
  },
1013
1013
  showSearch: true
1014
1014
  }
1015
- ), showMembersModal && /* @__PURE__ */ React11.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ React11.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React11.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Manage Participants"), /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none text-sm " }, "Done")), /* @__PURE__ */ React11.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React11.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Search01Icon2, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React11.createElement("input", { type: "text", placeholder: "Search team...", value: localSearchQuery, onChange: handleSearchInput, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors" }))), /* @__PURE__ */ React11.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Loading03Icon4, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ React11.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
1015
+ ), showMembersModal && /* @__PURE__ */ React11.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ React11.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React11.createElement("h3", { className: "text-sm text-black tracking-tight" }, "Manage Participants"), /* @__PURE__ */ React11.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none text-sm " }, "Done")), /* @__PURE__ */ React11.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ React11.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Search01Icon2, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React11.createElement("input", { type: "text", placeholder: "Search team...", value: localSearchQuery, onChange: handleSearchInput, className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:border-[#d97757] border border-transparent focus:bg-stone-200 transition-colors" }))), /* @__PURE__ */ React11.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React11.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Loading03Icon4, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ React11.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
1016
1016
  const isChecked = selectedParticipants.has(member.userId);
1017
1017
  return /* @__PURE__ */ React11.createElement("div", { key: member.id, onClick: () => toggleParticipant(member.userId), className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-stone-50 transition-colors select-none" }, /* @__PURE__ */ React11.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ React11.createElement(MemberAvatar, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React11.createElement("span", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-stone-400 capitalize truncate" }, member.role.toLowerCase()))), /* @__PURE__ */ React11.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ React11.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#d97757]" : "border border-stone-300 bg-white"}` }, isChecked && /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: Tick02Icon, size: 14, className: "text-white" }))));
1018
1018
  })), /* @__PURE__ */ React11.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ React11.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React11.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React11.createElement("button", { disabled: membersCurrentPage <= 1 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage - 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: ArrowLeft01Icon2, size: 12 })), /* @__PURE__ */ React11.createElement("button", { disabled: membersCurrentPage >= membersTotalPages || membersTotalPages === 0 || isMembersLoading, onClick: () => onMembersPageChange(membersCurrentPage + 1), className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-stone-200 text-stone-600 disabled:opacity-30 outline-none hover:bg-stone-50 transition-colors" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon7, { icon: ArrowRight01Icon2, size: 12 })))))));
@@ -1029,7 +1029,7 @@ var MobileNav = ({ items, hideMobileNav = false }) => {
1029
1029
  const pathMatches = items.some((item) => {
1030
1030
  return item.href === "/" || item.href === "/app" ? pathname === "/" || pathname === "/app" : pathname === item.href || pathname?.startsWith(`${item.href}/`);
1031
1031
  });
1032
- return /* @__PURE__ */ React12.createElement("div", { className: "fixed bottom-0 inset-x-0 z-100 flex justify-center pointer-events-none animate-in slide-in-from-bottom-8 fade-in duration-500 md:hidden" }, /* @__PURE__ */ React12.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/50 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] px-4 py-2.5 pb-[calc(env(safe-area-inset-bottom)+0.625rem)] flex items-center justify-between" }, items.map((item, index) => {
1032
+ return /* @__PURE__ */ React12.createElement("div", { className: "fixed bottom-0 inset-x-0 z-100 flex justify-center pointer-events-none animate-in slide-in-from-bottom-8 fade-in duration-500 md:hidden" }, /* @__PURE__ */ React12.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/50 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] px-8 py-2.5 pb-[calc(env(safe-area-inset-bottom)+0.625rem)] flex items-center justify-between" }, items.map((item, index) => {
1033
1033
  const isActive = !pathMatches && index === 0 ? true : item.href === "/" || item.href === "/app" ? pathname === "/" || pathname === "/app" : pathname === item.href || pathname?.startsWith(`${item.href}/`);
1034
1034
  return /* @__PURE__ */ React12.createElement(
1035
1035
  Link4,
@@ -1083,7 +1083,7 @@ var TextInput = ({
1083
1083
  readOnly,
1084
1084
  autoComplete: "off",
1085
1085
  spellCheck: "false",
1086
- className: `w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-black disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
1086
+ className: `w-full px-2 py-3 text-sm bg-transparent border-b border-stone-200 text-black transition-all outline-none focus:border-[#d97757] disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
1087
1087
  }
1088
1088
  ));
1089
1089
  var NumberInput = ({
@@ -1309,7 +1309,7 @@ var UniversalOrganizationPage = ({
1309
1309
  className: "w-full px-2 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed",
1310
1310
  placeholder: "sovereign-user-handle"
1311
1311
  }
1312
- ), /* @__PURE__ */ React15.createElement("span", { className: "text-stone-400 text-sm py-3 pr-8 shrink-0 whitespace-nowrap" }, slugPrefixUrl), /* @__PURE__ */ React15.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React15.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React15.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ React15.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React15.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 && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React15.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React15.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React15.createElement(
1312
+ ), /* @__PURE__ */ React15.createElement("span", { className: "text-stone-400 text-sm py-3 pr-8 shrink-0 whitespace-nowrap" }, slugPrefixUrl), /* @__PURE__ */ React15.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React15.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React15.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ React15.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React15.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 && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React15.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React15.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React15.createElement(
1313
1313
  ThreeDActionButton,
1314
1314
  {
1315
1315
  type: "submit",
@@ -1666,7 +1666,7 @@ var getStatusClasses = (status) => {
1666
1666
  case "COMPLETED":
1667
1667
  return "text-emerald-700 bg-emerald-100";
1668
1668
  case "FAILED":
1669
- return "text-rose-700 bg-rose-100";
1669
+ return "text-[#d97757] bg-[#d97757]/10";
1670
1670
  case "REVERSED":
1671
1671
  return "text-sky-700 bg-sky-100";
1672
1672
  default:
@@ -1917,7 +1917,7 @@ var UniversalHomeView = ({
1917
1917
  className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
1918
1918
  },
1919
1919
  /* @__PURE__ */ React20.createElement(HugeiconsIcon15, { icon: Notification01Icon, size: 20, className: "text-black" }),
1920
- hasUnreadNotifs && /* @__PURE__ */ React20.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
1920
+ hasUnreadNotifs && /* @__PURE__ */ React20.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
1921
1921
  )), /* @__PURE__ */ React20.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React20.createElement(
1922
1922
  "div",
1923
1923
  {
@@ -1966,7 +1966,7 @@ var UniversalHomeView = ({
1966
1966
  },
1967
1967
  className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-stone-50"}`
1968
1968
  },
1969
- /* @__PURE__ */ React20.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ React20.createElement("div", { className: "w-1.5 h-1.5 bg-red-500 rounded-full" }) : /* @__PURE__ */ React20.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
1969
+ /* @__PURE__ */ React20.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ React20.createElement("div", { className: "w-1.5 h-1.5 bg-[#d97757] rounded-full" }) : /* @__PURE__ */ React20.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
1970
1970
  /* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ React20.createElement("h5", { className: `text-xs truncate ${notif.isRead ? "text-stone-500" : "text-black "}` }, notif.title), /* @__PURE__ */ React20.createElement("p", { className: "text-xs text-stone-400 truncate mt-0.5" }, notif.message), /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-stone-400 tracking-widest mt-2 block " }, formatNotifDate(notif.createdAt)))
1971
1971
  )))), !selectedNotif && /* @__PURE__ */ React20.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 " }, /* @__PURE__ */ React20.createElement("span", { className: "text-xs text-stone-400 tracking-widest " }, "Page ", notificationPage, " of ", notificationTotalPages === 0 ? 1 : notificationTotalPages), /* @__PURE__ */ React20.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React20.createElement(
1972
1972
  "button",
@@ -2156,7 +2156,7 @@ var UniversalWalletPage = ({
2156
2156
  onChange: (e) => setLocalSearchQuery(e.target.value),
2157
2157
  className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black"
2158
2158
  }
2159
- )), !external && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React21.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: PlusSignIcon, size: 16 })), /* @__PURE__ */ React21.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Upload01Icon, size: 16 })))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-stone-500" }, headerDescription))), /* @__PURE__ */ React21.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React21.createElement(PageSpinner3, null) : /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React21.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ React21.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React21.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React21.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ React21.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React21.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React21.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ React21.createElement("span", { className: `text-xs px-1.5 py-0.5 rounded-sm tracking-widest ${wallet.isActive ? "bg-emerald-50 text-emerald-600" : "bg-red-50 text-red-600"}` }, wallet.isActive ? "Active" : "Inactive")), /* @__PURE__ */ React21.createElement("p", { className: `text-sm text-stone-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ React21.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-wide text-stone-600 bg-stone-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ React21.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ React21.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React21.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React21.createElement(Banner, { type: "alert", title: "Critical Warning", message: "You are about to generate a Self-Custodial Recovery Phrase. This phrase is the absolute master key to your wallet and all assets within it. Aeona DOES NOT store this phrase. If you lose it, your funds are permanently lost. Do not share this phrase with anyone.", isDismissible: false }), /* @__PURE__ */ React21.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-stone-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-48 overflow-y-auto custom-scrollbar pr-1" }, generatedPhrase.split(" ").map((word, idx) => /* @__PURE__ */ React21.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-stone-50 rounded-lg p-2 selection:bg-stone-100" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-stone-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-black " }, word)))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Copy01Icon2, size: 14 }), " Copy Phrase"), /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-stone-200 mt-2" }, /* @__PURE__ */ React21.createElement("input", { type: "checkbox", id: "backup-confirm", checked: hasBackedUp, onChange: (e) => setHasBackedUp(e.target.checked), className: "mt-0.5 w-4 h-4 bg-white border-stone-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ React21.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-stone-600 cursor-pointer leading-relaxed" }, "I have securely copied and stored my recovery phrase. I understand that if I lose it, my funds are gone forever.")), /* @__PURE__ */ React21.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-stone-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, verifyWords.map((word, idx) => /* @__PURE__ */ React21.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-stone-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-stone-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ React21.createElement(
2159
+ )), !external && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React21.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: PlusSignIcon, size: 16 })), /* @__PURE__ */ React21.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Upload01Icon, size: 16 })))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-stone-500" }, headerDescription))), /* @__PURE__ */ React21.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React21.createElement(PageSpinner3, null) : /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React21.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ React21.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ React21.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React21.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React21.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ React21.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React21.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React21.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ React21.createElement("span", { className: `text-xs px-1.5 py-0.5 rounded-sm tracking-widest ${wallet.isActive ? "bg-emerald-50 text-emerald-600" : "bg-[#d97757]/10 text-[#d97757]"}` }, wallet.isActive ? "Active" : "Inactive")), /* @__PURE__ */ React21.createElement("p", { className: `text-sm text-stone-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ React21.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-wide text-stone-600 bg-stone-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ React21.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ React21.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React21.createElement("h3", { className: "text-sm text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ React21.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React21.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React21.createElement(Banner, { type: "alert", title: "Critical Warning", message: "You are about to generate a Self-Custodial Recovery Phrase. This phrase is the absolute master key to your wallet and all assets within it. Aeona DOES NOT store this phrase. If you lose it, your funds are permanently lost. Do not share this phrase with anyone.", isDismissible: false }), /* @__PURE__ */ React21.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-stone-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-48 overflow-y-auto custom-scrollbar pr-1" }, generatedPhrase.split(" ").map((word, idx) => /* @__PURE__ */ React21.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-stone-50 rounded-lg p-2 selection:bg-stone-100" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-stone-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-black " }, word)))), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Copy01Icon2, size: 14 }), " Copy Phrase"), /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ React21.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-stone-200 mt-2" }, /* @__PURE__ */ React21.createElement("input", { type: "checkbox", id: "backup-confirm", checked: hasBackedUp, onChange: (e) => setHasBackedUp(e.target.checked), className: "mt-0.5 w-4 h-4 bg-white border-stone-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ React21.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-stone-600 cursor-pointer leading-relaxed" }, "I have securely copied and stored my recovery phrase. I understand that if I lose it, my funds are gone forever.")), /* @__PURE__ */ React21.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React21.createElement("p", { className: "text-sm text-stone-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, verifyWords.map((word, idx) => /* @__PURE__ */ React21.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-stone-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ React21.createElement("span", { className: "text-xs text-stone-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ React21.createElement(
2160
2160
  "input",
2161
2161
  {
2162
2162
  type: "text",
@@ -2215,7 +2215,7 @@ var UniversalWalletPage = ({
2215
2215
  message: `Ensure you only send assets using the exact network specified. Minimum deposit is 15 ${selectedWallet.currency}. Sending funds through an unsupported network or under the minimum will result in permanent loss of funds.`,
2216
2216
  isDismissible: false
2217
2217
  }
2218
- )), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React21.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React21.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ React21.createElement(
2218
+ )), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React21.createElement("span", { className: "text-sm text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "text-stone-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon16, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React21.createElement("div", null, /* @__PURE__ */ React21.createElement("span", { className: "text-xs tracking-[0.2em] text-stone-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React21.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React21.createElement("span", { className: "text-sm px-1.5 py-0.5 bg-[#d97757]/10 text-[#d97757] " }, "Inactive - Requires Import"))), /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React21.createElement("button", { type: "button", onClick: () => setShowCopyWarning(true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address"))))), selectedWallet && /* @__PURE__ */ React21.createElement(
2219
2219
  ConfirmationDialog,
2220
2220
  {
2221
2221
  isOpen: showCopyWarning,
@@ -4048,7 +4048,7 @@ var VerificationRow = ({
4048
4048
  statusColor = "text-stone-500";
4049
4049
  bg = "bg-stone-50";
4050
4050
  StatusIcon = InformationCircleIcon2;
4051
- iconColor = "text-red-500";
4051
+ iconColor = "text-[#d97757]";
4052
4052
  break;
4053
4053
  case "ACTION_REQUIRED":
4054
4054
  default:
@@ -4356,7 +4356,7 @@ var getTierGlow = (tier) => {
4356
4356
  case "ONE":
4357
4357
  return "from-emerald-200";
4358
4358
  case "ZERO":
4359
- return "from-rose-200";
4359
+ return "from-[#d97757]";
4360
4360
  default:
4361
4361
  return "from-stone-100";
4362
4362
  }
@@ -4882,7 +4882,7 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4882
4882
  case "COMPLETED":
4883
4883
  return "bg-stone-400";
4884
4884
  case "CANCELLED":
4885
- return "bg-rose-500";
4885
+ return "bg-[#d97757]";
4886
4886
  default:
4887
4887
  return "bg-stone-200";
4888
4888
  }
@@ -4970,7 +4970,7 @@ var MemberAvatar2 = ({ src, status }) => {
4970
4970
  case "BUSY":
4971
4971
  return "bg-amber-500";
4972
4972
  case "OFFLINE":
4973
- return "bg-rose-500";
4973
+ return "bg-[#d97757]";
4974
4974
  case "AWAY":
4975
4975
  return "bg-stone-400";
4976
4976
  default:
@@ -5095,7 +5095,7 @@ var UniversalMembersPage = ({
5095
5095
  placeholder: "Search members...",
5096
5096
  value: localSearchQuery,
5097
5097
  onChange: (e) => setLocalSearchQuery(e.target.value),
5098
- className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black"
5098
+ className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent"
5099
5099
  }
5100
5100
  )), /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React50.createElement(
5101
5101
  "button",
@@ -5154,7 +5154,7 @@ var UniversalMembersPage = ({
5154
5154
  "button",
5155
5155
  {
5156
5156
  onClick: () => setMemberToRemove(member),
5157
- className: "flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-xs tracking-wide transition-colors outline-none"
5157
+ className: "flex-1 py-2.5 bg-white border border-[#d97757] text-[#d97757] hover:bg-[#d97757]/10 rounded-full text-xs tracking-wide transition-colors outline-none"
5158
5158
  },
5159
5159
  actionButtonText
5160
5160
  ), /* @__PURE__ */ React50.createElement(
@@ -5334,7 +5334,7 @@ var UniversalHome2 = ({
5334
5334
  className: "relative w-10 h-10 flex items-center justify-center rounded-full bg-white outline-none hover:bg-stone-50 transition-colors"
5335
5335
  },
5336
5336
  /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Notification01Icon2, size: 20, className: "text-black" }),
5337
- hasUnreadNotifs && /* @__PURE__ */ React51.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
5337
+ hasUnreadNotifs && /* @__PURE__ */ React51.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-[#d97757] rounded-full border border-white" })
5338
5338
  ))), /* @__PURE__ */ React51.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React51.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React51.createElement(
5339
5339
  "div",
5340
5340
  {
@@ -5420,7 +5420,7 @@ var UniversalHome2 = ({
5420
5420
  },
5421
5421
  className: `p-3 flex items-start gap-3 rounded-xl cursor-pointer transition-colors ${isNotifsLoading ? "opacity-50 pointer-events-none" : "hover:bg-stone-50"}`
5422
5422
  },
5423
- /* @__PURE__ */ React51.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ React51.createElement("div", { className: "w-1.5 h-1.5 bg-red-500 rounded-full" }) : /* @__PURE__ */ React51.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
5423
+ /* @__PURE__ */ React51.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ React51.createElement("div", { className: "w-1.5 h-1.5 bg-[#d97757] rounded-full" }) : /* @__PURE__ */ React51.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
5424
5424
  /* @__PURE__ */ React51.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ React51.createElement("h5", { className: `text-xs truncate ${notif.isRead ? "text-stone-500" : "text-black"}` }, notif.title), /* @__PURE__ */ React51.createElement("p", { className: "text-xs text-stone-400 truncate mt-0.5" }, notif.message), /* @__PURE__ */ React51.createElement("span", { className: "text-xs text-stone-400 tracking-widest mt-2 block" }, formatNotifDate(notif.createdAt)))
5425
5425
  )))), !selectedNotif && /* @__PURE__ */ React51.createElement("div", { className: "p-4 flex items-center justify-between shrink-0" }, /* @__PURE__ */ React51.createElement("span", { className: "text-xs text-stone-400 tracking-widest" }, "Page ", notificationPage, " of ", notificationTotalPages === 0 ? 1 : notificationTotalPages), /* @__PURE__ */ React51.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React51.createElement(
5426
5426
  "button",
@@ -5468,7 +5468,7 @@ var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5468
5468
  case "BUSY":
5469
5469
  return "bg-amber-500";
5470
5470
  case "OFFLINE":
5471
- return "bg-rose-500";
5471
+ return "bg-[#d97757]";
5472
5472
  case "AWAY":
5473
5473
  return "bg-stone-400";
5474
5474
  default:
@@ -5477,6 +5477,22 @@ var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5477
5477
  };
5478
5478
  return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React52.createElement("img", { src: finalSrc, alt: "Member", className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`, onLoad: () => setLoaded(true), onError: () => setError(true) })), /* @__PURE__ */ React52.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
5479
5479
  };
5480
+ var OrgAvatar2 = ({ src, sizeClass = "w-10 h-10" }) => {
5481
+ const [loaded, setLoaded] = useState38(false);
5482
+ const [error, setError] = useState38(false);
5483
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
5484
+ const finalSrc = error || !src ? defaultAvatar : src;
5485
+ return /* @__PURE__ */ React52.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React52.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React52.createElement(
5486
+ "img",
5487
+ {
5488
+ src: finalSrc,
5489
+ alt: "Workspace Avatar",
5490
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
5491
+ onLoad: () => setLoaded(true),
5492
+ onError: () => setError(true)
5493
+ }
5494
+ )));
5495
+ };
5480
5496
  var PageSpinner8 = () => /* @__PURE__ */ React52.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, size: 32, className: "animate-spin mb-4 text-black" }));
5481
5497
  var InputSpinner3 = () => /* @__PURE__ */ React52.createElement("svg", { className: "animate-spin h-4 w-4 text-stone-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React52.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React52.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" }));
5482
5498
  var UniversalSettings = ({
@@ -5502,11 +5518,16 @@ var UniversalSettings = ({
5502
5518
  onUpdateRole,
5503
5519
  initialOrgName = "",
5504
5520
  initialOrgSlug = "",
5521
+ initialOrgAvatarUrl = "",
5505
5522
  initialFullName = "",
5506
5523
  initialEmail = "",
5524
+ initialJobTitle = "",
5525
+ initialDescription = "",
5526
+ initialAvatarUrl = "",
5507
5527
  onSaveProfile,
5508
5528
  onSaveOrganization,
5509
5529
  onCheckSlugAvailability,
5530
+ onUploadAvatar,
5510
5531
  aiCredits,
5511
5532
  isBillingLoading = false,
5512
5533
  onTopUp,
@@ -5516,7 +5537,8 @@ var UniversalSettings = ({
5516
5537
  if (typeof window !== "undefined") window.history.back();
5517
5538
  });
5518
5539
  const isOrg = accountType === "ORGANIZATION";
5519
- const canManage = ["ADMIN", "MANAGER", "OWNER"].includes(userRole?.toUpperCase() || "");
5540
+ const safeRole = String(userRole || "").toUpperCase().trim();
5541
+ const canManage = ["ADMIN", "MANAGER", "OWNER"].includes(safeRole);
5520
5542
  const [activeTab, setActiveTab] = useState38(isOrg ? "MEMBERS" : "ACCOUNT");
5521
5543
  const [expandedId, setExpandedId] = useState38(null);
5522
5544
  const [memberToRemove, setMemberToRemove] = useState38(null);
@@ -5533,19 +5555,67 @@ var UniversalSettings = ({
5533
5555
  const [isUpdatingRole, setIsUpdatingRole] = useState38(false);
5534
5556
  const [orgName, setOrgName] = useState38(initialOrgName);
5535
5557
  const [orgSlug, setOrgSlug] = useState38(initialOrgSlug);
5558
+ const [orgAvatarUrl, setOrgAvatarUrl] = useState38(initialOrgAvatarUrl);
5536
5559
  const [firstName, setFirstName] = useState38("");
5537
5560
  const [lastName, setLastName] = useState38("");
5561
+ const [jobTitle, setJobTitle] = useState38(initialJobTitle);
5562
+ const [description, setDescription] = useState38(initialDescription);
5563
+ const [avatarUrl, setAvatarUrl] = useState38(initialAvatarUrl);
5538
5564
  const [isCheckingSlug, setIsCheckingSlug] = useState38(false);
5539
5565
  const [slugAvailable, setSlugAvailable] = useState38(null);
5540
5566
  const [isSavingOrg, setIsSavingOrg] = useState38(false);
5541
5567
  const [isSavingProfile, setIsSavingProfile] = useState38(false);
5568
+ const orgFileInputRef = useRef14(null);
5569
+ const userFileInputRef = useRef14(null);
5570
+ const [isUploadingOrgAvatar, setIsUploadingOrgAvatar] = useState38(false);
5571
+ const [isUploadingUserAvatar, setIsUploadingUserAvatar] = useState38(false);
5542
5572
  useEffect21(() => {
5543
5573
  setOrgName(initialOrgName || "");
5544
5574
  setOrgSlug(initialOrgSlug || "");
5575
+ setOrgAvatarUrl(initialOrgAvatarUrl || "");
5545
5576
  const parts = (initialFullName || "").split(" ");
5546
5577
  setFirstName(parts[0] || "");
5547
5578
  setLastName(parts.slice(1).join(" ") || "");
5548
- }, [initialOrgName, initialOrgSlug, initialFullName]);
5579
+ setJobTitle(initialJobTitle || "");
5580
+ setDescription(initialDescription || "");
5581
+ setAvatarUrl(initialAvatarUrl || "");
5582
+ }, [initialOrgName, initialOrgSlug, initialOrgAvatarUrl, initialFullName, initialJobTitle, initialDescription, initialAvatarUrl]);
5583
+ const handleFileSelect = async (e, type) => {
5584
+ const file = e.target.files?.[0];
5585
+ if (!file) return;
5586
+ if (file.size > 1024 * 1024) {
5587
+ toast14.error("Image size must be less than 1MB.");
5588
+ e.target.value = "";
5589
+ return;
5590
+ }
5591
+ const validTypes = ["image/jpeg", "image/jpg", "image/png"];
5592
+ if (!validTypes.includes(file.type)) {
5593
+ toast14.error("Only PNG and JPEG images are allowed.");
5594
+ e.target.value = "";
5595
+ return;
5596
+ }
5597
+ if (!onUploadAvatar) {
5598
+ toast14.error("Upload service not configured.");
5599
+ e.target.value = "";
5600
+ return;
5601
+ }
5602
+ try {
5603
+ if (type === "USER") setIsUploadingUserAvatar(true);
5604
+ if (type === "ORGANIZATION") setIsUploadingOrgAvatar(true);
5605
+ const res = await onUploadAvatar(file, type);
5606
+ if (res?.url) {
5607
+ if (type === "USER") setAvatarUrl(res.url);
5608
+ if (type === "ORGANIZATION") setOrgAvatarUrl(res.url);
5609
+ toast14.success("Image uploaded. Remember to save changes.");
5610
+ }
5611
+ } catch (error) {
5612
+ toast14.error("Failed to process image upload.");
5613
+ } finally {
5614
+ if (type === "USER") setIsUploadingUserAvatar(false);
5615
+ if (type === "ORGANIZATION") setIsUploadingOrgAvatar(false);
5616
+ e.target.value = "";
5617
+ }
5618
+ };
5549
5619
  useEffect21(() => {
5550
5620
  if (activeTab !== "MEMBERS") return;
5551
5621
  if (isFirstSearchMount.current) {
@@ -5636,7 +5706,7 @@ var UniversalSettings = ({
5636
5706
  if (orgSlug !== initialOrgSlug && slugAvailable === false) return toast14.error("Address handle unavailable.");
5637
5707
  setIsSavingOrg(true);
5638
5708
  try {
5639
- const res = await onSaveOrganization({ name: orgName, slug: orgSlug });
5709
+ const res = await onSaveOrganization({ name: orgName, slug: orgSlug, avatarUrl: orgAvatarUrl });
5640
5710
  if (res.success) toast14.success("Workspace updated successfully.");
5641
5711
  else toast14.error(res.error || "Failed to update workspace.");
5642
5712
  } catch (error) {
@@ -5650,7 +5720,7 @@ var UniversalSettings = ({
5650
5720
  if (isSavingProfile || !onSaveProfile) return;
5651
5721
  setIsSavingProfile(true);
5652
5722
  try {
5653
- const res = await onSaveProfile({ firstName, lastName });
5723
+ const res = await onSaveProfile({ firstName, lastName, jobTitle, description, avatarUrl });
5654
5724
  if (res.success) toast14.success("Identity updated successfully.");
5655
5725
  else toast14.error(res.error || "Failed to update identity.");
5656
5726
  } catch (error) {
@@ -5659,9 +5729,9 @@ var UniversalSettings = ({
5659
5729
  setIsSavingProfile(false);
5660
5730
  }
5661
5731
  };
5662
- const hasOrgChanges = orgName !== initialOrgName || orgSlug !== initialOrgSlug;
5732
+ const hasOrgChanges = orgName !== initialOrgName || orgSlug !== initialOrgSlug || orgAvatarUrl !== initialOrgAvatarUrl;
5663
5733
  const isOrgSaveDisabled = isSavingOrg || !canManage || isCheckingSlug || !hasOrgChanges || orgName.length < 3 || orgSlug.length < 3 || orgSlug !== initialOrgSlug && slugAvailable === false;
5664
- const hasProfileChanges = `${firstName} ${lastName}`.trim() !== initialFullName;
5734
+ const hasProfileChanges = `${firstName} ${lastName}`.trim() !== initialFullName || jobTitle !== initialJobTitle || description !== initialDescription || avatarUrl !== initialAvatarUrl;
5665
5735
  const isProfileSaveDisabled = isSavingProfile || !hasProfileChanges || firstName.length < 2 || lastName.length < 2;
5666
5736
  return /* @__PURE__ */ React52.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement(ManagedToaster, null), /* @__PURE__ */ React52.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React52.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 16 }), " Back")), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ React52.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-6 mb-6 overflow-x-auto custom-scrollbar px-1" }, isOrg && /* @__PURE__ */ React52.createElement("button", { onClick: () => {
5667
5737
  setActiveTab("MEMBERS");
@@ -5680,21 +5750,41 @@ var UniversalSettings = ({
5680
5750
  onClose: () => setMemberToRemove(null),
5681
5751
  onConfirm: handleConfirmRemove
5682
5752
  }
5683
- ), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ React52.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Search01Icon6, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React52.createElement("input", { type: "text", placeholder: "Search members...", value: localSearchQuery, onChange: (e) => setLocalSearchQuery(e.target.value), className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-black" })), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: SearchList02Icon3, size: 16 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsRoleModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ListSettingIcon3, size: 16 })))), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React52.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-500 capitalize" }, activeExpandedMember.role.toLowerCase()), canManage && (isUpdatingRole ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, size: 12, className: "animate-spin text-stone-400 ml-1" }) : /* @__PURE__ */ React52.createElement("button", { onClick: () => setRoleEditTarget(activeExpandedMember), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"))))), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, canManage && /* @__PURE__ */ React52.createElement(
5753
+ ), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ React52.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Search01Icon6, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React52.createElement("input", { type: "text", placeholder: "Search members...", value: localSearchQuery, onChange: (e) => setLocalSearchQuery(e.target.value), className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent " })), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: SearchList02Icon3, size: 16 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsRoleModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ListSettingIcon3, size: 16 })))), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "mb-6 flex w-full items-center" }, /* @__PURE__ */ React52.createElement(
5754
+ "button",
5755
+ {
5756
+ onClick: () => setExpandedId(null),
5757
+ disabled: isUpdatingRole,
5758
+ className: "flex items-center gap-2 text-[#d97757] hover:text-[#d97757] transition-colors text-sm outline-none disabled:opacity-50"
5759
+ },
5760
+ /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 16 }),
5761
+ " Back"
5762
+ )), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React52.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-0.5" }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-500 capitalize" }, activeExpandedMember.role.toLowerCase()), canManage && (isUpdatingRole ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, size: 12, className: "animate-spin text-stone-400 ml-1" }) : /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("span", { className: "text-stone-300 text-xs px-0.5" }, "\u2022"), /* @__PURE__ */ React52.createElement("button", { onClick: () => setRoleEditTarget(activeExpandedMember), className: "text-xs text-[#d97757] hover:underline outline-none" }, "Edit"), /* @__PURE__ */ React52.createElement("span", { className: "text-stone-300 text-xs px-0.5" }, "\u2022"), /* @__PURE__ */ React52.createElement(
5684
5763
  "button",
5685
5764
  {
5686
5765
  onClick: () => setMemberToRemove(activeExpandedMember),
5687
5766
  disabled: isUpdatingRole,
5688
- 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-xs tracking-wide transition-colors outline-none disabled:opacity-50"
5767
+ className: "text-xs text-[#d97757] hover:underline outline-none disabled:opacity-50"
5689
5768
  },
5690
- "Remove Access"
5691
- ), /* @__PURE__ */ React52.createElement("button", { onClick: () => setExpandedId(null), disabled: isUpdatingRole, className: "w-full sm:flex-1 py-2.5 bg-white border border-stone-200 text-black hover:bg-stone-100 rounded-full text-xs tracking-wide transition-colors outline-none disabled:opacity-50" }, "Close Profile"))) : /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ React52.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ React52.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
5769
+ "Remove"
5770
+ ))))))) : /* @__PURE__ */ React52.createElement(React52.Fragment, null, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && canManage && /* @__PURE__ */ React52.createElement("button", { onClick: () => setIsInviteMode(true), className: "shrink-0 px-4 py-1.5 border border-stone-200 text-black text-xs tracking-wide rounded-full hover:bg-stone-50 transition-colors outline-none" }, "Invite Team")), !isInviteMode && /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ React52.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ React52.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(cleanEmailId(e.target.value)), required: true, autoFocus: true, className: "w-full px-2 py-3 bg-transparent text-sm border-b border-stone-200 text-black outline-none focus:border-black transition-all duration-300", placeholder: "name@company.com" })), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: inviteEmail.length < 5 || isInviting, isLoading: isInviting, className: "w-full" }, "Send Invitation"), /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
5692
5771
  setIsInviteMode(false);
5693
5772
  setInviteEmail("");
5694
- }, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ React52.createElement(PageSpinner8, null) : /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", null, members.length === 0 ? /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ React52.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ React52.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 14 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowRight01Icon13, size: 14 })))))))), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isStatusModalOpen, onClose: () => setIsStatusModalOpen(false), title: "Status Filter", options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"], selectedOption: activeStatusFilter, onSelect: (status) => onStatusFilterChange(status) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isRoleModalOpen, onClose: () => setIsRoleModalOpen(false), title: "Role Filter", options: ["ALL", "OWNER", "ADMIN", "MANAGER", "MEMBER", "GUEST"], selectedOption: activeRoleFilter, onSelect: (role) => onRoleFilterChange(role) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles.")), !canManage && /* @__PURE__ */ React52.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: CircleLock02Icon3, size: 18, className: "text-current" }))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ React52.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React52.createElement(InputSpinner3, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.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__ */ React52.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
5773
+ }, disabled: isInviting, className: "w-full flex items-center justify-center py-2.5 rounded-full border border-stone-200 text-black hover:bg-stone-50 transition-colors outline-none text-xs tracking-wide" }, "Cancel"))) : isMembersLoading || isTyping ? /* @__PURE__ */ React52.createElement(PageSpinner8, null) : /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", null, members.length === 0 ? /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ React52.createElement("div", { key: member.id, onClick: () => setExpandedId(member.id), className: "flex items-center justify-between py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ React52.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ React52.createElement("p", { className: "text-sm text-black truncate" }, member.fullName), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 capitalize truncate" }, member.role.toLowerCase())))))), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React52.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage - 1), disabled: membersCurrentPage <= 1 || isMembersLoading, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowLeft01Icon18, size: 14 })), /* @__PURE__ */ React52.createElement("button", { onClick: () => onMembersPageChange(membersCurrentPage + 1), disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0, className: "p-2 bg-white border border-stone-200 rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: ArrowRight01Icon13, size: 14 })))))))), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isStatusModalOpen, onClose: () => setIsStatusModalOpen(false), title: "Status Filter", options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"], selectedOption: activeStatusFilter, onSelect: (status) => onStatusFilterChange(status) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: isRoleModalOpen, onClose: () => setIsRoleModalOpen(false), title: "Role Filter", options: ["ALL", "OWNER", "ADMIN", "MANAGER", "MEMBER", "GUEST"], selectedOption: activeRoleFilter, onSelect: (role) => onRoleFilterChange(role) }), /* @__PURE__ */ React52.createElement(ReusableOptions, { isOpen: !!roleEditTarget, onClose: () => setRoleEditTarget(null), title: "Modify Access Role", options: ["ADMIN", "MANAGER", "MEMBER"], selectedOption: roleEditTarget?.role || "", onSelect: handleRoleUpdate })), activeTab === "ORGANIZATION" && isOrg && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => canManage && !isSavingOrg ? orgFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(OrgAvatar2, { src: orgAvatarUrl, sizeClass: "w-14 h-14" }), canManage && /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-10" }, isUploadingOrgAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, size: 12, className: "animate-spin" }) : /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: PlusSignIcon3, size: 14 })), /* @__PURE__ */ React52.createElement("input", { type: "file", ref: orgFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "ORGANIZATION") })), /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Workspace Details"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Manage your organizational identity and handles."))), !canManage && /* @__PURE__ */ React52.createElement("span", { className: "p-2 w-9 h-9 bg-stone-100 text-stone-400 rounded-full shrink-0" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: CircleLock02Icon3, size: 18, className: "text-current" }))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-8 w-full max-w-5xl", onSubmit: handleSaveOrganization, autoComplete: "off" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "Workspace Name", value: orgName, onChange: handleOrgNameChange, disabled: !canManage || isSavingOrg, placeholder: "Acme Corporation", maxLength: 50 }), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center relative w-full border-b border-stone-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ React52.createElement("input", { type: "text", value: orgSlug, disabled: !canManage || isSavingOrg, onChange: (e) => handleOrgSlugChange(e.target.value), spellCheck: "false", autoComplete: "off", className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed", placeholder: "workspace-handle" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ React52.createElement(InputSpinner3, null), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === false && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-[#d97757]/10" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-[#d97757]", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && canManage && orgSlug !== initialOrgSlug && orgSlug.length >= 3 && slugAvailable === true && /* @__PURE__ */ React52.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ React52.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React52.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__ */ React52.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: isOrgSaveDisabled, isLoading: isSavingOrg, className: "min-w-32" }, "Save Changes"), hasOrgChanges && !isSavingOrg && canManage && /* @__PURE__ */ React52.createElement("button", { type: "button", onClick: () => {
5695
5774
  setOrgName(initialOrgName || "");
5696
5775
  setOrgSlug(initialOrgSlug || "");
5697
- }, className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none" }, "Cancel")))), activeTab === "ACCOUNT" && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 rounded-2xl p-6 bg-white w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Personal Identity"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Update your system display name and contact email."))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-6 w-full max-w-5xl", onSubmit: handleSaveProfile, autoComplete: "off" }, /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "First Name", value: firstName, onChange: (v) => setFirstName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "First name", maxLength: 50 }), /* @__PURE__ */ React52.createElement(TextInput, { label: "Last Name", value: lastName, onChange: (v) => setLastName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "Last name", maxLength: 50 })), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: initialEmail, disabled: true, className: "w-full pb-3 pt-3 text-sm bg-transparent text-stone-400 border-b border-stone-200 outline-none cursor-not-allowed" })), /* @__PURE__ */ React52.createElement("div", { className: "pt-4 flex items-center gap-4" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: isProfileSaveDisabled, isLoading: isSavingProfile, className: "min-w-32" }, "Update Identity")))), /* @__PURE__ */ React52.createElement("div", { className: "bg-white rounded-2xl p-6 w-full flex flex-col sm:flex-row sm:items-center justify-between gap-6 border border-stone-100" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col items-start max-w-sm" }, /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 tracking-[0.2em] mb-2 " }, "AI Credits Balance"), isBillingLoading ? /* @__PURE__ */ React52.createElement("div", { className: "h-8 w-32 bg-stone-100 animate-pulse rounded mt-1" }) : /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Coins01Icon, size: 28, className: "text-[#d97757]" }), /* @__PURE__ */ React52.createElement("span", { className: "text-3xl text-black tracking-tight" }, aiCredits)), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 mt-4 leading-relaxed" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights.")), /* @__PURE__ */ React52.createElement("button", { onClick: onTopUp, className: "w-12 h-12 rounded-full border border-stone-200 flex items-center justify-center text-black hover:bg-stone-50 transition-colors outline-none shrink-0", "aria-label": "Top Up Credits" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: PlusSignIcon3, size: 20 })))));
5776
+ setOrgAvatarUrl(initialOrgAvatarUrl || "");
5777
+ }, className: "text-xs tracking-widest text-stone-400 hover:text-black transition-colors outline-none" }, "Cancel")))), activeTab === "ACCOUNT" && /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in duration-300" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-8 rounded-2xl p-6 bg-white w-full" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React52.createElement("div", { className: "relative group cursor-pointer shrink-0", onClick: () => !isSavingProfile ? userFileInputRef.current?.click() : void 0 }, /* @__PURE__ */ React52.createElement(MemberAvatar3, { src: avatarUrl, status: "ACTIVE", sizeClass: "w-14 h-14" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute -bottom-1 -right-1 w-6 h-6 bg-white border border-stone-200 rounded-full flex items-center justify-center text-stone-500 group-hover:text-black transition-colors z-20" }, isUploadingUserAvatar ? /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Loading03Icon25, size: 12, className: "animate-spin" }) : /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: PlusSignIcon3, size: 14 })), /* @__PURE__ */ React52.createElement("input", { type: "file", ref: userFileInputRef, className: "hidden", accept: ".png, .jpg, .jpeg", onChange: (e) => handleFileSelect(e, "USER") })), /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Personal Identity"), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500" }, "Update your system display name and contact email.")))), /* @__PURE__ */ React52.createElement("form", { className: "flex flex-col gap-6 w-full max-w-5xl", onSubmit: handleSaveProfile, autoComplete: "off" }, /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "First Name", value: firstName, onChange: (v) => setFirstName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "First name", maxLength: 50 }), /* @__PURE__ */ React52.createElement(TextInput, { label: "Last Name", value: lastName, onChange: (v) => setLastName(v.replace(/[^a-zA-Z\s-]/g, "").substring(0, 50)), disabled: isSavingProfile, placeholder: "Last name", maxLength: 50 })), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-6" }, /* @__PURE__ */ React52.createElement(TextInput, { label: "Job Title", value: jobTitle, onChange: (v) => setJobTitle(v.substring(0, 50)), disabled: isSavingProfile, placeholder: "e.g. HR Manager, CEO", maxLength: 50 }), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ React52.createElement("input", { type: "email", value: initialEmail, disabled: true, className: "w-full pb-3 pt-3 text-sm bg-transparent text-stone-400 border-b border-stone-200 outline-none cursor-not-allowed" }))), /* @__PURE__ */ React52.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ React52.createElement("label", { className: "text-xs text-stone-400 tracking-[0.2em] block" }, "About Me"), /* @__PURE__ */ React52.createElement(
5778
+ "textarea",
5779
+ {
5780
+ value: description,
5781
+ onChange: (e) => setDescription(e.target.value.substring(0, 300)),
5782
+ disabled: isSavingProfile,
5783
+ placeholder: "A short shout about yourself...",
5784
+ className: "w-full pb-3 pt-3 text-sm bg-transparent text-black border-b border-stone-200 outline-none focus:border-black transition-all duration-300 resize-none h-20 custom-scrollbar",
5785
+ maxLength: 300
5786
+ }
5787
+ )), /* @__PURE__ */ React52.createElement("div", { className: "pt-4 flex items-center gap-4" }, /* @__PURE__ */ React52.createElement(ThreeDActionButton, { type: "submit", disabled: isProfileSaveDisabled, isLoading: isSavingProfile, className: "min-w-32" }, "Update Identity")))), /* @__PURE__ */ React52.createElement("div", { className: "bg-white rounded-2xl p-6 w-full flex flex-col sm:flex-row sm:items-center justify-between gap-6 border border-stone-100" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col items-start max-w-sm" }, /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-400 tracking-[0.2em] mb-2 uppercase" }, "AI Credits Balance"), isBillingLoading ? /* @__PURE__ */ React52.createElement("div", { className: "h-8 w-32 bg-stone-100 animate-pulse rounded mt-1" }) : /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: Coins01Icon, size: 28, className: "text-[#d97757]" }), /* @__PURE__ */ React52.createElement("span", { className: "text-3xl text-black tracking-tight" }, aiCredits)), /* @__PURE__ */ React52.createElement("p", { className: "text-xs text-stone-500 mt-4 leading-relaxed" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights.")), /* @__PURE__ */ React52.createElement("button", { onClick: onTopUp, className: "w-12 h-12 rounded-full border border-stone-200 flex items-center justify-center text-black hover:bg-stone-50 transition-colors outline-none shrink-0", "aria-label": "Top Up Credits" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon38, { icon: PlusSignIcon3, size: 20 })))));
5698
5788
  };
5699
5789
 
5700
5790
  // src/components/UniversalCreateHuddle.tsx
@@ -5904,7 +5994,7 @@ var UniversalCreateHuddle = ({
5904
5994
  placeholder: "Search team...",
5905
5995
  value: localSearchQuery,
5906
5996
  onChange: handleSearchInput,
5907
- className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors"
5997
+ className: "w-full pl-10 pr-4 py-2.5 bg-stone-100 rounded-full focus:border-[#d97757] border border-transparent text-sm text-black placeholder-stone-400 outline-none focus:bg-stone-200 transition-colors"
5908
5998
  }
5909
5999
  ))), /* @__PURE__ */ React53.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon: Loading03Icon26, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ React53.createElement("div", { className: "p-8 text-center text-xs text-stone-400" }, "No members found.") : members.map((member) => {
5910
6000
  const isChecked = selectedParticipants.has(member.userId);
@@ -5936,6 +6026,199 @@ var UniversalCreateHuddle = ({
5936
6026
  /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon: ArrowRight01Icon14, size: 12 })
5937
6027
  ))))));
5938
6028
  };
6029
+
6030
+ // src/components/HomeHuddleCalendar.tsx
6031
+ import React54, { useState as useState40, useRef as useRef16, useEffect as useEffect23 } from "react";
6032
+ import { useRouter as useRouter4 } from "next/navigation";
6033
+ import { HugeiconsIcon as HugeiconsIcon40 } from "@hugeicons/react";
6034
+ import {
6035
+ ArrowLeft01Icon as ArrowLeft01Icon20,
6036
+ ArrowRight01Icon as ArrowRight01Icon15,
6037
+ Loading03Icon as Loading03Icon27,
6038
+ Search01Icon as Search01Icon8,
6039
+ TimeScheduleIcon
6040
+ } from "@hugeicons/core-free-icons";
6041
+ var MONTHS2 = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
6042
+ var DAYS_OF_WEEK2 = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
6043
+ var HuddleAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6044
+ const [loaded, setLoaded] = useState40(false);
6045
+ const [error, setError] = useState40(false);
6046
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
6047
+ const finalSrc = error || !src ? defaultAvatar : src;
6048
+ const getStatusColor = () => {
6049
+ switch (status?.toUpperCase()) {
6050
+ case "SCHEDULED":
6051
+ return "bg-amber-500";
6052
+ case "ONGOING":
6053
+ return "bg-emerald-500";
6054
+ case "COMPLETED":
6055
+ return "bg-stone-400";
6056
+ case "CANCELLED":
6057
+ return "bg-[#d97757]";
6058
+ default:
6059
+ return "bg-stone-200";
6060
+ }
6061
+ };
6062
+ return /* @__PURE__ */ React54.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React54.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Loading03Icon27, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React54.createElement(
6063
+ "img",
6064
+ {
6065
+ src: finalSrc,
6066
+ alt: "Huddle Avatar",
6067
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
6068
+ onLoad: () => setLoaded(true),
6069
+ onError: () => setError(true)
6070
+ }
6071
+ )), /* @__PURE__ */ React54.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
6072
+ };
6073
+ var HomeHuddleCalendar = ({
6074
+ huddles = [],
6075
+ isLoading,
6076
+ currentPage,
6077
+ totalPages,
6078
+ onPageChange,
6079
+ searchQuery = "",
6080
+ onSearchChange,
6081
+ statusFilter = "ALL",
6082
+ onStatusFilterChange
6083
+ }) => {
6084
+ const router = useRouter4();
6085
+ const [localSearch, setLocalSearch] = useState40(searchQuery);
6086
+ const [isStatusModalOpen, setIsStatusModalOpen] = useState40(false);
6087
+ const typingTimer = useRef16(null);
6088
+ const isSearching = localSearch.trim().length > 0;
6089
+ useEffect23(() => {
6090
+ setLocalSearch(searchQuery);
6091
+ }, [searchQuery]);
6092
+ const handleSearchInput = (e) => {
6093
+ const val = e.target.value;
6094
+ setLocalSearch(val);
6095
+ if (typingTimer.current) clearTimeout(typingTimer.current);
6096
+ typingTimer.current = setTimeout(() => {
6097
+ onSearchChange?.(val);
6098
+ }, 500);
6099
+ };
6100
+ const today = /* @__PURE__ */ new Date();
6101
+ const [viewMonth, setViewMonth] = useState40(today.getMonth());
6102
+ const [viewYear, setViewYear] = useState40(today.getFullYear());
6103
+ const [selectedDate, setSelectedDate] = useState40(new Date(today.getFullYear(), today.getMonth(), today.getDate()));
6104
+ const handlePrevMonth = () => {
6105
+ if (viewMonth === 0) {
6106
+ setViewMonth(11);
6107
+ setViewYear((y) => y - 1);
6108
+ } else {
6109
+ setViewMonth((m) => m - 1);
6110
+ }
6111
+ };
6112
+ const handleNextMonth = () => {
6113
+ if (viewMonth === 11) {
6114
+ setViewMonth(0);
6115
+ setViewYear((y) => y + 1);
6116
+ } else {
6117
+ setViewMonth((m) => m + 1);
6118
+ }
6119
+ };
6120
+ const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();
6121
+ const firstDayOffset = new Date(viewYear, viewMonth, 1).getDay();
6122
+ const parseHuddleDate = (ts) => {
6123
+ try {
6124
+ const rawDate = ts.split("|")[0].trim();
6125
+ const d = new Date(rawDate);
6126
+ return isNaN(d.getTime()) ? null : d;
6127
+ } catch {
6128
+ return null;
6129
+ }
6130
+ };
6131
+ const parsedEvents = huddles.map((h) => ({
6132
+ ...h,
6133
+ dateObj: parseHuddleDate(h.timeString)
6134
+ }));
6135
+ const selectedDayEvents = parsedEvents.filter(
6136
+ (e) => e.dateObj && e.dateObj.toDateString() === selectedDate.toDateString()
6137
+ );
6138
+ const displayedEvents = isSearching ? parsedEvents : selectedDayEvents;
6139
+ return /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col animate-in fade-in duration-300 w-full" }, /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col gap-6 mb-6 w-full" }, /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4" }, /* @__PURE__ */ React54.createElement("div", null, /* @__PURE__ */ React54.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Schedule"), /* @__PURE__ */ React54.createElement("p", { className: "text-xs text-stone-500 mt-0.5" }, "Manage and view your workspace sessions."))), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-row flex-nowrap items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React54.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React54.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Search01Icon8, size: 16, className: "text-stone-400" })), /* @__PURE__ */ React54.createElement(
6140
+ "input",
6141
+ {
6142
+ type: "text",
6143
+ placeholder: "Search schedule...",
6144
+ value: localSearch,
6145
+ onChange: handleSearchInput,
6146
+ className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-sm text-black placeholder-stone-400 outline-none transition-colors focus:border-[#d97757] border border-transparent hover:border-stone-200"
6147
+ }
6148
+ )), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React54.createElement("button", { onClick: () => setIsStatusModalOpen(true), className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-stone-500 hover:text-black transition-colors outline-none " }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: TimeScheduleIcon, size: 16 }))))), !isSearching && /* @__PURE__ */ React54.createElement("div", { className: "bg-white rounded-2xl p-5 mb-6 relative overflow-hidden animate-in fade-in duration-300" }, isLoading && /* @__PURE__ */ React54.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/60 backdrop-blur-sm" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Loading03Icon27, size: 28, className: "animate-spin text-black" })), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between px-2 mb-4" }, /* @__PURE__ */ React54.createElement("span", { className: "text-sm text-black tracking-wide" }, MONTHS2[viewMonth], " ", viewYear), /* @__PURE__ */ React54.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ React54.createElement(
6149
+ "button",
6150
+ {
6151
+ onClick: handlePrevMonth,
6152
+ className: "w-8 h-8 flex items-center justify-center border border-stone-200 rounded-full hover:bg-stone-100 outline-none transition-colors"
6153
+ },
6154
+ /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowLeft01Icon20, size: 16, className: "text-black" })
6155
+ ), /* @__PURE__ */ React54.createElement(
6156
+ "button",
6157
+ {
6158
+ onClick: handleNextMonth,
6159
+ className: "w-8 h-8 flex items-center justify-center rounded-full border border-stone-200 hover:bg-stone-100 outline-none transition-colors"
6160
+ },
6161
+ /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowRight01Icon15, size: 16, className: "text-black" })
6162
+ ))), /* @__PURE__ */ React54.createElement("div", { className: "grid grid-cols-7 gap-y-2 gap-x-1" }, DAYS_OF_WEEK2.map((d) => /* @__PURE__ */ React54.createElement("div", { key: d, className: "text-center text-[11px] text-stone-400 py-2 uppercase tracking-widest" }, d)), Array.from({ length: firstDayOffset }).map((_, i) => /* @__PURE__ */ React54.createElement("div", { key: `empty-${i}` })), Array.from({ length: daysInMonth }).map((_, i) => {
6163
+ const day = i + 1;
6164
+ const thisDate = new Date(viewYear, viewMonth, day);
6165
+ const isSelected = selectedDate.getFullYear() === viewYear && selectedDate.getMonth() === viewMonth && selectedDate.getDate() === day;
6166
+ const dayEventsCount = parsedEvents.filter((e) => e.dateObj && e.dateObj.toDateString() === thisDate.toDateString()).length;
6167
+ return /* @__PURE__ */ React54.createElement("div", { key: day, className: "flex justify-center relative" }, /* @__PURE__ */ React54.createElement(
6168
+ "button",
6169
+ {
6170
+ onClick: () => setSelectedDate(thisDate),
6171
+ className: `relative h-10 w-10 rounded-full flex items-center justify-center text-xs transition-all outline-none
6172
+ ${isSelected ? "bg-[#d97757] text-white" : "text-black hover:bg-stone-100"}`
6173
+ },
6174
+ day,
6175
+ dayEventsCount > 0 && /* @__PURE__ */ React54.createElement(
6176
+ "span",
6177
+ {
6178
+ className: `absolute -top-1 -right-1 flex h-4.5 w-4.5 items-center justify-center rounded-full text-[9px] ring-2 ring-white
6179
+ ${isSelected ? "bg-white text-[#d97757]" : "bg-stone-100 text-stone-900"}`
6180
+ },
6181
+ dayEventsCount
6182
+ )
6183
+ ));
6184
+ }))), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col gap-4 bg-white rounded-2xl p-6 relative min-h-37.5" }, /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between pb-4" }, /* @__PURE__ */ React54.createElement("h3", { className: "text-sm text-black " }, isSearching ? "Search Results" : `Events for ${selectedDate.toLocaleDateString("en-GB", { day: "numeric", month: "short", year: "numeric" })}`), /* @__PURE__ */ React54.createElement("span", { className: "text-[10px] uppercase tracking-widest text-stone-400 " }, displayedEvents.length, " ", displayedEvents.length === 1 ? "Session" : "Sessions")), /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col min-w-0 pt-2" }, isLoading ? /* @__PURE__ */ React54.createElement("div", { className: "py-8 flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: Loading03Icon27, size: 28, className: "animate-spin text-stone-400" })) : displayedEvents.length === 0 ? /* @__PURE__ */ React54.createElement("div", { className: "py-8 flex flex-col items-center justify-center text-center" }, /* @__PURE__ */ React54.createElement("p", { className: "text-xs text-stone-400" }, isSearching ? "No sessions found for this search." : "No sessions scheduled for this date.")) : displayedEvents.map((huddle) => /* @__PURE__ */ React54.createElement(
6185
+ "div",
6186
+ {
6187
+ key: huddle.id,
6188
+ onClick: () => router.push(`/app/huddles/${huddle.id}`),
6189
+ className: "flex flex-row items-center gap-4 py-3 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
6190
+ },
6191
+ /* @__PURE__ */ React54.createElement(HuddleAvatar2, { src: huddle.imageUrl, status: huddle.status }),
6192
+ /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React54.createElement("p", { className: "text-sm text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ React54.createElement("span", { className: "text-[11px] text-stone-500 truncate block mt-1 tracking-wide" }, isSearching ? huddle.timeString : huddle.timeString.split("|")[1]?.trim() || huddle.timeString)),
6193
+ /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowRight01Icon15, size: 14, className: "shrink-0 text-stone-400 group-hover:text-black transition-colors" })
6194
+ )))), huddles.length > 0 && !isLoading && /* @__PURE__ */ React54.createElement("div", { className: "flex items-center justify-between pt-6 mt-4 mb-2" }, /* @__PURE__ */ React54.createElement("span", { className: "text-[10px] text-stone-400 tracking-widest uppercase" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React54.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React54.createElement(
6195
+ "button",
6196
+ {
6197
+ onClick: () => onPageChange(currentPage - 1),
6198
+ disabled: currentPage <= 1,
6199
+ className: "p-2 bg-white rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none "
6200
+ },
6201
+ /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowLeft01Icon20, size: 14 })
6202
+ ), /* @__PURE__ */ React54.createElement(
6203
+ "button",
6204
+ {
6205
+ onClick: () => onPageChange(currentPage + 1),
6206
+ disabled: currentPage >= totalPages || totalPages === 0,
6207
+ className: "p-2 bg-white rounded-full text-black hover:bg-stone-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none "
6208
+ },
6209
+ /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowRight01Icon15, size: 14 })
6210
+ ))), /* @__PURE__ */ React54.createElement(
6211
+ ReusableOptions,
6212
+ {
6213
+ isOpen: isStatusModalOpen,
6214
+ onClose: () => setIsStatusModalOpen(false),
6215
+ title: "Status Filter",
6216
+ options: ["ALL", "SCHEDULED", "ONGOING", "COMPLETED", "CANCELLED"],
6217
+ selectedOption: statusFilter,
6218
+ onSelect: (status) => onStatusFilterChange?.(status)
6219
+ }
6220
+ ));
6221
+ };
5939
6222
  export {
5940
6223
  AppBento2,
5941
6224
  CardInfoDialog,
@@ -5948,6 +6231,7 @@ export {
5948
6231
  GifFeatureCard,
5949
6232
  Header,
5950
6233
  HeroSection,
6234
+ HomeHuddleCalendar,
5951
6235
  ManagedBoardBlock,
5952
6236
  ManagedContactBlock,
5953
6237
  ManagedDocument,