@retinalabsllc/zairusjs 16.1.90 → 16.1.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -978,24 +978,25 @@ interface UniversalBuyCryptoPageProps {
978
978
  }
979
979
  declare const UniversalBuyCryptoPage: React.FC<UniversalBuyCryptoPageProps>;
980
980
 
981
- interface UniversalDepartment {
981
+ interface UniversalHuddle {
982
982
  id: string;
983
983
  name: string;
984
- totalMembers: number;
985
- avatars: string[];
984
+ status: string;
985
+ imageUrl?: string | null;
986
+ timeString: string;
986
987
  }
987
- interface UniversalDepartmentsPageProps {
988
+ interface UniversalHuddlesPageProps {
988
989
  headerTitle: string;
989
990
  headerDescription: string;
990
- departments: UniversalDepartment[];
991
+ huddles: UniversalHuddle[];
991
992
  isLoading: boolean;
992
993
  currentPage: number;
993
994
  totalPages: number;
994
995
  onPageChange: (page: number) => void;
995
- onDepartmentClick: (departmentId: string) => void;
996
- onCreateDepartment?: (name: string) => Promise<void>;
996
+ onHuddleClick: (huddleId: string) => void;
997
+ onCreateHuddle?: () => void;
997
998
  }
998
- declare const UniversalDepartmentsPage: React.FC<UniversalDepartmentsPageProps>;
999
+ declare const UniversalHuddlesPage: React.FC<UniversalHuddlesPageProps>;
999
1000
 
1000
1001
  interface UniversalMember {
1001
1002
  id: string;
@@ -1065,7 +1066,7 @@ interface UniversalHome2Props {
1065
1066
  onResolveInvite?: (notif: NotificationItem2, resolution: 'ACCEPTED' | 'REJECTED') => Promise<void>;
1066
1067
  formatNotifDate: (date: string | Date) => string;
1067
1068
  customContent?: React.ReactNode;
1068
- departmentsProps: UniversalDepartmentsPageProps;
1069
+ huddlesProps: UniversalHuddlesPageProps;
1069
1070
  onLogout?: () => Promise<void>;
1070
1071
  }
1071
1072
  declare const UniversalHome2: React.FC<UniversalHome2Props>;
@@ -1077,7 +1078,6 @@ interface UniversalMember2 {
1077
1078
  avatarUrl?: string | null;
1078
1079
  status: 'ACTIVE' | 'BUSY' | 'AWAY' | 'OFFLINE' | string;
1079
1080
  role: string;
1080
- departmentName?: string;
1081
1081
  }
1082
1082
  interface UniversalSettingsProps {
1083
1083
  accountType: 'INDIVIDUAL' | 'ORGANIZATION';
@@ -1115,4 +1115,4 @@ interface UniversalSettingsProps {
1115
1115
  }
1116
1116
  declare const UniversalSettings: React.FC<UniversalSettingsProps>;
1117
1117
 
1118
- export { AppBento2, type AppBento2Props, type BannerProps, type BarIconProps, type BentoFeature, type BoardMember, type CardData, CardInfoDialog, type CardInfoDialogProps, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type CryptoOption, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, type FiatCurrencyOption, Footer, type FooterColumn, type FooterLink, type FooterProps, FundCardDialog, type FundCardDialogProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, type HomeActionBtn, type HomeActionBtn2, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NetworkOption, type NotificationItem, type NotificationItem2, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type RateCalculationPayload, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalBuyCryptoPage, type UniversalBuyCryptoPageProps, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, type UniversalDepartment, UniversalDepartmentsPage, type UniversalDepartmentsPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHome2, type UniversalHome2Props, UniversalHomeView, type UniversalHomeViewProps, type UniversalMember, type UniversalMember2, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSettings, type UniversalSettingsProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
1118
+ export { AppBento2, type AppBento2Props, type BannerProps, type BarIconProps, type BentoFeature, type BoardMember, type CardData, CardInfoDialog, type CardInfoDialogProps, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type CryptoOption, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, type FiatCurrencyOption, Footer, type FooterColumn, type FooterLink, type FooterProps, FundCardDialog, type FundCardDialogProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, type HomeActionBtn, type HomeActionBtn2, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NetworkOption, type NotificationItem, type NotificationItem2, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type RateCalculationPayload, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalBuyCryptoPage, type UniversalBuyCryptoPageProps, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHome2, type UniversalHome2Props, UniversalHomeView, type UniversalHomeViewProps, type UniversalHuddle, UniversalHuddlesPage, type UniversalHuddlesPageProps, type UniversalMember, type UniversalMember2, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSettings, type UniversalSettingsProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
package/dist/index.d.ts CHANGED
@@ -978,24 +978,25 @@ interface UniversalBuyCryptoPageProps {
978
978
  }
979
979
  declare const UniversalBuyCryptoPage: React.FC<UniversalBuyCryptoPageProps>;
980
980
 
981
- interface UniversalDepartment {
981
+ interface UniversalHuddle {
982
982
  id: string;
983
983
  name: string;
984
- totalMembers: number;
985
- avatars: string[];
984
+ status: string;
985
+ imageUrl?: string | null;
986
+ timeString: string;
986
987
  }
987
- interface UniversalDepartmentsPageProps {
988
+ interface UniversalHuddlesPageProps {
988
989
  headerTitle: string;
989
990
  headerDescription: string;
990
- departments: UniversalDepartment[];
991
+ huddles: UniversalHuddle[];
991
992
  isLoading: boolean;
992
993
  currentPage: number;
993
994
  totalPages: number;
994
995
  onPageChange: (page: number) => void;
995
- onDepartmentClick: (departmentId: string) => void;
996
- onCreateDepartment?: (name: string) => Promise<void>;
996
+ onHuddleClick: (huddleId: string) => void;
997
+ onCreateHuddle?: () => void;
997
998
  }
998
- declare const UniversalDepartmentsPage: React.FC<UniversalDepartmentsPageProps>;
999
+ declare const UniversalHuddlesPage: React.FC<UniversalHuddlesPageProps>;
999
1000
 
1000
1001
  interface UniversalMember {
1001
1002
  id: string;
@@ -1065,7 +1066,7 @@ interface UniversalHome2Props {
1065
1066
  onResolveInvite?: (notif: NotificationItem2, resolution: 'ACCEPTED' | 'REJECTED') => Promise<void>;
1066
1067
  formatNotifDate: (date: string | Date) => string;
1067
1068
  customContent?: React.ReactNode;
1068
- departmentsProps: UniversalDepartmentsPageProps;
1069
+ huddlesProps: UniversalHuddlesPageProps;
1069
1070
  onLogout?: () => Promise<void>;
1070
1071
  }
1071
1072
  declare const UniversalHome2: React.FC<UniversalHome2Props>;
@@ -1077,7 +1078,6 @@ interface UniversalMember2 {
1077
1078
  avatarUrl?: string | null;
1078
1079
  status: 'ACTIVE' | 'BUSY' | 'AWAY' | 'OFFLINE' | string;
1079
1080
  role: string;
1080
- departmentName?: string;
1081
1081
  }
1082
1082
  interface UniversalSettingsProps {
1083
1083
  accountType: 'INDIVIDUAL' | 'ORGANIZATION';
@@ -1115,4 +1115,4 @@ interface UniversalSettingsProps {
1115
1115
  }
1116
1116
  declare const UniversalSettings: React.FC<UniversalSettingsProps>;
1117
1117
 
1118
- export { AppBento2, type AppBento2Props, type BannerProps, type BarIconProps, type BentoFeature, type BoardMember, type CardData, CardInfoDialog, type CardInfoDialogProps, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type CryptoOption, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, type FiatCurrencyOption, Footer, type FooterColumn, type FooterLink, type FooterProps, FundCardDialog, type FundCardDialogProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, type HomeActionBtn, type HomeActionBtn2, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NetworkOption, type NotificationItem, type NotificationItem2, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type RateCalculationPayload, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalBuyCryptoPage, type UniversalBuyCryptoPageProps, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, type UniversalDepartment, UniversalDepartmentsPage, type UniversalDepartmentsPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHome2, type UniversalHome2Props, UniversalHomeView, type UniversalHomeViewProps, type UniversalMember, type UniversalMember2, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSettings, type UniversalSettingsProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
1118
+ export { AppBento2, type AppBento2Props, type BannerProps, type BarIconProps, type BentoFeature, type BoardMember, type CardData, CardInfoDialog, type CardInfoDialogProps, type CompanyDetails, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type CryptoOption, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, type FiatCurrencyOption, Footer, type FooterColumn, type FooterLink, type FooterProps, FundCardDialog, type FundCardDialogProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, type HomeActionBtn, type HomeActionBtn2, type LeaderboardItem, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, MobileNav, type MobileNavItem, type MobileNavProps, type NavItem, type NetworkOption, type NotificationItem, type NotificationItem2, NumberInput, type NumberInputProps, PageSpinner, type PageSpinnerProps, PinDialerBottomSheet, type PinDialerBottomSheetProps, PipleAuth, type PipleAuthProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingFeature2, type PricingPlan, type PricingTab, type ProjectItem, type RateCalculationPayload, type ReferralProfile, type RewardItem, type RewardProfile, type ScrollFeature, type SocialContact, type SocialLink, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, type TierOption, UniversalBuyCryptoPage, type UniversalBuyCryptoPageProps, UniversalCardActionPage, type UniversalCardActionPageProps, UniversalCardPage, type UniversalCardPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalHome2, type UniversalHome2Props, UniversalHomeView, type UniversalHomeViewProps, type UniversalHuddle, UniversalHuddlesPage, type UniversalHuddlesPageProps, type UniversalMember, type UniversalMember2, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalProfilePage, type UniversalProfilePageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, type UniversalReferralItem, UniversalReferralPage, type UniversalReferralPageProps, UniversalRewardPage, type UniversalRewardPageProps, UniversalSecurityPage, type UniversalSecurityPageProps, UniversalSettings, type UniversalSettingsProps, UniversalSidebar, type UniversalSidebarProps, type UniversalTransaction, UniversalTransactionPage, type UniversalTransactionPageProps, UniversalVerificationPage, type UniversalVerificationPageProps, type UniversalWallet, UniversalWalletPage, type UniversalWalletPageProps, type VerificationStatus, WaitlistDialog, type WaitlistDialogProps };
package/dist/index.js CHANGED
@@ -64,10 +64,10 @@ __export(index_exports, {
64
64
  UniversalBuyCryptoPage: () => UniversalBuyCryptoPage,
65
65
  UniversalCardActionPage: () => UniversalCardActionPage,
66
66
  UniversalCardPage: () => UniversalCardPage,
67
- UniversalDepartmentsPage: () => UniversalDepartmentsPage,
68
67
  UniversalErrorView: () => UniversalErrorView,
69
68
  UniversalHome2: () => UniversalHome2,
70
69
  UniversalHomeView: () => UniversalHomeView,
70
+ UniversalHuddlesPage: () => UniversalHuddlesPage,
71
71
  UniversalMembersPage: () => UniversalMembersPage,
72
72
  UniversalOrganizationPage: () => UniversalOrganizationPage,
73
73
  UniversalProfilePage: () => UniversalProfilePage,
@@ -1700,7 +1700,7 @@ var ConfirmationDialog = ({
1700
1700
  {
1701
1701
  onClick: onConfirm,
1702
1702
  disabled: isProcessing,
1703
- className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1703
+ className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1704
1704
  },
1705
1705
  isProcessing ? /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
1706
1706
  ))));
@@ -4514,67 +4514,68 @@ var UniversalBuyCryptoPage = ({
4514
4514
  }))))));
4515
4515
  };
4516
4516
 
4517
- // src/components/UniversalDepartmentsPage.tsx
4517
+ // src/components/UniversalHuddlesPage.tsx
4518
4518
  var import_react77 = __toESM(require("react"));
4519
- var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
4520
4519
  var import_react78 = require("@hugeicons/react");
4521
4520
  var import_core_free_icons27 = require("@hugeicons/core-free-icons");
4522
- var formatMembersCount = (num) => {
4523
- if (num >= 1e6) return (num / 1e6).toFixed(1) + "m";
4524
- if (num >= 1e3) return (num / 1e3).toFixed(1) + "k";
4525
- return num.toString();
4521
+ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4522
+ const [loaded, setLoaded] = (0, import_react77.useState)(false);
4523
+ const [error, setError] = (0, import_react77.useState)(false);
4524
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default.avif";
4525
+ const finalSrc = error || !src ? defaultAvatar : src;
4526
+ const getStatusColor = () => {
4527
+ switch (status?.toUpperCase()) {
4528
+ case "SCHEDULED":
4529
+ return "bg-amber-500";
4530
+ case "ONGOING":
4531
+ return "bg-emerald-500";
4532
+ case "COMPLETED":
4533
+ return "bg-neutral-400";
4534
+ case "CANCELLED":
4535
+ return "bg-rose-500";
4536
+ default:
4537
+ return "bg-neutral-200";
4538
+ }
4539
+ };
4540
+ return /* @__PURE__ */ import_react77.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react77.default.createElement(
4541
+ "img",
4542
+ {
4543
+ src: finalSrc,
4544
+ alt: "Huddle Avatar",
4545
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4546
+ onLoad: () => setLoaded(true),
4547
+ onError: () => setError(true)
4548
+ }
4549
+ )), /* @__PURE__ */ import_react77.default.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
4526
4550
  };
4527
4551
  var PageSpinner6 = () => /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
4528
- var UniversalDepartmentsPage = ({
4552
+ var UniversalHuddlesPage = ({
4529
4553
  headerTitle,
4530
4554
  headerDescription,
4531
- departments,
4555
+ huddles,
4532
4556
  isLoading,
4533
4557
  currentPage,
4534
4558
  totalPages,
4535
4559
  onPageChange,
4536
- onDepartmentClick,
4537
- onCreateDepartment
4560
+ onHuddleClick,
4561
+ onCreateHuddle
4538
4562
  }) => {
4539
- const [isCreateModalOpen, setIsCreateModalOpen] = (0, import_react77.useState)(false);
4540
- const [deptName, setDeptName] = (0, import_react77.useState)("");
4541
- const [isCreating, setIsCreating] = (0, import_react77.useState)(false);
4542
- const handleCreateSubmit = async (e) => {
4543
- e.preventDefault();
4544
- if (deptName.length < 2 || isCreating || !onCreateDepartment) return;
4545
- setIsCreating(true);
4546
- try {
4547
- await onCreateDepartment(deptName);
4548
- setDeptName("");
4549
- setIsCreateModalOpen(false);
4550
- } catch (error) {
4551
- import_react_hot_toast13.default.error(error.message || "Failed to create department.");
4552
- } finally {
4553
- setIsCreating(false);
4554
- }
4555
- };
4556
- return /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react77.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateDepartment && /* @__PURE__ */ import_react77.default.createElement(
4563
+ return /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ import_react77.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateHuddle && /* @__PURE__ */ import_react77.default.createElement(
4557
4564
  "button",
4558
4565
  {
4559
- onClick: () => setIsCreateModalOpen(true),
4566
+ onClick: onCreateHuddle,
4560
4567
  className: "shrink-0 px-4 py-1.5 border border-neutral-200 text-black text-[12px] tracking-wide rounded-full hover:bg-neutral-50 transition-colors outline-none"
4561
4568
  },
4562
4569
  "Create new"
4563
- )), headerDescription && /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react77.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react77.default.createElement("div", null, departments.length === 0 ? /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No departments available") : departments.map((dept) => /* @__PURE__ */ import_react77.default.createElement(
4570
+ )), headerDescription && /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react77.default.createElement(PageSpinner6, null) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react77.default.createElement("div", null, huddles.length === 0 ? /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No huddles available") : huddles.map((huddle) => /* @__PURE__ */ import_react77.default.createElement(
4564
4571
  "div",
4565
4572
  {
4566
- key: dept.id,
4567
- onClick: () => onDepartmentClick(dept.id),
4573
+ key: huddle.id,
4574
+ onClick: () => onHuddleClick(huddle.id),
4568
4575
  className: "flex flex-row items-center gap-4 py-2 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
4569
4576
  },
4570
- /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, dept.name), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center gap-3 min-w-0" }, dept.avatars && dept.avatars.length > 0 && /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center -space-x-2 shrink-0" }, dept.avatars.slice(0, 4).map((src, idx) => /* @__PURE__ */ import_react77.default.createElement("div", { key: idx, className: "w-4 h-4 rounded-md bg-neutral-100 overflow-hidden shrink-0" }, /* @__PURE__ */ import_react77.default.createElement(
4571
- "img",
4572
- {
4573
- src: src || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif",
4574
- alt: "Member",
4575
- className: "w-full h-full object-cover"
4576
- }
4577
- )))), dept.totalMembers > 0 ? /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-500 truncate block" }, formatMembersCount(dept.totalMembers), " ", dept.totalMembers > 4 ? "+" : "") : /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-400 truncate block" }, "No Members"))),
4577
+ /* @__PURE__ */ import_react77.default.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
4578
+ /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-500 truncate block mt-0.5" }, huddle.timeString)),
4578
4579
  /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14, className: "shrink-0 text-neutral-400" })
4579
4580
  ))), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react77.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react77.default.createElement(
4580
4581
  "button",
@@ -4592,55 +4593,13 @@ var UniversalDepartmentsPage = ({
4592
4593
  className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
4593
4594
  },
4594
4595
  /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14 })
4595
- )))))), isCreateModalOpen && /* @__PURE__ */ import_react77.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isCreating && setIsCreateModalOpen(false) }), /* @__PURE__ */ import_react77.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center justify-between pt-5 px-5 shrink-0 " }, /* @__PURE__ */ import_react77.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Create Department"), /* @__PURE__ */ import_react77.default.createElement(
4596
- "button",
4597
- {
4598
- onClick: () => setIsCreateModalOpen(false),
4599
- disabled: isCreating,
4600
- className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4601
- },
4602
- /* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.CancelCircleIcon, size: 18 })
4603
- )), /* @__PURE__ */ import_react77.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react77.default.createElement("form", { onSubmit: handleCreateSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ import_react77.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Department Name"), /* @__PURE__ */ import_react77.default.createElement(
4604
- "input",
4605
- {
4606
- type: "text",
4607
- value: deptName,
4608
- onChange: (e) => setDeptName(e.target.value),
4609
- required: true,
4610
- autoFocus: true,
4611
- maxLength: 50,
4612
- disabled: isCreating,
4613
- className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-200 text-black outline-none focus:border-black transition-all duration-300 disabled:opacity-50",
4614
- placeholder: "e.g. Engineering, Marketing..."
4615
- }
4616
- )), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react77.default.createElement(
4617
- ThreeDActionButton,
4618
- {
4619
- type: "submit",
4620
- disabled: deptName.length < 2 || isCreating,
4621
- isLoading: isCreating,
4622
- className: "w-full"
4623
- },
4624
- "Create Department"
4625
- ), /* @__PURE__ */ import_react77.default.createElement(
4626
- "button",
4627
- {
4628
- type: "button",
4629
- onClick: () => {
4630
- setIsCreateModalOpen(false);
4631
- setDeptName("");
4632
- },
4633
- disabled: isCreating,
4634
- className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-xs tracking-wide"
4635
- },
4636
- "Cancel"
4637
4596
  )))))));
4638
4597
  };
4639
4598
 
4640
4599
  // src/components/UniversalMembersPage.tsx
4641
4600
  var import_react79 = __toESM(require("react"));
4642
4601
  var import_react80 = require("@hugeicons/react");
4643
- var import_react_hot_toast14 = __toESM(require("react-hot-toast"));
4602
+ var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
4644
4603
  var import_core_free_icons28 = require("@hugeicons/core-free-icons");
4645
4604
  var MemberAvatar = ({ src, status }) => {
4646
4605
  const [loaded, setLoaded] = (0, import_react79.useState)(false);
@@ -4735,11 +4694,11 @@ var UniversalMembersPage = ({
4735
4694
  setIsRemoving(true);
4736
4695
  try {
4737
4696
  await onRemoveMember(memberToRemove.id);
4738
- import_react_hot_toast14.default.success("Member removed successfully.");
4697
+ import_react_hot_toast13.default.success("Member removed successfully.");
4739
4698
  setExpandedId(null);
4740
4699
  setMemberToRemove(null);
4741
4700
  } catch (error) {
4742
- import_react_hot_toast14.default.error("Failed to remove member.");
4701
+ import_react_hot_toast13.default.error("Failed to remove member.");
4743
4702
  } finally {
4744
4703
  setIsRemoving(false);
4745
4704
  }
@@ -4753,7 +4712,7 @@ var UniversalMembersPage = ({
4753
4712
  setInviteEmail("");
4754
4713
  setIsInviteMode(false);
4755
4714
  } catch (error) {
4756
- import_react_hot_toast14.default.error(error.message || "Failed to send invitation.");
4715
+ import_react_hot_toast13.default.error(error.message || "Failed to send invitation.");
4757
4716
  } finally {
4758
4717
  setIsInviting(false);
4759
4718
  }
@@ -4900,15 +4859,29 @@ var UniversalMembersPage = ({
4900
4859
  var import_react81 = __toESM(require("react"));
4901
4860
  var import_navigation6 = require("next/navigation");
4902
4861
  var import_react82 = require("@hugeicons/react");
4903
- var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
4862
+ var import_react_hot_toast14 = __toESM(require("react-hot-toast"));
4904
4863
  var import_core_free_icons29 = require("@hugeicons/core-free-icons");
4864
+ var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
4865
+ const [loaded, setLoaded] = (0, import_react81.useState)(false);
4866
+ const [error, setError] = (0, import_react81.useState)(false);
4867
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office.avif";
4868
+ const finalSrc = error || !src ? defaultAvatar : src;
4869
+ return /* @__PURE__ */ import_react81.default.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.Loading03Icon, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ import_react81.default.createElement(
4870
+ "img",
4871
+ {
4872
+ src: finalSrc,
4873
+ alt: "Workspace Avatar",
4874
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4875
+ onLoad: () => setLoaded(true),
4876
+ onError: () => setError(true)
4877
+ }
4878
+ )));
4879
+ };
4905
4880
  var UniversalHome2 = ({
4906
4881
  avatarSrc,
4907
- userStatus = "ACTIVE",
4908
4882
  organizations = [],
4909
4883
  activeOrgId,
4910
4884
  onOrganizationSelect,
4911
- barIcons = [],
4912
4885
  createHuddleAction,
4913
4886
  joinHuddleAction,
4914
4887
  notifications = [],
@@ -4920,7 +4893,7 @@ var UniversalHome2 = ({
4920
4893
  onResolveInvite,
4921
4894
  formatNotifDate,
4922
4895
  customContent,
4923
- departmentsProps,
4896
+ huddlesProps,
4924
4897
  onLogout
4925
4898
  }) => {
4926
4899
  const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react81.useState)(false);
@@ -4934,27 +4907,13 @@ var UniversalHome2 = ({
4934
4907
  const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
4935
4908
  const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
4936
4909
  const hasUnreadNotifs = notifications.some((n) => !n.isRead);
4937
- const getDisplayStatus = () => {
4938
- if (userStatus === "ACTIVE") return "Online";
4939
- if (userStatus === "BUSY") return "Busy";
4940
- if (userStatus === "OFFLINE") return "Offline";
4941
- if (userStatus === "AWAY") return "Away";
4942
- return "Online";
4943
- };
4944
- const getStatusColor = () => {
4945
- if (userStatus === "ACTIVE") return "bg-emerald-500";
4946
- if (userStatus === "BUSY") return "bg-amber-500";
4947
- if (userStatus === "OFFLINE") return "bg-rose-500";
4948
- if (userStatus === "AWAY") return "bg-neutral-400";
4949
- return "bg-emerald-500";
4950
- };
4951
4910
  const handleResolve = async (resolution) => {
4952
4911
  if (!onResolveInvite || !selectedNotif) return;
4953
4912
  setIsResolving(true);
4954
4913
  try {
4955
4914
  await onResolveInvite(selectedNotif, resolution);
4956
4915
  } catch (error) {
4957
- import_react_hot_toast15.default.error("Failed to process invitation");
4916
+ import_react_hot_toast14.default.error("Failed to process invitation");
4958
4917
  } finally {
4959
4918
  setIsResolving(false);
4960
4919
  }
@@ -4964,7 +4923,7 @@ var UniversalHome2 = ({
4964
4923
  try {
4965
4924
  if (onLogout) await onLogout();
4966
4925
  } catch (e) {
4967
- import_react_hot_toast15.default.error("Failed to log out cleanly.");
4926
+ import_react_hot_toast14.default.error("Failed to log out cleanly.");
4968
4927
  } finally {
4969
4928
  setIsLoggingOut(false);
4970
4929
  setShowLogoutConfirm(false);
@@ -5040,9 +4999,9 @@ var UniversalHome2 = ({
5040
4999
  }
5041
5000
  )
5042
5001
  ))), customContent && /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react81.default.createElement(
5043
- UniversalDepartmentsPage,
5002
+ UniversalHuddlesPage,
5044
5003
  {
5045
- ...departmentsProps
5004
+ ...huddlesProps
5046
5005
  }
5047
5006
  )), showOrgSwitcher && /* @__PURE__ */ import_react81.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ import_react81.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[80vh] h-auto" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react81.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ import_react81.default.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ import_react81.default.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ import_react81.default.createElement(
5048
5007
  "button",
@@ -5054,6 +5013,7 @@ var UniversalHome2 = ({
5054
5013
  },
5055
5014
  className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-neutral-50 last:border-0 ${activeOrgId === org.id ? "bg-neutral-50" : "hover:bg-neutral-50/50"}`
5056
5015
  },
5016
+ /* @__PURE__ */ import_react81.default.createElement(OrgAvatar, { src: org.avatarUrl }),
5057
5017
  /* @__PURE__ */ import_react81.default.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ import_react81.default.createElement("span", { className: `text-[13px] tracking-tight truncate w-full text-left ${activeOrgId === org.id ? "text-black " : "text-neutral-600"}` }, org.name), /* @__PURE__ */ import_react81.default.createElement("span", { className: "text-[11px] text-[#068afe] capitalize truncate w-full text-left mt-0.5" }, org.role?.toLowerCase() || "Member")),
5058
5018
  activeOrgId === org.id && /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#068afe] shrink-0" })
5059
5019
  )))), /* @__PURE__ */ import_react81.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react81.default.createElement(
@@ -5116,7 +5076,7 @@ var UniversalHome2 = ({
5116
5076
 
5117
5077
  // src/components/UniversalSettings.tsx
5118
5078
  var import_react83 = __toESM(require("react"));
5119
- var import_react_hot_toast16 = __toESM(require("react-hot-toast"));
5079
+ var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
5120
5080
  var import_react84 = require("@hugeicons/react");
5121
5081
  var import_core_free_icons30 = require("@hugeicons/core-free-icons");
5122
5082
  var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
@@ -5236,11 +5196,11 @@ var UniversalSettings = ({
5236
5196
  setIsRemoving(true);
5237
5197
  try {
5238
5198
  await onRemoveMember(memberToRemove.userId);
5239
- import_react_hot_toast16.default.success("Member removed successfully.");
5199
+ import_react_hot_toast15.default.success("Member removed successfully.");
5240
5200
  setExpandedId(null);
5241
5201
  setMemberToRemove(null);
5242
5202
  } catch (error) {
5243
- import_react_hot_toast16.default.error("Failed to remove member.");
5203
+ import_react_hot_toast15.default.error("Failed to remove member.");
5244
5204
  } finally {
5245
5205
  setIsRemoving(false);
5246
5206
  }
@@ -5254,7 +5214,7 @@ var UniversalSettings = ({
5254
5214
  setInviteEmail("");
5255
5215
  setIsInviteMode(false);
5256
5216
  } catch (error) {
5257
- import_react_hot_toast16.default.error(error.message || "Failed to send invitation.");
5217
+ import_react_hot_toast15.default.error(error.message || "Failed to send invitation.");
5258
5218
  } finally {
5259
5219
  setIsInviting(false);
5260
5220
  }
@@ -5297,7 +5257,7 @@ var UniversalSettings = ({
5297
5257
  e.preventDefault();
5298
5258
  if (isSavingAccount || isCheckingSlug || isAccountReadOnly || !onSaveAccount) return;
5299
5259
  if (slug !== initialSlug && slugAvailable === false) {
5300
- import_react_hot_toast16.default.error("Please select an available address handle.");
5260
+ import_react_hot_toast15.default.error("Please select an available address handle.");
5301
5261
  return;
5302
5262
  }
5303
5263
  setIsSavingAccount(true);
@@ -5308,12 +5268,12 @@ var UniversalSettings = ({
5308
5268
  };
5309
5269
  const res = await onSaveAccount(payload);
5310
5270
  if (res.success) {
5311
- import_react_hot_toast16.default.success("Profile updated successfully.");
5271
+ import_react_hot_toast15.default.success("Profile updated successfully.");
5312
5272
  } else {
5313
- import_react_hot_toast16.default.error(res.error || "Failed to update profile.");
5273
+ import_react_hot_toast15.default.error(res.error || "Failed to update profile.");
5314
5274
  }
5315
5275
  } catch (error) {
5316
- import_react_hot_toast16.default.error("Service unavailable. Try again later.");
5276
+ import_react_hot_toast15.default.error("Service unavailable. Try again later.");
5317
5277
  } finally {
5318
5278
  setIsSavingAccount(false);
5319
5279
  }
@@ -5381,7 +5341,7 @@ var UniversalSettings = ({
5381
5341
  className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
5382
5342
  },
5383
5343
  /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ListSettingIcon, size: 16 })
5384
- ))), /* @__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()))), activeExpandedMember.departmentName && /* @__PURE__ */ import_react83.default.createElement("div", { className: "mb-8" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Assigned Department"), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[12px] text-black truncate block" }, activeExpandedMember.departmentName)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement(
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(
5385
5345
  "button",
5386
5346
  {
5387
5347
  onClick: () => setMemberToRemove(activeExpandedMember),
@@ -5525,21 +5485,14 @@ var UniversalSettings = ({
5525
5485
  className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
5526
5486
  },
5527
5487
  "Cancel"
5528
- ))))), 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-[#143731] 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-white leading-tight mb-1" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-white/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "h-8 w-32 bg-white/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-white" }), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-2xl text-white tracking-tight" }, aiCredits)), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mt-2 w-full " }, /* @__PURE__ */ import_react83.default.createElement(
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(
5529
5489
  "button",
5530
5490
  {
5531
5491
  onClick: onTopUp,
5532
- className: "px-6 py-2 rounded-full border border-white/50 bg-transparent text-white/50 text-[11px] tracking-wide transition-colors outline-none hover:bg-white/10 hover:text-white hover:border-white"
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"
5533
5493
  },
5534
5494
  "Top Up Credits"
5535
- ))), /* @__PURE__ */ import_react83.default.createElement(
5536
- "img",
5537
- {
5538
- src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/save_box.avif",
5539
- alt: "Credits",
5540
- className: "absolute bottom-2 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
5541
- }
5542
- )), /* @__PURE__ */ import_react83.default.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[11px] text-neutral-500 leading-relaxed max-w-lg" }, "AI credits are consumed when generating intelligent summaries, transcriptions, and automated huddle insights. Additional credits are billed dynamically to your primary payment method."))));
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."))));
5543
5496
  };
5544
5497
  // Annotate the CommonJS export names for ESM import in node:
5545
5498
  0 && (module.exports = {
@@ -5576,10 +5529,10 @@ var UniversalSettings = ({
5576
5529
  UniversalBuyCryptoPage,
5577
5530
  UniversalCardActionPage,
5578
5531
  UniversalCardPage,
5579
- UniversalDepartmentsPage,
5580
5532
  UniversalErrorView,
5581
5533
  UniversalHome2,
5582
5534
  UniversalHomeView,
5535
+ UniversalHuddlesPage,
5583
5536
  UniversalMembersPage,
5584
5537
  UniversalOrganizationPage,
5585
5538
  UniversalProfilePage,
package/dist/index.mjs CHANGED
@@ -1658,7 +1658,7 @@ var ConfirmationDialog = ({
1658
1658
  {
1659
1659
  onClick: onConfirm,
1660
1660
  disabled: isProcessing,
1661
- className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1661
+ className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-rose-600 hover:bg-neutral-50" : "text-black hover:bg-neutral-50"}`
1662
1662
  },
1663
1663
  isProcessing ? /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Loading03Icon6, className: "animate-spin", size: 18 }) : confirmText
1664
1664
  ))));
@@ -4526,72 +4526,72 @@ var UniversalBuyCryptoPage = ({
4526
4526
  }))))));
4527
4527
  };
4528
4528
 
4529
- // src/components/UniversalDepartmentsPage.tsx
4529
+ // src/components/UniversalHuddlesPage.tsx
4530
4530
  import React46, { useState as useState32 } from "react";
4531
- import toast12 from "react-hot-toast";
4532
4531
  import { HugeiconsIcon as HugeiconsIcon32 } from "@hugeicons/react";
4533
4532
  import {
4534
4533
  ArrowLeft01Icon as ArrowLeft01Icon13,
4535
4534
  ArrowRight01Icon as ArrowRight01Icon9,
4536
- Loading03Icon as Loading03Icon20,
4537
- CancelCircleIcon as CancelCircleIcon9
4535
+ Loading03Icon as Loading03Icon20
4538
4536
  } from "@hugeicons/core-free-icons";
4539
- var formatMembersCount = (num) => {
4540
- if (num >= 1e6) return (num / 1e6).toFixed(1) + "m";
4541
- if (num >= 1e3) return (num / 1e3).toFixed(1) + "k";
4542
- return num.toString();
4537
+ var HuddleAvatar = ({ src, status, sizeClass = "w-10 h-10" }) => {
4538
+ const [loaded, setLoaded] = useState32(false);
4539
+ const [error, setError] = useState32(false);
4540
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/default.avif";
4541
+ const finalSrc = error || !src ? defaultAvatar : src;
4542
+ const getStatusColor = () => {
4543
+ switch (status?.toUpperCase()) {
4544
+ case "SCHEDULED":
4545
+ return "bg-amber-500";
4546
+ case "ONGOING":
4547
+ return "bg-emerald-500";
4548
+ case "COMPLETED":
4549
+ return "bg-neutral-400";
4550
+ case "CANCELLED":
4551
+ return "bg-rose-500";
4552
+ default:
4553
+ return "bg-neutral-200";
4554
+ }
4555
+ };
4556
+ return /* @__PURE__ */ React46.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React46.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: Loading03Icon20, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React46.createElement(
4557
+ "img",
4558
+ {
4559
+ src: finalSrc,
4560
+ alt: "Huddle Avatar",
4561
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4562
+ onLoad: () => setLoaded(true),
4563
+ onError: () => setError(true)
4564
+ }
4565
+ )), /* @__PURE__ */ React46.createElement("div", { className: `absolute -bottom-1 -right-1 w-3.5 h-3.5 rounded-full border-2 border-white z-10 ${getStatusColor()}` }));
4543
4566
  };
4544
4567
  var PageSpinner6 = () => /* @__PURE__ */ React46.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: Loading03Icon20, size: 32, className: "animate-spin mb-4 text-black" }));
4545
- var UniversalDepartmentsPage = ({
4568
+ var UniversalHuddlesPage = ({
4546
4569
  headerTitle,
4547
4570
  headerDescription,
4548
- departments,
4571
+ huddles,
4549
4572
  isLoading,
4550
4573
  currentPage,
4551
4574
  totalPages,
4552
4575
  onPageChange,
4553
- onDepartmentClick,
4554
- onCreateDepartment
4576
+ onHuddleClick,
4577
+ onCreateHuddle
4555
4578
  }) => {
4556
- const [isCreateModalOpen, setIsCreateModalOpen] = useState32(false);
4557
- const [deptName, setDeptName] = useState32("");
4558
- const [isCreating, setIsCreating] = useState32(false);
4559
- const handleCreateSubmit = async (e) => {
4560
- e.preventDefault();
4561
- if (deptName.length < 2 || isCreating || !onCreateDepartment) return;
4562
- setIsCreating(true);
4563
- try {
4564
- await onCreateDepartment(deptName);
4565
- setDeptName("");
4566
- setIsCreateModalOpen(false);
4567
- } catch (error) {
4568
- toast12.error(error.message || "Failed to create department.");
4569
- } finally {
4570
- setIsCreating(false);
4571
- }
4572
- };
4573
- return /* @__PURE__ */ React46.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ React46.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateDepartment && /* @__PURE__ */ React46.createElement(
4579
+ return /* @__PURE__ */ React46.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-row items-center justify-between gap-4" }, /* @__PURE__ */ React46.createElement("h2", { className: "text-black text-xl tracking-tight" }, headerTitle), onCreateHuddle && /* @__PURE__ */ React46.createElement(
4574
4580
  "button",
4575
4581
  {
4576
- onClick: () => setIsCreateModalOpen(true),
4582
+ onClick: onCreateHuddle,
4577
4583
  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"
4578
4584
  },
4579
4585
  "Create new"
4580
- )), headerDescription && /* @__PURE__ */ React46.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ React46.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React46.createElement(PageSpinner6, null) : /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React46.createElement("div", null, departments.length === 0 ? /* @__PURE__ */ React46.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No departments available") : departments.map((dept) => /* @__PURE__ */ React46.createElement(
4586
+ )), headerDescription && /* @__PURE__ */ React46.createElement("p", { className: "text-[12px] text-neutral-500" }, headerDescription)), /* @__PURE__ */ React46.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React46.createElement(PageSpinner6, null) : /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React46.createElement("div", null, huddles.length === 0 ? /* @__PURE__ */ React46.createElement("p", { className: "text-[12px] text-neutral-400 py-6 text-center" }, "No huddles available") : huddles.map((huddle) => /* @__PURE__ */ React46.createElement(
4581
4587
  "div",
4582
4588
  {
4583
- key: dept.id,
4584
- onClick: () => onDepartmentClick(dept.id),
4589
+ key: huddle.id,
4590
+ onClick: () => onHuddleClick(huddle.id),
4585
4591
  className: "flex flex-row items-center gap-4 py-2 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
4586
4592
  },
4587
- /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React46.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, dept.name), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center gap-3 min-w-0" }, dept.avatars && dept.avatars.length > 0 && /* @__PURE__ */ React46.createElement("div", { className: "flex items-center -space-x-2 shrink-0" }, dept.avatars.slice(0, 4).map((src, idx) => /* @__PURE__ */ React46.createElement("div", { key: idx, className: "w-4 h-4 rounded-md bg-neutral-100 overflow-hidden shrink-0" }, /* @__PURE__ */ React46.createElement(
4588
- "img",
4589
- {
4590
- src: src || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif",
4591
- alt: "Member",
4592
- className: "w-full h-full object-cover"
4593
- }
4594
- )))), dept.totalMembers > 0 ? /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-500 truncate block" }, formatMembersCount(dept.totalMembers), " ", dept.totalMembers > 4 ? "+" : "") : /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-400 truncate block" }, "No Members"))),
4593
+ /* @__PURE__ */ React46.createElement(HuddleAvatar, { src: huddle.imageUrl, status: huddle.status }),
4594
+ /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React46.createElement("p", { className: "text-[13px] text-black tracking-tight truncate" }, huddle.name), /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-500 truncate block mt-0.5" }, huddle.timeString)),
4595
4595
  /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: ArrowRight01Icon9, size: 14, className: "shrink-0 text-neutral-400" })
4596
4596
  ))), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React46.createElement(
4597
4597
  "button",
@@ -4609,55 +4609,13 @@ var UniversalDepartmentsPage = ({
4609
4609
  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"
4610
4610
  },
4611
4611
  /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: ArrowRight01Icon9, size: 14 })
4612
- )))))), isCreateModalOpen && /* @__PURE__ */ React46.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isCreating && setIsCreateModalOpen(false) }), /* @__PURE__ */ React46.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__ */ React46.createElement("div", { className: "flex items-center justify-between pt-5 px-5 shrink-0 " }, /* @__PURE__ */ React46.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Create Department"), /* @__PURE__ */ React46.createElement(
4613
- "button",
4614
- {
4615
- onClick: () => setIsCreateModalOpen(false),
4616
- disabled: isCreating,
4617
- className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
4618
- },
4619
- /* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: CancelCircleIcon9, size: 18 })
4620
- )), /* @__PURE__ */ React46.createElement("div", { className: "p-6" }, /* @__PURE__ */ React46.createElement("form", { onSubmit: handleCreateSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React46.createElement("div", { className: "space-y-1.5" }, /* @__PURE__ */ React46.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Department Name"), /* @__PURE__ */ React46.createElement(
4621
- "input",
4622
- {
4623
- type: "text",
4624
- value: deptName,
4625
- onChange: (e) => setDeptName(e.target.value),
4626
- required: true,
4627
- autoFocus: true,
4628
- maxLength: 50,
4629
- disabled: isCreating,
4630
- className: "w-full px-2 py-3 bg-transparent text-sm border-b border-neutral-200 text-black outline-none focus:border-black transition-all duration-300 disabled:opacity-50",
4631
- placeholder: "e.g. Engineering, Marketing..."
4632
- }
4633
- )), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React46.createElement(
4634
- ThreeDActionButton,
4635
- {
4636
- type: "submit",
4637
- disabled: deptName.length < 2 || isCreating,
4638
- isLoading: isCreating,
4639
- className: "w-full"
4640
- },
4641
- "Create Department"
4642
- ), /* @__PURE__ */ React46.createElement(
4643
- "button",
4644
- {
4645
- type: "button",
4646
- onClick: () => {
4647
- setIsCreateModalOpen(false);
4648
- setDeptName("");
4649
- },
4650
- disabled: isCreating,
4651
- 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"
4652
- },
4653
- "Cancel"
4654
4612
  )))))));
4655
4613
  };
4656
4614
 
4657
4615
  // src/components/UniversalMembersPage.tsx
4658
4616
  import React47, { useState as useState33, useEffect as useEffect18, useRef as useRef12 } from "react";
4659
4617
  import { HugeiconsIcon as HugeiconsIcon33 } from "@hugeicons/react";
4660
- import toast13 from "react-hot-toast";
4618
+ import toast12 from "react-hot-toast";
4661
4619
  import {
4662
4620
  ArrowLeft01Icon as ArrowLeft01Icon14,
4663
4621
  ArrowRight01Icon as ArrowRight01Icon10,
@@ -4759,11 +4717,11 @@ var UniversalMembersPage = ({
4759
4717
  setIsRemoving(true);
4760
4718
  try {
4761
4719
  await onRemoveMember(memberToRemove.id);
4762
- toast13.success("Member removed successfully.");
4720
+ toast12.success("Member removed successfully.");
4763
4721
  setExpandedId(null);
4764
4722
  setMemberToRemove(null);
4765
4723
  } catch (error) {
4766
- toast13.error("Failed to remove member.");
4724
+ toast12.error("Failed to remove member.");
4767
4725
  } finally {
4768
4726
  setIsRemoving(false);
4769
4727
  }
@@ -4777,7 +4735,7 @@ var UniversalMembersPage = ({
4777
4735
  setInviteEmail("");
4778
4736
  setIsInviteMode(false);
4779
4737
  } catch (error) {
4780
- toast13.error(error.message || "Failed to send invitation.");
4738
+ toast12.error(error.message || "Failed to send invitation.");
4781
4739
  } finally {
4782
4740
  setIsInviting(false);
4783
4741
  }
@@ -4924,24 +4882,38 @@ var UniversalMembersPage = ({
4924
4882
  import React48, { useState as useState34 } from "react";
4925
4883
  import { useRouter as useRouter3 } from "next/navigation";
4926
4884
  import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
4927
- import toast14 from "react-hot-toast";
4885
+ import toast13 from "react-hot-toast";
4928
4886
  import {
4929
4887
  Loading03Icon as Loading03Icon22,
4930
4888
  Notification01Icon as Notification01Icon2,
4931
4889
  ArrowLeft01Icon as ArrowLeft01Icon15,
4932
4890
  ArrowRight01Icon as ArrowRight01Icon11,
4933
- CancelCircleIcon as CancelCircleIcon10,
4891
+ CancelCircleIcon as CancelCircleIcon9,
4934
4892
  ArrowUpRight01Icon as ArrowUpRight01Icon3,
4935
4893
  Settings03Icon,
4936
4894
  Logout01Icon
4937
4895
  } from "@hugeicons/core-free-icons";
4896
+ var OrgAvatar = ({ src, sizeClass = "w-10 h-10" }) => {
4897
+ const [loaded, setLoaded] = useState34(false);
4898
+ const [error, setError] = useState34(false);
4899
+ const defaultAvatar = "https://storage.googleapis.com/retina-cloud-v2/assets/images/office.avif";
4900
+ const finalSrc = error || !src ? defaultAvatar : src;
4901
+ return /* @__PURE__ */ React48.createElement("div", { className: `relative shrink-0 ${sizeClass}` }, /* @__PURE__ */ React48.createElement("div", { className: "w-full h-full rounded-lg bg-neutral-100 flex items-center justify-center overflow-hidden" }, !loaded && !error && /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Loading03Icon22, className: "animate-spin text-neutral-400 absolute", size: 14 }), /* @__PURE__ */ React48.createElement(
4902
+ "img",
4903
+ {
4904
+ src: finalSrc,
4905
+ alt: "Workspace Avatar",
4906
+ className: `w-full h-full object-cover transition-opacity duration-300 ${loaded || error ? "opacity-100" : "opacity-0"}`,
4907
+ onLoad: () => setLoaded(true),
4908
+ onError: () => setError(true)
4909
+ }
4910
+ )));
4911
+ };
4938
4912
  var UniversalHome2 = ({
4939
4913
  avatarSrc,
4940
- userStatus = "ACTIVE",
4941
4914
  organizations = [],
4942
4915
  activeOrgId,
4943
4916
  onOrganizationSelect,
4944
- barIcons = [],
4945
4917
  createHuddleAction,
4946
4918
  joinHuddleAction,
4947
4919
  notifications = [],
@@ -4953,7 +4925,7 @@ var UniversalHome2 = ({
4953
4925
  onResolveInvite,
4954
4926
  formatNotifDate,
4955
4927
  customContent,
4956
- departmentsProps,
4928
+ huddlesProps,
4957
4929
  onLogout
4958
4930
  }) => {
4959
4931
  const [isAvatarLoaded, setIsAvatarLoaded] = useState34(false);
@@ -4967,27 +4939,13 @@ var UniversalHome2 = ({
4967
4939
  const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
4968
4940
  const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
4969
4941
  const hasUnreadNotifs = notifications.some((n) => !n.isRead);
4970
- const getDisplayStatus = () => {
4971
- if (userStatus === "ACTIVE") return "Online";
4972
- if (userStatus === "BUSY") return "Busy";
4973
- if (userStatus === "OFFLINE") return "Offline";
4974
- if (userStatus === "AWAY") return "Away";
4975
- return "Online";
4976
- };
4977
- const getStatusColor = () => {
4978
- if (userStatus === "ACTIVE") return "bg-emerald-500";
4979
- if (userStatus === "BUSY") return "bg-amber-500";
4980
- if (userStatus === "OFFLINE") return "bg-rose-500";
4981
- if (userStatus === "AWAY") return "bg-neutral-400";
4982
- return "bg-emerald-500";
4983
- };
4984
4942
  const handleResolve = async (resolution) => {
4985
4943
  if (!onResolveInvite || !selectedNotif) return;
4986
4944
  setIsResolving(true);
4987
4945
  try {
4988
4946
  await onResolveInvite(selectedNotif, resolution);
4989
4947
  } catch (error) {
4990
- toast14.error("Failed to process invitation");
4948
+ toast13.error("Failed to process invitation");
4991
4949
  } finally {
4992
4950
  setIsResolving(false);
4993
4951
  }
@@ -4997,7 +4955,7 @@ var UniversalHome2 = ({
4997
4955
  try {
4998
4956
  if (onLogout) await onLogout();
4999
4957
  } catch (e) {
5000
- toast14.error("Failed to log out cleanly.");
4958
+ toast13.error("Failed to log out cleanly.");
5001
4959
  } finally {
5002
4960
  setIsLoggingOut(false);
5003
4961
  setShowLogoutConfirm(false);
@@ -5073,11 +5031,11 @@ var UniversalHome2 = ({
5073
5031
  }
5074
5032
  )
5075
5033
  ))), customContent && /* @__PURE__ */ React48.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ React48.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ React48.createElement(
5076
- UniversalDepartmentsPage,
5034
+ UniversalHuddlesPage,
5077
5035
  {
5078
- ...departmentsProps
5036
+ ...huddlesProps
5079
5037
  }
5080
- )), showOrgSwitcher && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: CancelCircleIcon10, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ React48.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ React48.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ React48.createElement(
5038
+ )), showOrgSwitcher && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowOrgSwitcher(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Switch Workspace"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowOrgSwitcher(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: CancelCircleIcon9, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, /* @__PURE__ */ React48.createElement("div", { className: "flex flex-col" }, organizations?.length === 0 ? /* @__PURE__ */ React48.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "No organizations found.") : organizations?.map((org) => /* @__PURE__ */ React48.createElement(
5081
5039
  "button",
5082
5040
  {
5083
5041
  key: org.id,
@@ -5087,6 +5045,7 @@ var UniversalHome2 = ({
5087
5045
  },
5088
5046
  className: `p-4 flex items-center justify-between gap-3 cursor-pointer outline-none transition-colors border-b border-neutral-50 last:border-0 ${activeOrgId === org.id ? "bg-neutral-50" : "hover:bg-neutral-50/50"}`
5089
5047
  },
5048
+ /* @__PURE__ */ React48.createElement(OrgAvatar, { src: org.avatarUrl }),
5090
5049
  /* @__PURE__ */ React48.createElement("div", { className: "flex flex-col items-start min-w-0 flex-1" }, /* @__PURE__ */ React48.createElement("span", { className: `text-[13px] tracking-tight truncate w-full text-left ${activeOrgId === org.id ? "text-black " : "text-neutral-600"}` }, org.name), /* @__PURE__ */ React48.createElement("span", { className: "text-[11px] text-[#068afe] capitalize truncate w-full text-left mt-0.5" }, org.role?.toLowerCase() || "Member")),
5091
5050
  activeOrgId === org.id && /* @__PURE__ */ React48.createElement("div", { className: "w-2 h-2 rounded-full bg-[#068afe] shrink-0" })
5092
5051
  )))), /* @__PURE__ */ React48.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ React48.createElement(
@@ -5100,7 +5059,7 @@ var UniversalHome2 = ({
5100
5059
  },
5101
5060
  /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Logout01Icon, size: 15 }),
5102
5061
  "Log Out"
5103
- )))), showNotifDialog && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React48.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: ArrowLeft01Icon15, size: 14 }), " Back") : /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: CancelCircleIcon10, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Loading03Icon22, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React48.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ React48.createElement("h4", { className: "text-[14px] text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React48.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React48.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && !selectedNotif.meta_json?.completed && /* @__PURE__ */ React48.createElement("div", { className: "mt-8 flex gap-3 pt-6 " }, /* @__PURE__ */ React48.createElement(
5062
+ )))), showNotifDialog && /* @__PURE__ */ React48.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React48.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__ */ React48.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, selectedNotif ? /* @__PURE__ */ React48.createElement("button", { onClick: () => setSelectedNotif(null), disabled: isResolving, className: "text-[#068afe] hover:text-[#068afe] transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: ArrowLeft01Icon15, size: 14 }), " Back") : /* @__PURE__ */ React48.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications"), /* @__PURE__ */ React48.createElement("button", { onClick: () => setShowNotifDialog(false), disabled: isResolving, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: CancelCircleIcon9, size: 18 }))), /* @__PURE__ */ React48.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2 relative" }, isNotifsLoading && !selectedNotif && /* @__PURE__ */ React48.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Loading03Icon22, size: 28, className: "animate-spin text-black" })), selectedNotif ? /* @__PURE__ */ React48.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ React48.createElement("h4", { className: "text-[14px] text-black mb-1" }, selectedNotif.title), /* @__PURE__ */ React48.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block" }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React48.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message), selectedNotif.type === "HUDDLE_INVITE" && selectedNotif.meta_json?.action === "RESOLVE_INVITE" && !selectedNotif.meta_json?.completed && /* @__PURE__ */ React48.createElement("div", { className: "mt-8 flex gap-3 pt-6 " }, /* @__PURE__ */ React48.createElement(
5104
5063
  "button",
5105
5064
  {
5106
5065
  onClick: () => handleResolve("ACCEPTED"),
@@ -5149,7 +5108,7 @@ var UniversalHome2 = ({
5149
5108
 
5150
5109
  // src/components/UniversalSettings.tsx
5151
5110
  import React49, { useState as useState35, useEffect as useEffect19, useRef as useRef13 } from "react";
5152
- import toast15 from "react-hot-toast";
5111
+ import toast14 from "react-hot-toast";
5153
5112
  import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
5154
5113
  import {
5155
5114
  ArrowLeft01Icon as ArrowLeft01Icon16,
@@ -5278,11 +5237,11 @@ var UniversalSettings = ({
5278
5237
  setIsRemoving(true);
5279
5238
  try {
5280
5239
  await onRemoveMember(memberToRemove.userId);
5281
- toast15.success("Member removed successfully.");
5240
+ toast14.success("Member removed successfully.");
5282
5241
  setExpandedId(null);
5283
5242
  setMemberToRemove(null);
5284
5243
  } catch (error) {
5285
- toast15.error("Failed to remove member.");
5244
+ toast14.error("Failed to remove member.");
5286
5245
  } finally {
5287
5246
  setIsRemoving(false);
5288
5247
  }
@@ -5296,7 +5255,7 @@ var UniversalSettings = ({
5296
5255
  setInviteEmail("");
5297
5256
  setIsInviteMode(false);
5298
5257
  } catch (error) {
5299
- toast15.error(error.message || "Failed to send invitation.");
5258
+ toast14.error(error.message || "Failed to send invitation.");
5300
5259
  } finally {
5301
5260
  setIsInviting(false);
5302
5261
  }
@@ -5339,7 +5298,7 @@ var UniversalSettings = ({
5339
5298
  e.preventDefault();
5340
5299
  if (isSavingAccount || isCheckingSlug || isAccountReadOnly || !onSaveAccount) return;
5341
5300
  if (slug !== initialSlug && slugAvailable === false) {
5342
- toast15.error("Please select an available address handle.");
5301
+ toast14.error("Please select an available address handle.");
5343
5302
  return;
5344
5303
  }
5345
5304
  setIsSavingAccount(true);
@@ -5350,12 +5309,12 @@ var UniversalSettings = ({
5350
5309
  };
5351
5310
  const res = await onSaveAccount(payload);
5352
5311
  if (res.success) {
5353
- toast15.success("Profile updated successfully.");
5312
+ toast14.success("Profile updated successfully.");
5354
5313
  } else {
5355
- toast15.error(res.error || "Failed to update profile.");
5314
+ toast14.error(res.error || "Failed to update profile.");
5356
5315
  }
5357
5316
  } catch (error) {
5358
- toast15.error("Service unavailable. Try again later.");
5317
+ toast14.error("Service unavailable. Try again later.");
5359
5318
  } finally {
5360
5319
  setIsSavingAccount(false);
5361
5320
  }
@@ -5423,7 +5382,7 @@ var UniversalSettings = ({
5423
5382
  className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
5424
5383
  },
5425
5384
  /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: ListSettingIcon3, size: 16 })
5426
- ))), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React49.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React49.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ React49.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React49.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React49.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), activeExpandedMember.departmentName && /* @__PURE__ */ React49.createElement("div", { className: "mb-8" }, /* @__PURE__ */ React49.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Assigned Department"), /* @__PURE__ */ React49.createElement("span", { className: "text-[12px] text-black truncate block" }, activeExpandedMember.departmentName)), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ React49.createElement(
5385
+ ))), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ React49.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ React49.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ React49.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React49.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ React49.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ React49.createElement(
5427
5386
  "button",
5428
5387
  {
5429
5388
  onClick: () => setMemberToRemove(activeExpandedMember),
@@ -5567,21 +5526,14 @@ var UniversalSettings = ({
5567
5526
  className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
5568
5527
  },
5569
5528
  "Cancel"
5570
- ))))), activeTab === "BILLING" && /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React49.createElement("div", { className: "bg-[#143731] rounded-3xl p-6 relative overflow-hidden flex flex-col w-full mt-2" }, /* @__PURE__ */ React49.createElement("div", { className: "relative z-10 flex flex-col items-start w-full" }, /* @__PURE__ */ React49.createElement("p", { className: "text-[11px] text-white leading-tight mb-1" }, /* @__PURE__ */ React49.createElement("span", { className: "text-white/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ React49.createElement("div", { className: "h-8 w-32 bg-white/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: Coins01Icon, size: 24, className: "text-white" }), /* @__PURE__ */ React49.createElement("span", { className: "text-2xl text-white tracking-tight" }, aiCredits)), /* @__PURE__ */ React49.createElement("div", { className: "mt-2 w-full " }, /* @__PURE__ */ React49.createElement(
5529
+ ))))), activeTab === "BILLING" && /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React49.createElement("div", { className: "bg-[#ffffff] rounded-3xl p-6 relative overflow-hidden flex flex-col w-full mt-2" }, /* @__PURE__ */ React49.createElement("div", { className: "relative z-10 flex flex-col items-start w-full" }, /* @__PURE__ */ React49.createElement("p", { className: "text-[11px] text-black leading-tight mb-1" }, /* @__PURE__ */ React49.createElement("span", { className: "text-black/60" }, "AI Credits Balance")), isBillingLoading ? /* @__PURE__ */ React49.createElement("div", { className: "h-8 w-32 bg-black/10 animate-pulse rounded mt-2" }) : /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: Coins01Icon, size: 24, className: "text-black" }), /* @__PURE__ */ React49.createElement("span", { className: "text-2xl text-black tracking-tight" }, aiCredits)), /* @__PURE__ */ React49.createElement("div", { className: "mt-2 w-full " }, /* @__PURE__ */ React49.createElement(
5571
5530
  "button",
5572
5531
  {
5573
5532
  onClick: onTopUp,
5574
- className: "px-6 py-2 rounded-full border border-white/50 bg-transparent text-white/50 text-[11px] tracking-wide transition-colors outline-none hover:bg-white/10 hover:text-white hover:border-white"
5533
+ 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"
5575
5534
  },
5576
5535
  "Top Up Credits"
5577
- ))), /* @__PURE__ */ React49.createElement(
5578
- "img",
5579
- {
5580
- src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/save_box.avif",
5581
- alt: "Credits",
5582
- className: "absolute bottom-2 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
5583
- }
5584
- )), /* @__PURE__ */ React49.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ React49.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."))));
5536
+ )))), /* @__PURE__ */ React49.createElement("div", { className: "mt-4 px-1" }, /* @__PURE__ */ React49.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."))));
5585
5537
  };
5586
5538
  export {
5587
5539
  AppBento2,
@@ -5617,10 +5569,10 @@ export {
5617
5569
  UniversalBuyCryptoPage,
5618
5570
  UniversalCardActionPage,
5619
5571
  UniversalCardPage,
5620
- UniversalDepartmentsPage,
5621
5572
  UniversalErrorView,
5622
5573
  UniversalHome2,
5623
5574
  UniversalHomeView,
5575
+ UniversalHuddlesPage,
5624
5576
  UniversalMembersPage,
5625
5577
  UniversalOrganizationPage,
5626
5578
  UniversalProfilePage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "16.1.90",
3
+ "version": "16.1.95",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",