@retinalabsllc/zairusjs 16.1.95 → 16.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -64,6 +64,7 @@ __export(index_exports, {
64
64
  UniversalBuyCryptoPage: () => UniversalBuyCryptoPage,
65
65
  UniversalCardActionPage: () => UniversalCardActionPage,
66
66
  UniversalCardPage: () => UniversalCardPage,
67
+ UniversalCreateHuddle: () => UniversalCreateHuddle,
67
68
  UniversalErrorView: () => UniversalErrorView,
68
69
  UniversalHome2: () => UniversalHome2,
69
70
  UniversalHomeView: () => UniversalHomeView,
@@ -4521,7 +4522,7 @@ var import_core_free_icons27 = require("@hugeicons/core-free-icons");
4521
4522
  var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4522
4523
  const [loaded, setLoaded] = (0, import_react77.useState)(false);
4523
4524
  const [error, setError] = (0, import_react77.useState)(false);
4524
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default.avif";
4525
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
4525
4526
  const finalSrc = error || !src ? defaultAvatar : src;
4526
4527
  const getStatusColor = () => {
4527
4528
  switch (status?.toUpperCase()) {
@@ -4864,7 +4865,7 @@ var import_core_free_icons29 = require("@hugeicons/core-free-icons");
4864
4865
  var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
4865
4866
  const [loaded, setLoaded] = (0, import_react81.useState)(false);
4866
4867
  const [error, setError] = (0, import_react81.useState)(false);
4867
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office.avif";
4868
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
4868
4869
  const finalSrc = error || !src ? defaultAvatar : src;
4869
4870
  return /* @__PURE__ */ import_react81.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react81.default.createElement(
4870
4871
  "img",
@@ -5075,13 +5076,59 @@ var UniversalHome2 = ({
5075
5076
  };
5076
5077
 
5077
5078
  // src/components/UniversalSettings.tsx
5078
- var import_react83 = __toESM(require("react"));
5079
+ var import_react85 = __toESM(require("react"));
5079
5080
  var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
5081
+ var import_react86 = require("@hugeicons/react");
5082
+ var import_core_free_icons31 = require("@hugeicons/core-free-icons");
5083
+
5084
+ // src/components/ReusableOptions.tsx
5085
+ var import_react83 = __toESM(require("react"));
5080
5086
  var import_react84 = require("@hugeicons/react");
5081
5087
  var import_core_free_icons30 = require("@hugeicons/core-free-icons");
5088
+ var ReusableOptions = ({
5089
+ isOpen,
5090
+ onClose,
5091
+ title,
5092
+ options,
5093
+ selectedOption,
5094
+ onSelect,
5095
+ showSearch = false
5096
+ }) => {
5097
+ const [searchQuery, setSearchQuery] = (0, import_react83.useState)("");
5098
+ if (!isOpen) return null;
5099
+ const filteredOptions = options.filter(
5100
+ (opt) => opt.toLowerCase().includes(searchQuery.toLowerCase())
5101
+ );
5102
+ return /* @__PURE__ */ import_react83.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react83.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react83.default.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.CancelCircleIcon, size: 18 }))), showSearch && /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react83.default.createElement(
5103
+ "input",
5104
+ {
5105
+ type: "text",
5106
+ placeholder: "Search...",
5107
+ value: searchQuery,
5108
+ onChange: (e) => setSearchQuery(e.target.value),
5109
+ className: "w-full pl-10 pr-4 py-2.5 bg-neutral-100 rounded-full text-[13px] text-black placeholder-neutral-400 outline-none focus:bg-neutral-200 transition-colors"
5110
+ }
5111
+ ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, filteredOptions.length === 0 ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-6 text-center text-[12px] text-neutral-400" }, "No options found.") : filteredOptions.map((opt) => {
5112
+ const isSelected = selectedOption === opt;
5113
+ return /* @__PURE__ */ import_react83.default.createElement(
5114
+ "button",
5115
+ {
5116
+ key: opt,
5117
+ onClick: () => {
5118
+ onSelect(opt);
5119
+ onClose();
5120
+ },
5121
+ className: `w-full text-left p-4 text-[13px] tracking-tight rounded-full transition-colors outline-none ${isSelected ? "text-[#068afe] bg-[#068afe]/10" : "text-neutral-600 hover:bg-neutral-50/50"}`
5122
+ },
5123
+ opt
5124
+ );
5125
+ }))));
5126
+ };
5127
+
5128
+ // src/components/UniversalSettings.tsx
5082
5129
  var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5083
- const [loaded, setLoaded] = (0, import_react83.useState)(false);
5084
- const [error, setError] = (0, import_react83.useState)(false);
5130
+ const [loaded, setLoaded] = (0, import_react85.useState)(false);
5131
+ const [error, setError] = (0, import_react85.useState)(false);
5085
5132
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
5086
5133
  const finalSrc = error || !src ? defaultAvatar : src;
5087
5134
  const getStatusColor = () => {
@@ -5098,7 +5145,7 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5098
5145
  return "bg-neutral-200";
5099
5146
  }
5100
5147
  };
5101
- return /* @__PURE__ */ import_react83.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react83.default.createElement(
5148
+ return /* @__PURE__ */ import_react85.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react85.default.createElement(
5102
5149
  "img",
5103
5150
  {
5104
5151
  src: finalSrc,
@@ -5107,10 +5154,10 @@ var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5107
5154
  onLoad: () => setLoaded(true),
5108
5155
  onError: () => setError(true)
5109
5156
  }
5110
- )), /* @__PURE__ */ import_react83.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
5157
+ )), /* @__PURE__ */ import_react85.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
5111
5158
  };
5112
- var PageSpinner8 = () => /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
5113
- var InputSpinner3 = () => /* @__PURE__ */ import_react83.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react83.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react83.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
5159
+ var PageSpinner8 = () => /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
5160
+ var InputSpinner3 = () => /* @__PURE__ */ import_react85.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react85.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react85.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
5114
5161
  var UniversalSettings = ({
5115
5162
  accountType,
5116
5163
  userRole,
@@ -5144,41 +5191,31 @@ var UniversalSettings = ({
5144
5191
  const onBackHandler = onBack ?? (() => {
5145
5192
  if (typeof window !== "undefined") window.history.back();
5146
5193
  });
5147
- const [activeTab, setActiveTab] = (0, import_react83.useState)(accountType === "ORGANIZATION" ? "MEMBERS" : "ACCOUNT");
5148
- (0, import_react83.useEffect)(() => {
5194
+ const [activeTab, setActiveTab] = (0, import_react85.useState)(accountType === "ORGANIZATION" ? "MEMBERS" : "ACCOUNT");
5195
+ (0, import_react85.useEffect)(() => {
5149
5196
  if (accountType === "INDIVIDUAL" && activeTab === "MEMBERS") {
5150
5197
  setActiveTab("ACCOUNT");
5151
5198
  }
5152
5199
  }, [accountType, activeTab]);
5153
- const [expandedId, setExpandedId] = (0, import_react83.useState)(null);
5154
- const [memberToRemove, setMemberToRemove] = (0, import_react83.useState)(null);
5155
- const [isRemoving, setIsRemoving] = (0, import_react83.useState)(false);
5156
- const [isInviteMode, setIsInviteMode] = (0, import_react83.useState)(false);
5157
- const [inviteEmail, setInviteEmail] = (0, import_react83.useState)("");
5158
- const [isInviting, setIsInviting] = (0, import_react83.useState)(false);
5159
- const [localSearchQuery, setLocalSearchQuery] = (0, import_react83.useState)(membersSearchQuery);
5160
- const [isTyping, setIsTyping] = (0, import_react83.useState)(false);
5161
- const isFirstSearchMount = (0, import_react83.useRef)(true);
5162
- const [isStatusModalOpen, setIsStatusModalOpen] = (0, import_react83.useState)(false);
5163
- const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react83.useState)(false);
5164
- const statusDropdownRef = (0, import_react83.useRef)(null);
5165
- const roleDropdownRef = (0, import_react83.useRef)(null);
5166
- const [displayName, setDisplayName] = (0, import_react83.useState)(initialDisplayName);
5167
- const [slug, setSlug] = (0, import_react83.useState)(initialSlug);
5168
- const [isCheckingSlug, setIsCheckingSlug] = (0, import_react83.useState)(false);
5169
- const [slugAvailable, setSlugAvailable] = (0, import_react83.useState)(null);
5170
- const [isSavingAccount, setIsSavingAccount] = (0, import_react83.useState)(false);
5200
+ const [expandedId, setExpandedId] = (0, import_react85.useState)(null);
5201
+ const [memberToRemove, setMemberToRemove] = (0, import_react85.useState)(null);
5202
+ const [isRemoving, setIsRemoving] = (0, import_react85.useState)(false);
5203
+ const [isInviteMode, setIsInviteMode] = (0, import_react85.useState)(false);
5204
+ const [inviteEmail, setInviteEmail] = (0, import_react85.useState)("");
5205
+ const [isInviting, setIsInviting] = (0, import_react85.useState)(false);
5206
+ const [localSearchQuery, setLocalSearchQuery] = (0, import_react85.useState)(membersSearchQuery);
5207
+ const [isTyping, setIsTyping] = (0, import_react85.useState)(false);
5208
+ const isFirstSearchMount = (0, import_react85.useRef)(true);
5209
+ const [isStatusModalOpen, setIsStatusModalOpen] = (0, import_react85.useState)(false);
5210
+ const [isRoleModalOpen, setIsRoleModalOpen] = (0, import_react85.useState)(false);
5211
+ const [displayName, setDisplayName] = (0, import_react85.useState)(initialDisplayName);
5212
+ const [slug, setSlug] = (0, import_react85.useState)(initialSlug);
5213
+ const [isCheckingSlug, setIsCheckingSlug] = (0, import_react85.useState)(false);
5214
+ const [slugAvailable, setSlugAvailable] = (0, import_react85.useState)(null);
5215
+ const [isSavingAccount, setIsSavingAccount] = (0, import_react85.useState)(false);
5171
5216
  const isAccountReadOnly = accountType === "ORGANIZATION" && userRole !== "ADMIN" && userRole !== "MANAGER";
5172
5217
  const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
5173
- (0, import_react83.useEffect)(() => {
5174
- function handleClickOutside(event) {
5175
- if (statusDropdownRef.current && !statusDropdownRef.current.contains(event.target)) setIsStatusModalOpen(false);
5176
- if (roleDropdownRef.current && !roleDropdownRef.current.contains(event.target)) setIsRoleModalOpen(false);
5177
- }
5178
- document.addEventListener("mousedown", handleClickOutside);
5179
- return () => document.removeEventListener("mousedown", handleClickOutside);
5180
- }, []);
5181
- (0, import_react83.useEffect)(() => {
5218
+ (0, import_react85.useEffect)(() => {
5182
5219
  if (activeTab !== "MEMBERS") return;
5183
5220
  if (isFirstSearchMount.current) {
5184
5221
  isFirstSearchMount.current = false;
@@ -5220,13 +5257,13 @@ var UniversalSettings = ({
5220
5257
  }
5221
5258
  };
5222
5259
  const activeExpandedMember = expandedId ? members.find((m) => m.id === expandedId) : null;
5223
- (0, import_react83.useEffect)(() => {
5260
+ (0, import_react85.useEffect)(() => {
5224
5261
  setDisplayName(initialDisplayName || "");
5225
5262
  setSlug(initialSlug || "");
5226
5263
  }, [initialDisplayName, initialSlug]);
5227
5264
  const handleDisplayNameChange = (val) => setDisplayName(val.replace(/[^a-zA-Z0-9\s-]/g, "").substring(0, 50));
5228
5265
  const handleSlugChange = (val) => setSlug(val.toLowerCase().replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").substring(0, 50));
5229
- (0, import_react83.useEffect)(() => {
5266
+ (0, import_react85.useEffect)(() => {
5230
5267
  if (!slug || slug === initialSlug) {
5231
5268
  setSlugAvailable(null);
5232
5269
  setIsCheckingSlug(false);
@@ -5280,7 +5317,7 @@ var UniversalSettings = ({
5280
5317
  };
5281
5318
  const hasAccountChanges = displayName !== initialDisplayName || slug !== initialSlug;
5282
5319
  const isAccountSaveDisabled = isSavingAccount || isAccountReadOnly || isCheckingSlug || !hasAccountChanges || displayName.length < 3 || slug.length < 3 || slug !== initialSlug && slugAvailable === false;
5283
- return /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react83.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react83.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-6 border-b border-neutral-200 mb-6 overflow-x-auto custom-scrollbar px-1" }, accountType === "ORGANIZATION" && /* @__PURE__ */ import_react83.default.createElement(
5320
+ return /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react85.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react85.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "System Settings"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identity, team configurations, and AI billing parameters.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-6 mb-6 overflow-x-auto custom-scrollbar px-1" }, accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement(
5284
5321
  "button",
5285
5322
  {
5286
5323
  onClick: () => {
@@ -5291,21 +5328,21 @@ var UniversalSettings = ({
5291
5328
  className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "MEMBERS" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
5292
5329
  },
5293
5330
  "Members"
5294
- ), /* @__PURE__ */ import_react83.default.createElement(
5331
+ ), /* @__PURE__ */ import_react85.default.createElement(
5295
5332
  "button",
5296
5333
  {
5297
5334
  onClick: () => setActiveTab("ACCOUNT"),
5298
5335
  className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "ACCOUNT" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
5299
5336
  },
5300
5337
  "Account Profile"
5301
- ), /* @__PURE__ */ import_react83.default.createElement(
5338
+ ), /* @__PURE__ */ import_react85.default.createElement(
5302
5339
  "button",
5303
5340
  {
5304
5341
  onClick: () => setActiveTab("BILLING"),
5305
5342
  className: `pb-3 text-[13px] tracking-wide outline-none transition-colors border-b-2 whitespace-nowrap ${activeTab === "BILLING" ? "border-black text-black" : "border-transparent text-neutral-500 hover:text-black"}`
5306
5343
  },
5307
5344
  "Billing"
5308
- )), activeTab === "MEMBERS" && accountType === "ORGANIZATION" && /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement(
5345
+ )), activeTab === "MEMBERS" && accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement(
5309
5346
  ConfirmationDialog,
5310
5347
  {
5311
5348
  isOpen: !!memberToRemove,
@@ -5318,7 +5355,7 @@ var UniversalSettings = ({
5318
5355
  onClose: () => setMemberToRemove(null),
5319
5356
  onConfirm: handleConfirmRemove
5320
5357
  }
5321
- ), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react83.default.createElement(
5358
+ ), !isInviteMode && !activeExpandedMember && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-row flex-nowrap mb-4 items-center justify-between gap-4 w-full px-1" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react85.default.createElement(
5322
5359
  "input",
5323
5360
  {
5324
5361
  type: "text",
@@ -5327,28 +5364,28 @@ var UniversalSettings = ({
5327
5364
  onChange: (e) => setLocalSearchQuery(e.target.value),
5328
5365
  className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
5329
5366
  }
5330
- )), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react83.default.createElement(
5367
+ )), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react85.default.createElement(
5331
5368
  "button",
5332
5369
  {
5333
5370
  onClick: () => setIsStatusModalOpen(true),
5334
5371
  className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
5335
5372
  },
5336
- /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.SearchList02Icon, size: 16 })
5337
- ), /* @__PURE__ */ import_react83.default.createElement(
5373
+ /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.SearchList02Icon, size: 16 })
5374
+ ), /* @__PURE__ */ import_react85.default.createElement(
5338
5375
  "button",
5339
5376
  {
5340
5377
  onClick: () => setIsRoleModalOpen(true),
5341
5378
  className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
5342
5379
  },
5343
- /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ListSettingIcon, size: 16 })
5344
- ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ import_react83.default.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement(
5380
+ /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ListSettingIcon, size: 16 })
5381
+ ))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ import_react85.default.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
5345
5382
  "button",
5346
5383
  {
5347
5384
  onClick: () => setMemberToRemove(activeExpandedMember),
5348
5385
  className: "w-full sm:flex-1 py-2.5 bg-white border border-rose-200 text-rose-600 hover:bg-rose-50 rounded-full text-[12px] tracking-wide transition-colors outline-none"
5349
5386
  },
5350
5387
  "Remove Access"
5351
- ), /* @__PURE__ */ import_react83.default.createElement(
5388
+ ), /* @__PURE__ */ import_react85.default.createElement(
5352
5389
  "button",
5353
5390
  {
5354
5391
  onClick: () => setExpandedId(null),
@@ -5357,14 +5394,14 @@ var UniversalSettings = ({
5357
5394
  "Close Profile"
5358
5395
  ))) : (
5359
5396
  // Standard List & Invite Header
5360
- /* @__PURE__ */ import_react83.default.createElement(import_react83.default.Fragment, null, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && !isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement(
5397
+ /* @__PURE__ */ import_react85.default.createElement(import_react85.default.Fragment, null, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, isInviteMode ? "Add Member" : "Team Directory"), !isInviteMode && !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
5361
5398
  "button",
5362
5399
  {
5363
5400
  onClick: () => setIsInviteMode(true),
5364
5401
  className: "shrink-0 px-4 py-1.5 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
5365
5402
  },
5366
5403
  "Invite Team"
5367
- )), !isInviteMode && /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react83.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react83.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react83.default.createElement(
5404
+ )), !isInviteMode && /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "Manage members and access controls across your organization.")), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full overflow-hidden" }, isInviteMode ? /* @__PURE__ */ import_react85.default.createElement("form", { onSubmit: handleInviteSubmit, className: "flex flex-col gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "space-y-1.5 mt-2" }, /* @__PURE__ */ import_react85.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Email Address"), /* @__PURE__ */ import_react85.default.createElement(
5368
5405
  "input",
5369
5406
  {
5370
5407
  type: "email",
@@ -5375,7 +5412,7 @@ var UniversalSettings = ({
5375
5412
  className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-200 text-black outline-none focus:border-black transition-all duration-300",
5376
5413
  placeholder: "name@company.com"
5377
5414
  }
5378
- )), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react83.default.createElement(
5415
+ )), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react85.default.createElement(
5379
5416
  ThreeDActionButton,
5380
5417
  {
5381
5418
  type: "submit",
@@ -5384,7 +5421,7 @@ var UniversalSettings = ({
5384
5421
  className: "w-full"
5385
5422
  },
5386
5423
  "Send Invitation"
5387
- ), /* @__PURE__ */ import_react83.default.createElement(
5424
+ ), /* @__PURE__ */ import_react85.default.createElement(
5388
5425
  "button",
5389
5426
  {
5390
5427
  type: "button",
@@ -5396,54 +5433,52 @@ var UniversalSettings = ({
5396
5433
  className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-xs tracking-wide"
5397
5434
  },
5398
5435
  "Cancel"
5399
- ))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react83.default.createElement(PageSpinner8, null) : /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react83.default.createElement(
5436
+ ))) : isMembersLoading || isTyping ? /* @__PURE__ */ import_react85.default.createElement(PageSpinner8, null) : /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col min-w-0 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", null, members.length === 0 ? /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No members found") : members.map((member) => /* @__PURE__ */ import_react85.default.createElement(
5400
5437
  "div",
5401
5438
  {
5402
5439
  key: member.id,
5403
5440
  onClick: () => setExpandedId(member.id),
5404
5441
  className: "flex items-center justify-between py-3 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
5405
5442
  },
5406
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react83.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react83.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[13px] text-black truncate" }, member.fullName), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[11px] text-neutral-500 capitalize truncate" }, member.role.toLowerCase())))
5407
- ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react83.default.createElement(
5443
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react85.default.createElement(MemberAvatar2, { src: member.avatarUrl, status: member.status }), /* @__PURE__ */ import_react85.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[13px] text-black truncate" }, member.fullName), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-neutral-500 capitalize truncate" }, member.role.toLowerCase())))
5444
+ ))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react85.default.createElement(
5408
5445
  "button",
5409
5446
  {
5410
5447
  onClick: () => onMembersPageChange(membersCurrentPage - 1),
5411
5448
  disabled: membersCurrentPage <= 1 || isMembersLoading,
5412
5449
  className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
5413
5450
  },
5414
- /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ArrowLeft01Icon, size: 14 })
5415
- ), /* @__PURE__ */ import_react83.default.createElement(
5451
+ /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowLeft01Icon, size: 14 })
5452
+ ), /* @__PURE__ */ import_react85.default.createElement(
5416
5453
  "button",
5417
5454
  {
5418
5455
  onClick: () => onMembersPageChange(membersCurrentPage + 1),
5419
5456
  disabled: membersCurrentPage >= membersTotalPages || isMembersLoading || membersTotalPages === 0,
5420
5457
  className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
5421
5458
  },
5422
- /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ArrowRight01Icon, size: 14 })
5459
+ /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.ArrowRight01Icon, size: 14 })
5423
5460
  ))))))
5424
- )), isStatusModalOpen && /* @__PURE__ */ import_react83.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsStatusModalOpen(false) }), /* @__PURE__ */ import_react83.default.createElement("div", { ref: statusDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react83.default.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Status Filter")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"].map((option) => /* @__PURE__ */ import_react83.default.createElement(
5425
- "button",
5426
- {
5427
- key: option,
5428
- onClick: () => {
5429
- onStatusFilterChange(option);
5430
- setIsStatusModalOpen(false);
5431
- },
5432
- className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeStatusFilter === option ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
5433
- },
5434
- /* @__PURE__ */ import_react83.default.createElement("span", { className: "truncate pr-2 capitalize" }, option.toLowerCase())
5435
- ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react83.default.createElement("button", { onClick: () => setIsStatusModalOpen(false), className: "w-full py-4 text-[13px] text-[#068afe] hover:text-[#068afe] transition-colors outline-none" }, "Cancel")))), isRoleModalOpen && /* @__PURE__ */ import_react83.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => setIsRoleModalOpen(false) }), /* @__PURE__ */ import_react83.default.createElement("div", { ref: roleDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react83.default.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Role Filter")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "ADMIN", "MANAGER", "MEMBER", "GUEST"].map((option) => /* @__PURE__ */ import_react83.default.createElement(
5436
- "button",
5437
- {
5438
- key: option,
5439
- onClick: () => {
5440
- onRoleFilterChange(option);
5441
- setIsRoleModalOpen(false);
5442
- },
5443
- className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeRoleFilter === option ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
5444
- },
5445
- /* @__PURE__ */ import_react83.default.createElement("span", { className: "truncate pr-2 capitalize" }, option.toLowerCase())
5446
- ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full flex mt-2" }, /* @__PURE__ */ import_react83.default.createElement("button", { onClick: () => setIsRoleModalOpen(false), className: "w-full py-4 text-[13px] text-[#068afe] hover:text-[#068afe] transition-colors outline-none" }, "Cancel"))))), activeTab === "ACCOUNT" && /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react83.default.createElement("div", null, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react83.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSaveAccount, autoComplete: "off" }, /* @__PURE__ */ import_react83.default.createElement(
5461
+ )), /* @__PURE__ */ import_react85.default.createElement(
5462
+ ReusableOptions,
5463
+ {
5464
+ isOpen: isStatusModalOpen,
5465
+ onClose: () => setIsStatusModalOpen(false),
5466
+ title: "Status Filter",
5467
+ options: ["ALL", "ACTIVE", "BUSY", "OFFLINE", "AWAY"],
5468
+ selectedOption: activeStatusFilter,
5469
+ onSelect: (status) => onStatusFilterChange(status)
5470
+ }
5471
+ ), /* @__PURE__ */ import_react85.default.createElement(
5472
+ ReusableOptions,
5473
+ {
5474
+ isOpen: isRoleModalOpen,
5475
+ onClose: () => setIsRoleModalOpen(false),
5476
+ title: "Role Filter",
5477
+ options: ["ALL", "ADMIN", "MANAGER", "MEMBER", "GUEST"],
5478
+ selectedOption: activeRoleFilter,
5479
+ onSelect: (role) => onRoleFilterChange(role)
5480
+ }
5481
+ )), activeTab === "ACCOUNT" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react85.default.createElement("div", null, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your workspace identifiers and structural configuration details.")), isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.CircleLock02Icon, size: 18, className: "text-current" }))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react85.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSaveAccount, autoComplete: "off" }, /* @__PURE__ */ import_react85.default.createElement(
5447
5482
  TextInput,
5448
5483
  {
5449
5484
  label: "Display Name",
@@ -5453,7 +5488,7 @@ var UniversalSettings = ({
5453
5488
  placeholder: "Sovereign User",
5454
5489
  maxLength: 50
5455
5490
  }
5456
- ), accountType === "ORGANIZATION" && /* @__PURE__ */ import_react83.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react83.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center relative w-full border-b border-neutral-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react83.default.createElement(
5491
+ ), accountType === "ORGANIZATION" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react85.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Workspace Handle"), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center relative w-full border-b border-neutral-200 focus-within:border-black transition-all duration-300 overflow-hidden" }, /* @__PURE__ */ import_react85.default.createElement(
5457
5492
  "input",
5458
5493
  {
5459
5494
  type: "text",
@@ -5465,7 +5500,7 @@ var UniversalSettings = ({
5465
5500
  className: "w-full pr-10 pl-0 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed",
5466
5501
  placeholder: "workspace-handle"
5467
5502
  }
5468
- ), /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react83.default.createElement(InputSpinner3, null), !isCheckingSlug && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react83.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react83.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react83.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react83.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react83.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react83.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react83.default.createElement(
5503
+ ), /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react85.default.createElement(InputSpinner3, null), !isCheckingSlug && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react85.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react85.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react85.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isAccountReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react85.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react85.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react85.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react85.default.createElement(
5469
5504
  ThreeDActionButton,
5470
5505
  {
5471
5506
  type: "submit",
@@ -5474,7 +5509,7 @@ var UniversalSettings = ({
5474
5509
  className: "min-w-32"
5475
5510
  },
5476
5511
  "Save Changes"
5477
- ), hasAccountChanges && !isSavingAccount && !isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement(
5512
+ ), hasAccountChanges && !isSavingAccount && !isAccountReadOnly && /* @__PURE__ */ import_react85.default.createElement(
5478
5513
  "button",
5479
5514
  {
5480
5515
  type: "button",
@@ -5485,14 +5520,388 @@ var UniversalSettings = ({
5485
5520
  className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
5486
5521
  },
5487
5522
  "Cancel"
5488
- ))))), activeTab === "BILLING" && /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-col w-full mt-2" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "relative z-10 flex flex-col items-start w-full" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Coins01Icon, size: 24, className: "text-black" }), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-2xl text-black tracking-tight" }, aiCredits)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mt-2 w-full " }, /* @__PURE__ */ import_react83.default.createElement(
5523
+ ))))), activeTab === "BILLING" && /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-row items-center justify-between w-full mt-2" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "relative z-10 flex flex-col items-start" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ import_react85.default.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Coins01Icon, size: 24, className: "text-black" }), /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-2xl text-black tracking-tight" }, aiCredits))), /* @__PURE__ */ import_react85.default.createElement(
5489
5524
  "button",
5490
5525
  {
5491
5526
  onClick: onTopUp,
5492
- className: "px-6 py-2 rounded-full border border-neutral-200 bg-transparent text-neutral-200 text-[11px] tracking-wide transition-colors outline-none hover:bg-black/10 hover:text-black hover:border-black"
5527
+ className: "w-10 h-10 rounded-full border border-neutral-200 flex items-center justify-center text-black hover:bg-neutral-50 transition-colors outline-none shrink-0",
5528
+ "aria-label": "Top Up Credits"
5529
+ },
5530
+ /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.PlusSignIcon, size: 16 })
5531
+ )), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
5532
+ };
5533
+
5534
+ // src/components/UniversalCreateHuddle.tsx
5535
+ var import_react89 = __toESM(require("react"));
5536
+ var import_react_hot_toast16 = __toESM(require("react-hot-toast"));
5537
+ var import_react90 = require("@hugeicons/react");
5538
+ var import_core_free_icons33 = require("@hugeicons/core-free-icons");
5539
+
5540
+ // src/components/CalendarPicker.tsx
5541
+ var import_react87 = __toESM(require("react"));
5542
+ var import_react88 = require("@hugeicons/react");
5543
+ var import_core_free_icons32 = require("@hugeicons/core-free-icons");
5544
+ var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
5545
+ var DAYS_OF_WEEK = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
5546
+ var CalendarPicker = ({
5547
+ isOpen,
5548
+ onClose,
5549
+ initialDate,
5550
+ defaultMode,
5551
+ onConfirm
5552
+ }) => {
5553
+ const [mode, setMode] = (0, import_react87.useState)(defaultMode);
5554
+ const today = /* @__PURE__ */ new Date();
5555
+ today.setHours(0, 0, 0, 0);
5556
+ const maxDate = new Date(today.getFullYear() + 1, 11, 31);
5557
+ maxDate.setHours(23, 59, 59, 999);
5558
+ const [viewMonth, setViewMonth] = (0, import_react87.useState)(initialDate.getMonth());
5559
+ const [viewYear, setViewYear] = (0, import_react87.useState)(initialDate.getFullYear());
5560
+ const [selectedDate, setSelectedDate] = (0, import_react87.useState)(new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate()));
5561
+ const [hour, setHour] = (0, import_react87.useState)(initialDate.getHours() % 12 || 12);
5562
+ const [minute, setMinute] = (0, import_react87.useState)(initialDate.getMinutes());
5563
+ const [ampm, setAmpm] = (0, import_react87.useState)(initialDate.getHours() >= 12 ? "PM" : "AM");
5564
+ (0, import_react87.useEffect)(() => {
5565
+ if (isOpen) {
5566
+ setMode(defaultMode);
5567
+ setViewMonth(initialDate.getMonth());
5568
+ setViewYear(initialDate.getFullYear());
5569
+ setSelectedDate(new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate()));
5570
+ setHour(initialDate.getHours() % 12 || 12);
5571
+ setMinute(initialDate.getMinutes());
5572
+ setAmpm(initialDate.getHours() >= 12 ? "PM" : "AM");
5573
+ }
5574
+ }, [isOpen, initialDate, defaultMode]);
5575
+ if (!isOpen) return null;
5576
+ const handlePrevMonth = () => {
5577
+ if (viewYear === today.getFullYear() && viewMonth === today.getMonth()) return;
5578
+ if (viewMonth === 0) {
5579
+ setViewMonth(11);
5580
+ setViewYear((y) => y - 1);
5581
+ } else {
5582
+ setViewMonth((m) => m - 1);
5583
+ }
5584
+ };
5585
+ const handleNextMonth = () => {
5586
+ if (viewYear === maxDate.getFullYear() && viewMonth === 11) return;
5587
+ if (viewMonth === 11) {
5588
+ setViewMonth(0);
5589
+ setViewYear((y) => y + 1);
5590
+ } else {
5591
+ setViewMonth((m) => m + 1);
5592
+ }
5593
+ };
5594
+ const isDateDisabled = (year, month, day) => {
5595
+ const d = new Date(year, month, day);
5596
+ return d < today || d > maxDate;
5597
+ };
5598
+ const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();
5599
+ const firstDayOffset = new Date(viewYear, viewMonth, 1).getDay();
5600
+ const adjustTime = (type, dir) => {
5601
+ if (type === "H") {
5602
+ setHour((h) => {
5603
+ let next = h + dir;
5604
+ if (next > 12) return 1;
5605
+ if (next < 1) return 12;
5606
+ return next;
5607
+ });
5608
+ }
5609
+ if (type === "M") {
5610
+ setMinute((m) => {
5611
+ let next = m + dir;
5612
+ if (next > 59) return 0;
5613
+ if (next < 0) return 59;
5614
+ return next;
5615
+ });
5616
+ }
5617
+ if (type === "A") {
5618
+ setAmpm((a) => a === "AM" ? "PM" : "AM");
5619
+ }
5620
+ };
5621
+ const handleSave = () => {
5622
+ const final = new Date(selectedDate);
5623
+ let h24 = hour;
5624
+ if (ampm === "PM" && hour < 12) h24 += 12;
5625
+ if (ampm === "AM" && hour === 12) h24 = 0;
5626
+ final.setHours(h24, minute, 0, 0);
5627
+ onConfirm(final);
5628
+ onClose();
5629
+ };
5630
+ return /* @__PURE__ */ import_react87.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: onClose }), /* @__PURE__ */ import_react87.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "p-4 pb-0 flex flex-col gap-4" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-between shrink-0" }, /* @__PURE__ */ import_react87.default.createElement("h3", { className: "text-[15px] text-black tracking-tight " }, "Select Date & Time"), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: onClose, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex gap-4" }, /* @__PURE__ */ import_react87.default.createElement(
5631
+ "button",
5632
+ {
5633
+ onClick: () => setMode("DATE"),
5634
+ className: `pb-2 text-[12px] tracking-wide outline-none border-b-2 transition-colors ${mode === "DATE" ? "border-[#068afe] text-[#068afe]" : "border-transparent text-neutral-500 hover:text-black"}`
5635
+ },
5636
+ "Date"
5637
+ ), /* @__PURE__ */ import_react87.default.createElement(
5638
+ "button",
5639
+ {
5640
+ onClick: () => setMode("TIME"),
5641
+ className: `pb-2 text-[12px] tracking-wide outline-none border-b-2 transition-colors ${mode === "TIME" ? "border-[#068afe] text-[#068afe]" : "border-transparent text-neutral-500 hover:text-black"}`
5642
+ },
5643
+ "Time"
5644
+ ))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "p-5" }, mode === "DATE" && /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col gap-4 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-between px-2" }, /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-[13px] text-black" }, MONTHS[viewMonth], " ", viewYear), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react87.default.createElement(
5645
+ "button",
5646
+ {
5647
+ onClick: handlePrevMonth,
5648
+ disabled: viewYear === today.getFullYear() && viewMonth === today.getMonth(),
5649
+ className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
5650
+ },
5651
+ /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowLeft01Icon, size: 16, className: "text-black" })
5652
+ ), /* @__PURE__ */ import_react87.default.createElement(
5653
+ "button",
5654
+ {
5655
+ onClick: handleNextMonth,
5656
+ disabled: viewYear === maxDate.getFullYear() && viewMonth === 11,
5657
+ className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 disabled:opacity-30 disabled:cursor-not-allowed outline-none transition-colors"
5658
+ },
5659
+ /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowRight01Icon, size: 16, className: "text-black" })
5660
+ ))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "grid grid-cols-7 gap-1" }, DAYS_OF_WEEK.map((d) => /* @__PURE__ */ import_react87.default.createElement("div", { key: d, className: "text-center text-[10px] text-neutral-400 py-2" }, d)), Array.from({ length: firstDayOffset }).map((_, i) => /* @__PURE__ */ import_react87.default.createElement("div", { key: `empty-${i}` })), Array.from({ length: daysInMonth }).map((_, i) => {
5661
+ const day = i + 1;
5662
+ const isDisabled = isDateDisabled(viewYear, viewMonth, day);
5663
+ const isSelected = selectedDate.getFullYear() === viewYear && selectedDate.getMonth() === viewMonth && selectedDate.getDate() === day;
5664
+ return /* @__PURE__ */ import_react87.default.createElement(
5665
+ "button",
5666
+ {
5667
+ key: day,
5668
+ disabled: isDisabled,
5669
+ onClick: () => setSelectedDate(new Date(viewYear, viewMonth, day)),
5670
+ className: `h-9 w-9 rounded-full flex items-center justify-center text-[12px] transition-colors outline-none
5671
+ ${isDisabled ? "text-neutral-300 cursor-not-allowed" : isSelected ? "bg-[#068afe] text-white" : "text-black hover:bg-neutral-100"}`
5672
+ },
5673
+ day
5674
+ );
5675
+ }))), mode === "TIME" && /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-center gap-6 py-6 animate-in fade-in duration-200" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("H", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-3xl text-black w-12 text-center" }, hour.toString().padStart(2, "0")), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("H", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowDown01Icon, size: 20, className: "text-neutral-500" }))), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-3xl text-neutral-300 pb-2" }, ":"), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col items-center gap-4" }, /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("M", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-3xl text-black w-12 text-center" }, minute.toString().padStart(2, "0")), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("M", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowDown01Icon, size: 20, className: "text-neutral-500" }))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col items-center gap-4 ml-2" }, /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("A", 1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowUp01Icon, size: 20, className: "text-neutral-500" })), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-xl text-[#068afe] w-12 text-center" }, ampm), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => adjustTime("A", -1), className: "p-2 rounded-full hover:bg-neutral-100 outline-none" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowDown01Icon, size: 20, className: "text-neutral-500" }))))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "p-5 flex justify-end shrink-0" }, /* @__PURE__ */ import_react87.default.createElement(
5676
+ "button",
5677
+ {
5678
+ onClick: handleSave,
5679
+ className: "text-[#068afe] hover:text-[#0573d6] transition-colors outline-none text-[13px] tracking-wide"
5493
5680
  },
5494
- "Top Up Credits"
5495
- )))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
5681
+ "Done"
5682
+ ))));
5683
+ };
5684
+
5685
+ // src/components/UniversalCreateHuddle.tsx
5686
+ var MemberAvatar3 = ({ src, sizeClass = "w-10 h-10" }) => {
5687
+ const [loaded, setLoaded] = (0, import_react89.useState)(false);
5688
+ const [error, setError] = (0, import_react89.useState)(false);
5689
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
5690
+ return /* @__PURE__ */ import_react89.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react89.default.createElement(
5691
+ "img",
5692
+ {
5693
+ src: error || !src ? defaultAvatar : src,
5694
+ alt: "Avatar",
5695
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
5696
+ onLoad: () => setLoaded(true),
5697
+ onError: () => setError(true)
5698
+ }
5699
+ )));
5700
+ };
5701
+ var STANDARD_TIMEZONES = [
5702
+ "UTC",
5703
+ "America/New_York",
5704
+ "America/Chicago",
5705
+ "America/Denver",
5706
+ "America/Los_Angeles",
5707
+ "Europe/London",
5708
+ "Europe/Paris",
5709
+ "Europe/Berlin",
5710
+ "Africa/Lagos",
5711
+ "Africa/Johannesburg",
5712
+ "Asia/Dubai",
5713
+ "Asia/Kolkata",
5714
+ "Asia/Singapore",
5715
+ "Asia/Tokyo",
5716
+ "Australia/Sydney"
5717
+ ];
5718
+ var UniversalCreateHuddle = ({
5719
+ onBackHref,
5720
+ members,
5721
+ isMembersLoading,
5722
+ membersCurrentPage,
5723
+ membersTotalPages,
5724
+ onMembersPageChange,
5725
+ membersSearchQuery,
5726
+ onMembersSearchChange,
5727
+ onCreateSubmit
5728
+ }) => {
5729
+ const [huddleDate, setHuddleDate] = (0, import_react89.useState)(() => {
5730
+ const d = /* @__PURE__ */ new Date();
5731
+ d.setHours(d.getHours() + 1, 0, 0, 0);
5732
+ return d;
5733
+ });
5734
+ const [title, setTitle] = (0, import_react89.useState)("");
5735
+ const [isPrivate, setIsPrivate] = (0, import_react89.useState)(false);
5736
+ const [timezone, setTimezone] = (0, import_react89.useState)("UTC");
5737
+ (0, import_react89.useEffect)(() => {
5738
+ try {
5739
+ setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
5740
+ } catch (e) {
5741
+ }
5742
+ }, []);
5743
+ const [calendarMode, setCalendarMode] = (0, import_react89.useState)(null);
5744
+ const [showTimezoneModal, setShowTimezoneModal] = (0, import_react89.useState)(false);
5745
+ const [showMembersModal, setShowMembersModal] = (0, import_react89.useState)(false);
5746
+ const [selectedParticipants, setSelectedParticipants] = (0, import_react89.useState)(/* @__PURE__ */ new Set());
5747
+ const [isSubmitting, setIsSubmitting] = (0, import_react89.useState)(false);
5748
+ const [localSearchQuery, setLocalSearchQuery] = (0, import_react89.useState)(membersSearchQuery);
5749
+ const [isTyping, setIsTyping] = (0, import_react89.useState)(false);
5750
+ const typingTimer = (0, import_react89.useRef)(null);
5751
+ const handleSearchInput = (e) => {
5752
+ const val = e.target.value;
5753
+ setLocalSearchQuery(val);
5754
+ setIsTyping(true);
5755
+ if (typingTimer.current) clearTimeout(typingTimer.current);
5756
+ typingTimer.current = setTimeout(() => {
5757
+ onMembersSearchChange(val);
5758
+ setTimeout(() => setIsTyping(false), 150);
5759
+ }, 600);
5760
+ };
5761
+ const toggleParticipant = (userId) => {
5762
+ const newSet = new Set(selectedParticipants);
5763
+ if (newSet.has(userId)) newSet.delete(userId);
5764
+ else newSet.add(userId);
5765
+ setSelectedParticipants(newSet);
5766
+ };
5767
+ const handleSubmit = async (e) => {
5768
+ e.preventDefault();
5769
+ const cleanTitle = title.trim();
5770
+ if (cleanTitle.length < 2) return import_react_hot_toast16.default.error("Please enter a valid huddle name.");
5771
+ if (isPrivate && selectedParticipants.size === 0) return import_react_hot_toast16.default.error("Private huddles require at least one participant.");
5772
+ setIsSubmitting(true);
5773
+ try {
5774
+ await onCreateSubmit({
5775
+ title: cleanTitle,
5776
+ huddleType: isPrivate ? "PRIVATE" : "PUBLIC",
5777
+ startTime: huddleDate.toISOString(),
5778
+ timezone,
5779
+ participantIds: isPrivate ? Array.from(selectedParticipants) : []
5780
+ });
5781
+ } catch (error) {
5782
+ import_react_hot_toast16.default.error(error.message || "Failed to schedule huddle.");
5783
+ setIsSubmitting(false);
5784
+ }
5785
+ };
5786
+ return /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react89.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react89.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react89.default.createElement("a", { href: onBackHref, className: "flex items-center gap-2 text-[#068afe] hover:text-[#068afe] transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col gap-1 mb-8 px-1" }, /* @__PURE__ */ import_react89.default.createElement("h1", { className: "text-black text-xl tracking-tight" }, "Create Huddle"), /* @__PURE__ */ import_react89.default.createElement("p", { className: "text-xs text-neutral-500" }, "Schedule a new workspace huddle and manage participant access.")), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col gap-8 animate-in rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react89.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSubmit, autoComplete: "off" }, /* @__PURE__ */ import_react89.default.createElement(
5787
+ TextInput,
5788
+ {
5789
+ label: "Huddle Subject",
5790
+ value: title,
5791
+ onChange: (val) => setTitle(val.substring(0, 80)),
5792
+ disabled: isSubmitting,
5793
+ placeholder: "e.g. Q4 Engineering Sync",
5794
+ maxLength: 80
5795
+ }
5796
+ ), /* @__PURE__ */ import_react89.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react89.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Date"), /* @__PURE__ */ import_react89.default.createElement(
5797
+ "div",
5798
+ {
5799
+ onClick: () => !isSubmitting && setCalendarMode("DATE"),
5800
+ className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
5801
+ },
5802
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Calendar01Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
5803
+ /* @__PURE__ */ import_react89.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric" }))
5804
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react89.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Time"), /* @__PURE__ */ import_react89.default.createElement(
5805
+ "div",
5806
+ {
5807
+ onClick: () => !isSubmitting && setCalendarMode("TIME"),
5808
+ className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
5809
+ },
5810
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Clock01Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
5811
+ /* @__PURE__ */ import_react89.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, huddleDate.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }))
5812
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "space-y-1.5 w-full" }, /* @__PURE__ */ import_react89.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Timezone"), /* @__PURE__ */ import_react89.default.createElement(
5813
+ "div",
5814
+ {
5815
+ onClick: () => !isSubmitting && setShowTimezoneModal(true),
5816
+ className: `flex items-center relative w-full border-b border-neutral-200 transition-all duration-300 pb-3 pt-3 cursor-pointer ${isSubmitting ? "opacity-50 pointer-events-none" : "hover:border-black"}`
5817
+ },
5818
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Globe02Icon, size: 16, className: "text-neutral-400 absolute left-0" }),
5819
+ /* @__PURE__ */ import_react89.default.createElement("span", { className: "w-full pl-8 text-sm text-black truncate block" }, timezone)
5820
+ ))), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-center justify-between py-2 border-t border-b border-neutral-100 mt-2" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[13px] text-black tracking-tight" }, "Private Huddle"), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[11px] text-neutral-500" }, "Only invited members can join.")), /* @__PURE__ */ import_react89.default.createElement(
5821
+ "button",
5822
+ {
5823
+ type: "button",
5824
+ onClick: () => setIsPrivate(!isPrivate),
5825
+ disabled: isSubmitting,
5826
+ className: `relative w-11 h-6 rounded-full transition-colors outline-none shrink-0 ${isPrivate ? "bg-[#068afe]" : "bg-neutral-200"}`
5827
+ },
5828
+ /* @__PURE__ */ import_react89.default.createElement("div", { className: `absolute top-1 left-1 bg-white w-4 h-4 rounded-full transition-transform ${isPrivate ? "translate-x-5" : "translate-x-0"}` })
5829
+ )), isPrivate && /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-center justify-between animate-in fade-in zoom-in-95 duration-200 bg-neutral-50 p-4 rounded-xl" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[12px] text-black tracking-tight" }, "Participants"), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[11px] text-[#068afe] " }, selectedParticipants.size === 0 ? "0 added" : selectedParticipants.size >= 1e3 ? `${(selectedParticipants.size / 1e3).toFixed(1)}k+ added` : `${selectedParticipants.size} added`)), /* @__PURE__ */ import_react89.default.createElement(
5830
+ "button",
5831
+ {
5832
+ type: "button",
5833
+ onClick: () => setShowMembersModal(true),
5834
+ disabled: isSubmitting,
5835
+ className: "px-4 py-2 border border-neutral-200 text-black text-[11px] tracking-wide rounded-full hover:bg-white transition-colors outline-none bg-transparent"
5836
+ },
5837
+ "Manage Access"
5838
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "pt-6" }, /* @__PURE__ */ import_react89.default.createElement(
5839
+ ThreeDActionButton,
5840
+ {
5841
+ type: "submit",
5842
+ disabled: isSubmitting || title.trim().length < 2 || isPrivate && selectedParticipants.size === 0,
5843
+ isLoading: isSubmitting,
5844
+ className: "w-full sm:w-auto min-w-40"
5845
+ },
5846
+ "Schedule Huddle"
5847
+ )))), /* @__PURE__ */ import_react89.default.createElement(
5848
+ CalendarPicker,
5849
+ {
5850
+ isOpen: calendarMode !== null,
5851
+ onClose: () => setCalendarMode(null),
5852
+ initialDate: huddleDate,
5853
+ defaultMode: calendarMode || "DATE",
5854
+ onConfirm: (d) => setHuddleDate(d)
5855
+ }
5856
+ ), /* @__PURE__ */ import_react89.default.createElement(
5857
+ ReusableOptions,
5858
+ {
5859
+ isOpen: showTimezoneModal,
5860
+ onClose: () => setShowTimezoneModal(false),
5861
+ title: "Select Timezone",
5862
+ options: STANDARD_TIMEZONES,
5863
+ selectedOption: timezone,
5864
+ onSelect: (tz) => setTimezone(tz),
5865
+ showSearch: true
5866
+ }
5867
+ ), showMembersModal && /* @__PURE__ */ import_react89.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowMembersModal(false) }), /* @__PURE__ */ import_react89.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 h-[80vh]" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react89.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Select Participants"), /* @__PURE__ */ import_react89.default.createElement("button", { onClick: () => setShowMembersModal(false), className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none text-[13px] " }, "Done")), /* @__PURE__ */ import_react89.default.createElement("div", { className: "p-4 shrink-0 " }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react89.default.createElement(
5868
+ "input",
5869
+ {
5870
+ type: "text",
5871
+ placeholder: "Search team...",
5872
+ value: localSearchQuery,
5873
+ onChange: handleSearchInput,
5874
+ className: "w-full pl-10 pr-4 py-2.5 bg-neutral-100 rounded-full text-[13px] text-black placeholder-neutral-400 outline-none focus:bg-neutral-200 transition-colors"
5875
+ }
5876
+ ))), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isMembersLoading || isTyping ? /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, size: 28, className: "animate-spin text-black" })) : members.length === 0 ? /* @__PURE__ */ import_react89.default.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No members found.") : members.map((member) => {
5877
+ const isChecked = selectedParticipants.has(member.userId);
5878
+ return /* @__PURE__ */ import_react89.default.createElement(
5879
+ "div",
5880
+ {
5881
+ key: member.id,
5882
+ onClick: () => toggleParticipant(member.userId),
5883
+ className: "flex items-center justify-between p-3 rounded-xl cursor-pointer hover:bg-neutral-50 transition-colors select-none"
5884
+ },
5885
+ /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-center gap-3 min-w-0 flex-1" }, /* @__PURE__ */ import_react89.default.createElement(MemberAvatar3, { src: member.avatarUrl, sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[13px] text-black truncate" }, member.fullName), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[11px] text-neutral-400 capitalize truncate" }, member.role.toLowerCase()))),
5886
+ /* @__PURE__ */ import_react89.default.createElement("div", { className: "shrink-0 pl-3" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: `w-5 h-5 rounded-full flex items-center justify-center transition-colors ${isChecked ? "bg-[#068afe]" : "border border-neutral-300 bg-white"}` }, isChecked && /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Tick02Icon, size: 14, className: "text-white" })))
5887
+ );
5888
+ })), /* @__PURE__ */ import_react89.default.createElement("div", { className: "p-4 flex items-center justify-between shrink-0 bg-white" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest" }, "Page ", membersCurrentPage, " of ", membersTotalPages === 0 ? 1 : membersTotalPages), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex gap-1" }, /* @__PURE__ */ import_react89.default.createElement(
5889
+ "button",
5890
+ {
5891
+ disabled: membersCurrentPage <= 1 || isMembersLoading,
5892
+ onClick: () => onMembersPageChange(membersCurrentPage - 1),
5893
+ className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
5894
+ },
5895
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 12 })
5896
+ ), /* @__PURE__ */ import_react89.default.createElement(
5897
+ "button",
5898
+ {
5899
+ disabled: membersCurrentPage >= membersTotalPages || membersTotalPages === 0 || isMembersLoading,
5900
+ onClick: () => onMembersPageChange(membersCurrentPage + 1),
5901
+ className: "w-7 h-7 flex items-center justify-center rounded-full bg-white border border-neutral-200 text-neutral-600 disabled:opacity-30 outline-none hover:bg-neutral-50 transition-colors"
5902
+ },
5903
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowRight01Icon, size: 12 })
5904
+ ))))));
5496
5905
  };
5497
5906
  // Annotate the CommonJS export names for ESM import in node:
5498
5907
  0 && (module.exports = {
@@ -5529,6 +5938,7 @@ var UniversalSettings = ({
5529
5938
  UniversalBuyCryptoPage,
5530
5939
  UniversalCardActionPage,
5531
5940
  UniversalCardPage,
5941
+ UniversalCreateHuddle,
5532
5942
  UniversalErrorView,
5533
5943
  UniversalHome2,
5534
5944
  UniversalHomeView,