@retinalabsllc/zairusjs 21.0.6 → 21.0.8

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.
Files changed (3) hide show
  1. package/dist/index.js +23 -31
  2. package/dist/index.mjs +102 -111
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -4866,11 +4866,7 @@ var UniversalBuyCryptoPage = ({
4866
4866
  var import_react83 = __toESM(require("react"));
4867
4867
  var import_react84 = require("@hugeicons/react");
4868
4868
  var import_core_free_icons30 = require("@hugeicons/core-free-icons");
4869
- var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4870
- const [loaded, setLoaded] = (0, import_react83.useState)(false);
4871
- const [error, setError] = (0, import_react83.useState)(false);
4872
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
4873
- const finalSrc = error || !src ? defaultAvatar : src;
4869
+ var HuddleAvatar = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
4874
4870
  const getStatusColor = () => {
4875
4871
  switch (status?.toUpperCase()) {
4876
4872
  case "SCHEDULED":
@@ -4885,16 +4881,16 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4885
4881
  return "bg-stone-200";
4886
4882
  }
4887
4883
  };
4888
- 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-stone-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-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react83.default.createElement(
4889
- "img",
4890
- {
4891
- src: finalSrc,
4892
- alt: "Huddle Avatar",
4893
- className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4894
- onLoad: () => setLoaded(true),
4895
- onError: () => setError(true)
4884
+ let day = "--";
4885
+ let month = "---";
4886
+ if (timeString) {
4887
+ const parts = timeString.split(" ");
4888
+ if (parts.length >= 2) {
4889
+ day = parts[0];
4890
+ month = parts[1].substring(0, 3).toUpperCase();
4896
4891
  }
4897
- )), /* @__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()}` }));
4892
+ }
4893
+ 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-white border border-stone-200 flex flex-col items-center justify-center overflow-hidden" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[9px] f tracking-wider leading-tight", style: { color: "#d97757" } }, month), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-sm text-black leading-tight" }, day)), /* @__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()}` }));
4898
4894
  };
4899
4895
  var PageSpinner6 = () => /* @__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" }));
4900
4896
  var UniversalHuddlesPage = ({
@@ -4922,7 +4918,7 @@ var UniversalHuddlesPage = ({
4922
4918
  onClick: () => onHuddleClick(huddle.id),
4923
4919
  className: "flex flex-row items-center gap-4 py-2 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
4924
4920
  },
4925
- /* @__PURE__ */ import_react83.default.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
4921
+ /* @__PURE__ */ import_react83.default.createElement(HuddleAvatar, { timeString: huddle.timeString, status: huddle.status }),
4926
4922
  /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-sm text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-xs text-stone-500 truncate block mt-0.5" }, huddle.timeString)),
4927
4923
  /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ArrowRight01Icon, size: 14, className: "shrink-0 text-stone-400" })
4928
4924
  ))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react83.default.createElement(
@@ -5375,7 +5371,7 @@ var UniversalHome2 = ({
5375
5371
  },
5376
5372
  /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.Logout01Icon, size: 15 }),
5377
5373
  "Log Out"
5378
- )))), showNotifDialog && /* @__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/30", onClick: () => setShowNotifDialog(false) }), /* @__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 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react87.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.Loading03Icon, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ import_react87.default.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ import_react87.default.createElement("div", { className: "mb-2" }, /* @__PURE__ */ import_react87.default.createElement("span", { className: "inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-emerald-50 text-emerald-600 text-xs tracking-wide" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.Tick02Icon, size: 12 }), " Action Completed")) : /* @__PURE__ */ import_react87.default.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ import_react87.default.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ import_react87.default.createElement(
5374
+ )))), showNotifDialog && /* @__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/30", onClick: () => setShowNotifDialog(false) }), /* @__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 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react87.default.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ import_react87.default.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.Loading03Icon, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ import_react87.default.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ import_react87.default.createElement("div", { className: "" }) : /* @__PURE__ */ import_react87.default.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ import_react87.default.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ import_react87.default.createElement(
5379
5375
  "button",
5380
5376
  {
5381
5377
  onClick: () => handleResolve("ACCEPTED"),
@@ -6024,11 +6020,7 @@ var import_react94 = require("@hugeicons/react");
6024
6020
  var import_core_free_icons35 = require("@hugeicons/core-free-icons");
6025
6021
  var MONTHS2 = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
6026
6022
  var DAYS_OF_WEEK2 = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
6027
- var HuddleAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6028
- const [loaded, setLoaded] = (0, import_react93.useState)(false);
6029
- const [error, setError] = (0, import_react93.useState)(false);
6030
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
6031
- const finalSrc = error || !src ? defaultAvatar : src;
6023
+ var HuddleAvatar2 = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
6032
6024
  const getStatusColor = () => {
6033
6025
  switch (status?.toUpperCase()) {
6034
6026
  case "SCHEDULED":
@@ -6043,16 +6035,16 @@ var HuddleAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6043
6035
  return "bg-stone-200";
6044
6036
  }
6045
6037
  };
6046
- return /* @__PURE__ */ import_react93.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react93.default.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react93.default.createElement(import_react94.HugeiconsIcon, { icon: import_core_free_icons35.Loading03Icon, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ import_react93.default.createElement(
6047
- "img",
6048
- {
6049
- src: finalSrc,
6050
- alt: "Huddle Avatar",
6051
- className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
6052
- onLoad: () => setLoaded(true),
6053
- onError: () => setError(true)
6038
+ let day = "--";
6039
+ let month = "---";
6040
+ if (timeString) {
6041
+ const parts = timeString.split(" ");
6042
+ if (parts.length >= 2) {
6043
+ day = parts[0];
6044
+ month = parts[1].substring(0, 3).toUpperCase();
6054
6045
  }
6055
- )), /* @__PURE__ */ import_react93.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
6046
+ }
6047
+ return /* @__PURE__ */ import_react93.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react93.default.createElement("div", { className: "w-full h-full rounded-lg bg-white border border-stone-200 flex flex-col items-center justify-center overflow-hidden" }, /* @__PURE__ */ import_react93.default.createElement("span", { className: "text-[9px] tracking-wider leading-tight", style: { color: "#d97757" } }, month), /* @__PURE__ */ import_react93.default.createElement("span", { className: "text-sm text-black leading-tight" }, day)), /* @__PURE__ */ import_react93.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
6056
6048
  };
6057
6049
  var HomeHuddleCalendar = ({
6058
6050
  huddles = [],
@@ -6172,7 +6164,7 @@ var HomeHuddleCalendar = ({
6172
6164
  onClick: () => router.push(`/app/huddles/${huddle.id}`),
6173
6165
  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"
6174
6166
  },
6175
- /* @__PURE__ */ import_react93.default.createElement(HuddleAvatar2, { src: huddle.imageUrl, status: huddle.status }),
6167
+ /* @__PURE__ */ import_react93.default.createElement(HuddleAvatar2, { timeString: huddle.timeString, status: huddle.status }),
6176
6168
  /* @__PURE__ */ import_react93.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react93.default.createElement("p", { className: "text-sm text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ import_react93.default.createElement("span", { className: "text-[11px] text-stone-500 truncate block mt-1 tracking-wide" }, isSearching ? huddle.timeString : huddle.timeString.split("|")[1]?.trim() || huddle.timeString)),
6177
6169
  /* @__PURE__ */ import_react93.default.createElement(import_react94.HugeiconsIcon, { icon: import_core_free_icons35.ArrowRight01Icon, size: 14, className: "shrink-0 text-stone-400 group-hover:text-black transition-colors" })
6178
6170
  )))), huddles.length > 0 && !isLoading && /* @__PURE__ */ import_react93.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-4 mb-2" }, /* @__PURE__ */ import_react93.default.createElement("span", { className: "text-[10px] text-stone-400 tracking-widest uppercase" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react93.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react93.default.createElement(
package/dist/index.mjs CHANGED
@@ -4887,18 +4887,14 @@ var UniversalBuyCryptoPage = ({
4887
4887
  };
4888
4888
 
4889
4889
  // src/components/UniversalHuddlesPage.tsx
4890
- import React49, { useState as useState35 } from "react";
4890
+ import React49 from "react";
4891
4891
  import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
4892
4892
  import {
4893
4893
  ArrowLeft01Icon as ArrowLeft01Icon15,
4894
4894
  ArrowRight01Icon as ArrowRight01Icon10,
4895
4895
  Loading03Icon as Loading03Icon22
4896
4896
  } from "@hugeicons/core-free-icons";
4897
- var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4898
- const [loaded, setLoaded] = useState35(false);
4899
- const [error, setError] = useState35(false);
4900
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
4901
- const finalSrc = error || !src ? defaultAvatar : src;
4897
+ var HuddleAvatar = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
4902
4898
  const getStatusColor = () => {
4903
4899
  switch (status?.toUpperCase()) {
4904
4900
  case "SCHEDULED":
@@ -4913,16 +4909,16 @@ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4913
4909
  return "bg-stone-200";
4914
4910
  }
4915
4911
  };
4916
- return /* @__PURE__ */ React49.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React49.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: Loading03Icon22, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React49.createElement(
4917
- "img",
4918
- {
4919
- src: finalSrc,
4920
- alt: "Huddle Avatar",
4921
- className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4922
- onLoad: () => setLoaded(true),
4923
- onError: () => setError(true)
4912
+ let day = "--";
4913
+ let month = "---";
4914
+ if (timeString) {
4915
+ const parts = timeString.split(" ");
4916
+ if (parts.length >= 2) {
4917
+ day = parts[0];
4918
+ month = parts[1].substring(0, 3).toUpperCase();
4924
4919
  }
4925
- )), /* @__PURE__ */ React49.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
4920
+ }
4921
+ return /* @__PURE__ */ React49.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React49.createElement("div", { className: "w-full h-full rounded-lg bg-white border border-stone-200 flex flex-col items-center justify-center overflow-hidden" }, /* @__PURE__ */ React49.createElement("span", { className: "text-[9px] f tracking-wider leading-tight", style: { color: "#d97757" } }, month), /* @__PURE__ */ React49.createElement("span", { className: "text-sm text-black leading-tight" }, day)), /* @__PURE__ */ React49.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
4926
4922
  };
4927
4923
  var PageSpinner6 = () => /* @__PURE__ */ React49.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: Loading03Icon22, size: 32, className: "animate-spin mb-4 text-black" }));
4928
4924
  var UniversalHuddlesPage = ({
@@ -4950,7 +4946,7 @@ var UniversalHuddlesPage = ({
4950
4946
  onClick: () => onHuddleClick(huddle.id),
4951
4947
  className: "flex flex-row items-center gap-4 py-2 hover:bg-stone-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
4952
4948
  },
4953
- /* @__PURE__ */ React49.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
4949
+ /* @__PURE__ */ React49.createElement(HuddleAvatar, { timeString: huddle.timeString, status: huddle.status }),
4954
4950
  /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React49.createElement("p", { className: "text-sm text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ React49.createElement("span", { className: "text-xs text-stone-500 truncate block mt-0.5" }, huddle.timeString)),
4955
4951
  /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: ArrowRight01Icon10, size: 14, className: "shrink-0 text-stone-400" })
4956
4952
  ))), /* @__PURE__ */ React49.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React49.createElement("span", { className: "text-xs text-stone-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React49.createElement(
@@ -4973,7 +4969,7 @@ var UniversalHuddlesPage = ({
4973
4969
  };
4974
4970
 
4975
4971
  // src/components/UniversalMembersPage.tsx
4976
- import React50, { useState as useState36, useEffect as useEffect20, useRef as useRef13 } from "react";
4972
+ import React50, { useState as useState35, useEffect as useEffect20, useRef as useRef13 } from "react";
4977
4973
  import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
4978
4974
  import toast12 from "react-hot-toast";
4979
4975
  import {
@@ -4985,8 +4981,8 @@ import {
4985
4981
  ListSettingIcon as ListSettingIcon2
4986
4982
  } from "@hugeicons/core-free-icons";
4987
4983
  var MemberAvatar2 = ({ src, status }) => {
4988
- const [loaded, setLoaded] = useState36(false);
4989
- const [error, setError] = useState36(false);
4984
+ const [loaded, setLoaded] = useState35(false);
4985
+ const [error, setError] = useState35(false);
4990
4986
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
4991
4987
  const finalSrc = error || !src ? defaultAvatar : src;
4992
4988
  const getStatusColor = () => {
@@ -5034,16 +5030,16 @@ var UniversalMembersPage = ({
5034
5030
  onRemoveMember,
5035
5031
  onInviteMember
5036
5032
  }) => {
5037
- const [expandedId, setExpandedId] = useState36(null);
5038
- const [memberToRemove, setMemberToRemove] = useState36(null);
5039
- const [isRemoving, setIsRemoving] = useState36(false);
5040
- const [isInviteMode, setIsInviteMode] = useState36(false);
5041
- const [inviteEmail, setInviteEmail] = useState36("");
5042
- const [isInviting, setIsInviting] = useState36(false);
5043
- const [localSearchQuery, setLocalSearchQuery] = useState36(searchQuery);
5044
- const [isTyping, setIsTyping] = useState36(false);
5045
- const [isStatusModalOpen, setIsStatusModalOpen] = useState36(false);
5046
- const [isRoleModalOpen, setIsRoleModalOpen] = useState36(false);
5033
+ const [expandedId, setExpandedId] = useState35(null);
5034
+ const [memberToRemove, setMemberToRemove] = useState35(null);
5035
+ const [isRemoving, setIsRemoving] = useState35(false);
5036
+ const [isInviteMode, setIsInviteMode] = useState35(false);
5037
+ const [inviteEmail, setInviteEmail] = useState35("");
5038
+ const [isInviting, setIsInviting] = useState35(false);
5039
+ const [localSearchQuery, setLocalSearchQuery] = useState35(searchQuery);
5040
+ const [isTyping, setIsTyping] = useState35(false);
5041
+ const [isStatusModalOpen, setIsStatusModalOpen] = useState35(false);
5042
+ const [isRoleModalOpen, setIsRoleModalOpen] = useState35(false);
5047
5043
  const statusDropdownRef = useRef13(null);
5048
5044
  const roleDropdownRef = useRef13(null);
5049
5045
  const cleanEmailId = (val) => val.toLowerCase().replace(/[^a-z0-9@._-]/g, "");
@@ -5239,7 +5235,7 @@ var UniversalMembersPage = ({
5239
5235
  };
5240
5236
 
5241
5237
  // src/components/UniversalHome2.tsx
5242
- import React51, { useState as useState37 } from "react";
5238
+ import React51, { useState as useState36 } from "react";
5243
5239
  import { useRouter as useRouter3 } from "next/navigation";
5244
5240
  import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
5245
5241
  import toast13 from "react-hot-toast";
@@ -5251,12 +5247,11 @@ import {
5251
5247
  CancelCircleIcon as CancelCircleIcon13,
5252
5248
  ArrowUpRight01Icon as ArrowUpRight01Icon3,
5253
5249
  Robot01Icon,
5254
- Logout01Icon,
5255
- Tick02Icon as Tick02Icon2
5250
+ Logout01Icon
5256
5251
  } from "@hugeicons/core-free-icons";
5257
5252
  var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
5258
- const [loaded, setLoaded] = useState37(false);
5259
- const [error, setError] = useState37(false);
5253
+ const [loaded, setLoaded] = useState36(false);
5254
+ const [error, setError] = useState36(false);
5260
5255
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
5261
5256
  const finalSrc = error || !src ? defaultAvatar : src;
5262
5257
  return /* @__PURE__ */ React51.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React51.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon24, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React51.createElement(
@@ -5289,13 +5284,13 @@ var UniversalHome2 = ({
5289
5284
  huddlesProps,
5290
5285
  onLogout
5291
5286
  }) => {
5292
- const [isAvatarLoaded, setIsAvatarLoaded] = useState37(false);
5293
- const [showNotifDialog, setShowNotifDialog] = useState37(false);
5294
- const [showOrgSwitcher, setShowOrgSwitcher] = useState37(false);
5295
- const [selectedNotif, setSelectedNotif] = useState37(null);
5296
- const [isResolving, setIsResolving] = useState37(false);
5297
- const [showLogoutConfirm, setShowLogoutConfirm] = useState37(false);
5298
- const [isLoggingOut, setIsLoggingOut] = useState37(false);
5287
+ const [isAvatarLoaded, setIsAvatarLoaded] = useState36(false);
5288
+ const [showNotifDialog, setShowNotifDialog] = useState36(false);
5289
+ const [showOrgSwitcher, setShowOrgSwitcher] = useState36(false);
5290
+ const [selectedNotif, setSelectedNotif] = useState36(null);
5291
+ const [isResolving, setIsResolving] = useState36(false);
5292
+ const [showLogoutConfirm, setShowLogoutConfirm] = useState36(false);
5293
+ const [isLoggingOut, setIsLoggingOut] = useState36(false);
5299
5294
  const router = useRouter3();
5300
5295
  const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
5301
5296
  const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
@@ -5420,7 +5415,7 @@ var UniversalHome2 = ({
5420
5415
  },
5421
5416
  /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Logout01Icon, size: 15 }),
5422
5417
  "Log Out"
5423
- )))), showNotifDialog && /* @__PURE__ */ React51.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React51.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React51.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon17, size: 14 }), " Back") : /* @__PURE__ */ React51.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React51.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: CancelCircleIcon13, size: 18 }))), /* @__PURE__ */ React51.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon24, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React51.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ React51.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React51.createElement("span", { className: "inline-flex items-center gap-1.5 px-3 py-1 rounded-full bg-emerald-50 text-emerald-600 text-xs tracking-wide" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Tick02Icon2, size: 12 }), " Action Completed")) : /* @__PURE__ */ React51.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React51.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React51.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ React51.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ React51.createElement(
5418
+ )))), showNotifDialog && /* @__PURE__ */ React51.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React51.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React51.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#d97757] hover:text-[#d97757] transition-colors outline-none flex items-center gap-2 text-xs tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon17, size: 14 }), " Back") : /* @__PURE__ */ React51.createElement("h3", { className: "text-sm text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React51.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-stone-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: CancelCircleIcon13, size: 18 }))), /* @__PURE__ */ React51.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon37, { icon: Loading03Icon24, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React51.createElement("div", { className: "p-4 text-left" }, selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && selectedNotif.meta_json?.completed ? /* @__PURE__ */ React51.createElement("div", { className: "" }) : /* @__PURE__ */ React51.createElement("h4", { className: "text-sm text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React51.createElement("span", { className: "text-xs text-stone-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React51.createElement("p", { className: "text-xs text-stone-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && /* @__PURE__ */ React51.createElement("div", { className: `mt-8 flex gap-3 pt-6 ${selectedNotif.meta_json?.completed ? "opacity-40 pointer-events-none cursor-not-allowed" : ""}` }, /* @__PURE__ */ React51.createElement(
5424
5419
  "button",
5425
5420
  {
5426
5421
  onClick: () => handleResolve("ACCEPTED"),
@@ -5468,7 +5463,7 @@ var UniversalHome2 = ({
5468
5463
  };
5469
5464
 
5470
5465
  // src/components/UniversalSettings.tsx
5471
- import React52, { useState as useState38, useEffect as useEffect21, useRef as useRef14 } from "react";
5466
+ import React52, { useState as useState37, useEffect as useEffect21, useRef as useRef14 } from "react";
5472
5467
  import toast14 from "react-hot-toast";
5473
5468
  import { HugeiconsIcon as HugeiconsIcon38 } from "@hugeicons/react";
5474
5469
  import {
@@ -5484,8 +5479,8 @@ import {
5484
5479
  CloudUploadIcon
5485
5480
  } from "@hugeicons/core-free-icons";
5486
5481
  var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5487
- const [loaded, setLoaded] = useState38(false);
5488
- const [error, setError] = useState38(false);
5482
+ const [loaded, setLoaded] = useState37(false);
5483
+ const [error, setError] = useState37(false);
5489
5484
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
5490
5485
  const finalSrc = error || !src ? defaultAvatar : src;
5491
5486
  const getStatusColor = () => {
@@ -5505,8 +5500,8 @@ var MemberAvatar3 = ({ src, status, sizeClass = "w-10 h-10" }) => {
5505
5500
  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()}` }));
5506
5501
  };
5507
5502
  var OrgAvatar2 = ({ src, sizeClass = "w-10 h-10" }) => {
5508
- const [loaded, setLoaded] = useState38(false);
5509
- const [error, setError] = useState38(false);
5503
+ const [loaded, setLoaded] = useState37(false);
5504
+ const [error, setError] = useState37(false);
5510
5505
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office_a.avif";
5511
5506
  const finalSrc = error || !src ? defaultAvatar : src;
5512
5507
  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(
@@ -5566,38 +5561,38 @@ var UniversalSettings = ({
5566
5561
  const isOrg = accountType === "ORGANIZATION";
5567
5562
  const safeRole = String(userRole || "").toUpperCase().trim();
5568
5563
  const canManage = ["ADMIN", "MANAGER", "OWNER"].includes(safeRole);
5569
- const [activeTab, setActiveTab] = useState38(isOrg ? "MEMBERS" : "ACCOUNT");
5570
- const [expandedId, setExpandedId] = useState38(null);
5571
- const [memberToRemove, setMemberToRemove] = useState38(null);
5572
- const [isRemoving, setIsRemoving] = useState38(false);
5573
- const [isInviteMode, setIsInviteMode] = useState38(false);
5574
- const [inviteEmail, setInviteEmail] = useState38("");
5575
- const [isInviting, setIsInviting] = useState38(false);
5576
- const [localSearchQuery, setLocalSearchQuery] = useState38(membersSearchQuery);
5577
- const [isTyping, setIsTyping] = useState38(false);
5564
+ const [activeTab, setActiveTab] = useState37(isOrg ? "MEMBERS" : "ACCOUNT");
5565
+ const [expandedId, setExpandedId] = useState37(null);
5566
+ const [memberToRemove, setMemberToRemove] = useState37(null);
5567
+ const [isRemoving, setIsRemoving] = useState37(false);
5568
+ const [isInviteMode, setIsInviteMode] = useState37(false);
5569
+ const [inviteEmail, setInviteEmail] = useState37("");
5570
+ const [isInviting, setIsInviting] = useState37(false);
5571
+ const [localSearchQuery, setLocalSearchQuery] = useState37(membersSearchQuery);
5572
+ const [isTyping, setIsTyping] = useState37(false);
5578
5573
  const isFirstSearchMount = useRef14(true);
5579
- const [isStatusModalOpen, setIsStatusModalOpen] = useState38(false);
5580
- const [isRoleModalOpen, setIsRoleModalOpen] = useState38(false);
5581
- const [roleEditTarget, setRoleEditTarget] = useState38(null);
5582
- const [isUpdatingRole, setIsUpdatingRole] = useState38(false);
5583
- const [orgName, setOrgName] = useState38(initialOrgName);
5584
- const [orgSlug, setOrgSlug] = useState38(initialOrgSlug);
5585
- const [orgAvatarUrl, setOrgAvatarUrl] = useState38(initialOrgAvatarUrl);
5586
- const [firstName, setFirstName] = useState38("");
5587
- const [lastName, setLastName] = useState38("");
5588
- const [jobTitle, setJobTitle] = useState38(initialJobTitle);
5589
- const [description, setDescription] = useState38(initialDescription);
5590
- const [avatarUrl, setAvatarUrl] = useState38(initialAvatarUrl);
5591
- const [isCheckingSlug, setIsCheckingSlug] = useState38(false);
5592
- const [slugAvailable, setSlugAvailable] = useState38(null);
5593
- const [isSavingOrg, setIsSavingOrg] = useState38(false);
5594
- const [isSavingProfile, setIsSavingProfile] = useState38(false);
5574
+ const [isStatusModalOpen, setIsStatusModalOpen] = useState37(false);
5575
+ const [isRoleModalOpen, setIsRoleModalOpen] = useState37(false);
5576
+ const [roleEditTarget, setRoleEditTarget] = useState37(null);
5577
+ const [isUpdatingRole, setIsUpdatingRole] = useState37(false);
5578
+ const [orgName, setOrgName] = useState37(initialOrgName);
5579
+ const [orgSlug, setOrgSlug] = useState37(initialOrgSlug);
5580
+ const [orgAvatarUrl, setOrgAvatarUrl] = useState37(initialOrgAvatarUrl);
5581
+ const [firstName, setFirstName] = useState37("");
5582
+ const [lastName, setLastName] = useState37("");
5583
+ const [jobTitle, setJobTitle] = useState37(initialJobTitle);
5584
+ const [description, setDescription] = useState37(initialDescription);
5585
+ const [avatarUrl, setAvatarUrl] = useState37(initialAvatarUrl);
5586
+ const [isCheckingSlug, setIsCheckingSlug] = useState37(false);
5587
+ const [slugAvailable, setSlugAvailable] = useState37(null);
5588
+ const [isSavingOrg, setIsSavingOrg] = useState37(false);
5589
+ const [isSavingProfile, setIsSavingProfile] = useState37(false);
5595
5590
  const orgFileInputRef = useRef14(null);
5596
5591
  const userFileInputRef = useRef14(null);
5597
- const [pendingOrgAvatar, setPendingOrgAvatar] = useState38(null);
5598
- const [pendingUserAvatar, setPendingUserAvatar] = useState38(null);
5599
- const [isUploadingOrgAvatar, setIsUploadingOrgAvatar] = useState38(false);
5600
- const [isUploadingUserAvatar, setIsUploadingUserAvatar] = useState38(false);
5592
+ const [pendingOrgAvatar, setPendingOrgAvatar] = useState37(null);
5593
+ const [pendingUserAvatar, setPendingUserAvatar] = useState37(null);
5594
+ const [isUploadingOrgAvatar, setIsUploadingOrgAvatar] = useState37(false);
5595
+ const [isUploadingUserAvatar, setIsUploadingUserAvatar] = useState37(false);
5601
5596
  useEffect21(() => {
5602
5597
  setOrgName(initialOrgName || "");
5603
5598
  setOrgSlug(initialOrgSlug || "");
@@ -5844,7 +5839,7 @@ var UniversalSettings = ({
5844
5839
  };
5845
5840
 
5846
5841
  // src/components/UniversalCreateHuddle.tsx
5847
- import React53, { useState as useState39, useEffect as useEffect22, useRef as useRef15 } from "react";
5842
+ import React53, { useState as useState38, useEffect as useEffect22, useRef as useRef15 } from "react";
5848
5843
  import toast15 from "react-hot-toast";
5849
5844
  import { HugeiconsIcon as HugeiconsIcon39 } from "@hugeicons/react";
5850
5845
  import {
@@ -5859,8 +5854,8 @@ import {
5859
5854
  CircleLock02Icon as CircleLock02Icon4
5860
5855
  } from "@hugeicons/core-free-icons";
5861
5856
  var MemberAvatar4 = ({ src, sizeClass = "w-10 h-10" }) => {
5862
- const [loaded, setLoaded] = useState39(false);
5863
- const [error, setError] = useState39(false);
5857
+ const [loaded, setLoaded] = useState38(false);
5858
+ const [error, setError] = useState38(false);
5864
5859
  const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
5865
5860
  return /* @__PURE__ */ React53.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React53.createElement("div", { className: "w-full h-full rounded-lg bg-stone-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React53.createElement(HugeiconsIcon39, { icon: Loading03Icon26, className: "animate-spin text-stone-400 absolute", size: 14 }), /* @__PURE__ */ React53.createElement(
5866
5861
  "img",
@@ -5903,27 +5898,27 @@ var UniversalCreateHuddle = ({
5903
5898
  onCreateSubmit
5904
5899
  }) => {
5905
5900
  const canManage = userRole === "ADMIN" || userRole === "MANAGER" || userRole === "OWNER";
5906
- const [huddleDate, setHuddleDate] = useState39(() => {
5901
+ const [huddleDate, setHuddleDate] = useState38(() => {
5907
5902
  const d = /* @__PURE__ */ new Date();
5908
5903
  d.setHours(d.getHours() + 1, 0, 0, 0);
5909
5904
  return d;
5910
5905
  });
5911
- const [title, setTitle] = useState39("");
5912
- const [isPrivate, setIsPrivate] = useState39(false);
5913
- const [timezone, setTimezone] = useState39("UTC");
5906
+ const [title, setTitle] = useState38("");
5907
+ const [isPrivate, setIsPrivate] = useState38(false);
5908
+ const [timezone, setTimezone] = useState38("UTC");
5914
5909
  useEffect22(() => {
5915
5910
  try {
5916
5911
  setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone);
5917
5912
  } catch (e) {
5918
5913
  }
5919
5914
  }, []);
5920
- const [calendarMode, setCalendarMode] = useState39(null);
5921
- const [showTimezoneModal, setShowTimezoneModal] = useState39(false);
5922
- const [showMembersModal, setShowMembersModal] = useState39(false);
5923
- const [selectedParticipants, setSelectedParticipants] = useState39(/* @__PURE__ */ new Set());
5924
- const [isSubmitting, setIsSubmitting] = useState39(false);
5925
- const [localSearchQuery, setLocalSearchQuery] = useState39(membersSearchQuery);
5926
- const [isTyping, setIsTyping] = useState39(false);
5915
+ const [calendarMode, setCalendarMode] = useState38(null);
5916
+ const [showTimezoneModal, setShowTimezoneModal] = useState38(false);
5917
+ const [showMembersModal, setShowMembersModal] = useState38(false);
5918
+ const [selectedParticipants, setSelectedParticipants] = useState38(/* @__PURE__ */ new Set());
5919
+ const [isSubmitting, setIsSubmitting] = useState38(false);
5920
+ const [localSearchQuery, setLocalSearchQuery] = useState38(membersSearchQuery);
5921
+ const [isTyping, setIsTyping] = useState38(false);
5927
5922
  const typingTimer = useRef15(null);
5928
5923
  const handleSearchInput = (e) => {
5929
5924
  const val = e.target.value;
@@ -6084,7 +6079,7 @@ var UniversalCreateHuddle = ({
6084
6079
  };
6085
6080
 
6086
6081
  // src/components/HomeHuddleCalendar.tsx
6087
- import React54, { useState as useState40, useRef as useRef16, useEffect as useEffect23 } from "react";
6082
+ import React54, { useState as useState39, useRef as useRef16, useEffect as useEffect23 } from "react";
6088
6083
  import { useRouter as useRouter4 } from "next/navigation";
6089
6084
  import { HugeiconsIcon as HugeiconsIcon40 } from "@hugeicons/react";
6090
6085
  import {
@@ -6096,11 +6091,7 @@ import {
6096
6091
  } from "@hugeicons/core-free-icons";
6097
6092
  var MONTHS2 = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
6098
6093
  var DAYS_OF_WEEK2 = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
6099
- var HuddleAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6100
- const [loaded, setLoaded] = useState40(false);
6101
- const [error, setError] = useState40(false);
6102
- const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default_a.avif";
6103
- const finalSrc = error || !src ? defaultAvatar : src;
6094
+ var HuddleAvatar2 = ({ timeString, status, sizeClass = "w-10 h-10" }) => {
6104
6095
  const getStatusColor = () => {
6105
6096
  switch (status?.toUpperCase()) {
6106
6097
  case "SCHEDULED":
@@ -6115,16 +6106,16 @@ var HuddleAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
6115
6106
  return "bg-stone-200";
6116
6107
  }
6117
6108
  };
6118
- 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(
6119
- "img",
6120
- {
6121
- src: finalSrc,
6122
- alt: "Huddle Avatar",
6123
- className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
6124
- onLoad: () => setLoaded(true),
6125
- onError: () => setError(true)
6109
+ let day = "--";
6110
+ let month = "---";
6111
+ if (timeString) {
6112
+ const parts = timeString.split(" ");
6113
+ if (parts.length >= 2) {
6114
+ day = parts[0];
6115
+ month = parts[1].substring(0, 3).toUpperCase();
6126
6116
  }
6127
- )), /* @__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()}` }));
6117
+ }
6118
+ return /* @__PURE__ */ React54.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React54.createElement("div", { className: "w-full h-full rounded-lg bg-white border border-stone-200 flex flex-col items-center justify-center overflow-hidden" }, /* @__PURE__ */ React54.createElement("span", { className: "text-[9px] tracking-wider leading-tight", style: { color: "#d97757" } }, month), /* @__PURE__ */ React54.createElement("span", { className: "text-sm text-black leading-tight" }, day)), /* @__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()}` }));
6128
6119
  };
6129
6120
  var HomeHuddleCalendar = ({
6130
6121
  huddles = [],
@@ -6138,8 +6129,8 @@ var HomeHuddleCalendar = ({
6138
6129
  onStatusFilterChange
6139
6130
  }) => {
6140
6131
  const router = useRouter4();
6141
- const [localSearch, setLocalSearch] = useState40(searchQuery);
6142
- const [isStatusModalOpen, setIsStatusModalOpen] = useState40(false);
6132
+ const [localSearch, setLocalSearch] = useState39(searchQuery);
6133
+ const [isStatusModalOpen, setIsStatusModalOpen] = useState39(false);
6143
6134
  const typingTimer = useRef16(null);
6144
6135
  const isSearching = localSearch.trim().length > 0;
6145
6136
  useEffect23(() => {
@@ -6154,9 +6145,9 @@ var HomeHuddleCalendar = ({
6154
6145
  }, 500);
6155
6146
  };
6156
6147
  const today = /* @__PURE__ */ new Date();
6157
- const [viewMonth, setViewMonth] = useState40(today.getMonth());
6158
- const [viewYear, setViewYear] = useState40(today.getFullYear());
6159
- const [selectedDate, setSelectedDate] = useState40(new Date(today.getFullYear(), today.getMonth(), today.getDate()));
6148
+ const [viewMonth, setViewMonth] = useState39(today.getMonth());
6149
+ const [viewYear, setViewYear] = useState39(today.getFullYear());
6150
+ const [selectedDate, setSelectedDate] = useState39(new Date(today.getFullYear(), today.getMonth(), today.getDate()));
6160
6151
  const handlePrevMonth = () => {
6161
6152
  if (viewMonth === 0) {
6162
6153
  setViewMonth(11);
@@ -6244,7 +6235,7 @@ var HomeHuddleCalendar = ({
6244
6235
  onClick: () => router.push(`/app/huddles/${huddle.id}`),
6245
6236
  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"
6246
6237
  },
6247
- /* @__PURE__ */ React54.createElement(HuddleAvatar2, { src: huddle.imageUrl, status: huddle.status }),
6238
+ /* @__PURE__ */ React54.createElement(HuddleAvatar2, { timeString: huddle.timeString, status: huddle.status }),
6248
6239
  /* @__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)),
6249
6240
  /* @__PURE__ */ React54.createElement(HugeiconsIcon40, { icon: ArrowRight01Icon15, size: 14, className: "shrink-0 text-stone-400 group-hover:text-black transition-colors" })
6250
6241
  )))), 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(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "21.0.6",
3
+ "version": "21.0.8",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",