@retinalabsllc/zairusjs 16.1.80 → 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 +13 -11
- package/dist/index.d.ts +13 -11
- package/dist/index.js +95 -137
- package/dist/index.mjs +98 -141
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -780,6 +780,8 @@ interface ContentGridBlockProps {
|
|
|
780
780
|
bgColor_2?: string;
|
|
781
781
|
bgDeco_1?: string;
|
|
782
782
|
bgDeco_2?: string;
|
|
783
|
+
bgDecoRotation_1?: string;
|
|
784
|
+
bgDecoRotation_2?: string;
|
|
783
785
|
}
|
|
784
786
|
declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
|
|
785
787
|
|
|
@@ -976,24 +978,25 @@ interface UniversalBuyCryptoPageProps {
|
|
|
976
978
|
}
|
|
977
979
|
declare const UniversalBuyCryptoPage: React.FC<UniversalBuyCryptoPageProps>;
|
|
978
980
|
|
|
979
|
-
interface
|
|
981
|
+
interface UniversalHuddle {
|
|
980
982
|
id: string;
|
|
981
983
|
name: string;
|
|
982
|
-
|
|
983
|
-
|
|
984
|
+
status: string;
|
|
985
|
+
imageUrl?: string | null;
|
|
986
|
+
timeString: string;
|
|
984
987
|
}
|
|
985
|
-
interface
|
|
988
|
+
interface UniversalHuddlesPageProps {
|
|
986
989
|
headerTitle: string;
|
|
987
990
|
headerDescription: string;
|
|
988
|
-
|
|
991
|
+
huddles: UniversalHuddle[];
|
|
989
992
|
isLoading: boolean;
|
|
990
993
|
currentPage: number;
|
|
991
994
|
totalPages: number;
|
|
992
995
|
onPageChange: (page: number) => void;
|
|
993
|
-
|
|
994
|
-
|
|
996
|
+
onHuddleClick: (huddleId: string) => void;
|
|
997
|
+
onCreateHuddle?: () => void;
|
|
995
998
|
}
|
|
996
|
-
declare const
|
|
999
|
+
declare const UniversalHuddlesPage: React.FC<UniversalHuddlesPageProps>;
|
|
997
1000
|
|
|
998
1001
|
interface UniversalMember {
|
|
999
1002
|
id: string;
|
|
@@ -1063,7 +1066,7 @@ interface UniversalHome2Props {
|
|
|
1063
1066
|
onResolveInvite?: (notif: NotificationItem2, resolution: 'ACCEPTED' | 'REJECTED') => Promise<void>;
|
|
1064
1067
|
formatNotifDate: (date: string | Date) => string;
|
|
1065
1068
|
customContent?: React.ReactNode;
|
|
1066
|
-
|
|
1069
|
+
huddlesProps: UniversalHuddlesPageProps;
|
|
1067
1070
|
onLogout?: () => Promise<void>;
|
|
1068
1071
|
}
|
|
1069
1072
|
declare const UniversalHome2: React.FC<UniversalHome2Props>;
|
|
@@ -1075,7 +1078,6 @@ interface UniversalMember2 {
|
|
|
1075
1078
|
avatarUrl?: string | null;
|
|
1076
1079
|
status: 'ACTIVE' | 'BUSY' | 'AWAY' | 'OFFLINE' | string;
|
|
1077
1080
|
role: string;
|
|
1078
|
-
departmentName?: string;
|
|
1079
1081
|
}
|
|
1080
1082
|
interface UniversalSettingsProps {
|
|
1081
1083
|
accountType: 'INDIVIDUAL' | 'ORGANIZATION';
|
|
@@ -1113,4 +1115,4 @@ interface UniversalSettingsProps {
|
|
|
1113
1115
|
}
|
|
1114
1116
|
declare const UniversalSettings: React.FC<UniversalSettingsProps>;
|
|
1115
1117
|
|
|
1116
|
-
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
|
|
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
|
@@ -780,6 +780,8 @@ interface ContentGridBlockProps {
|
|
|
780
780
|
bgColor_2?: string;
|
|
781
781
|
bgDeco_1?: string;
|
|
782
782
|
bgDeco_2?: string;
|
|
783
|
+
bgDecoRotation_1?: string;
|
|
784
|
+
bgDecoRotation_2?: string;
|
|
783
785
|
}
|
|
784
786
|
declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
|
|
785
787
|
|
|
@@ -976,24 +978,25 @@ interface UniversalBuyCryptoPageProps {
|
|
|
976
978
|
}
|
|
977
979
|
declare const UniversalBuyCryptoPage: React.FC<UniversalBuyCryptoPageProps>;
|
|
978
980
|
|
|
979
|
-
interface
|
|
981
|
+
interface UniversalHuddle {
|
|
980
982
|
id: string;
|
|
981
983
|
name: string;
|
|
982
|
-
|
|
983
|
-
|
|
984
|
+
status: string;
|
|
985
|
+
imageUrl?: string | null;
|
|
986
|
+
timeString: string;
|
|
984
987
|
}
|
|
985
|
-
interface
|
|
988
|
+
interface UniversalHuddlesPageProps {
|
|
986
989
|
headerTitle: string;
|
|
987
990
|
headerDescription: string;
|
|
988
|
-
|
|
991
|
+
huddles: UniversalHuddle[];
|
|
989
992
|
isLoading: boolean;
|
|
990
993
|
currentPage: number;
|
|
991
994
|
totalPages: number;
|
|
992
995
|
onPageChange: (page: number) => void;
|
|
993
|
-
|
|
994
|
-
|
|
996
|
+
onHuddleClick: (huddleId: string) => void;
|
|
997
|
+
onCreateHuddle?: () => void;
|
|
995
998
|
}
|
|
996
|
-
declare const
|
|
999
|
+
declare const UniversalHuddlesPage: React.FC<UniversalHuddlesPageProps>;
|
|
997
1000
|
|
|
998
1001
|
interface UniversalMember {
|
|
999
1002
|
id: string;
|
|
@@ -1063,7 +1066,7 @@ interface UniversalHome2Props {
|
|
|
1063
1066
|
onResolveInvite?: (notif: NotificationItem2, resolution: 'ACCEPTED' | 'REJECTED') => Promise<void>;
|
|
1064
1067
|
formatNotifDate: (date: string | Date) => string;
|
|
1065
1068
|
customContent?: React.ReactNode;
|
|
1066
|
-
|
|
1069
|
+
huddlesProps: UniversalHuddlesPageProps;
|
|
1067
1070
|
onLogout?: () => Promise<void>;
|
|
1068
1071
|
}
|
|
1069
1072
|
declare const UniversalHome2: React.FC<UniversalHome2Props>;
|
|
@@ -1075,7 +1078,6 @@ interface UniversalMember2 {
|
|
|
1075
1078
|
avatarUrl?: string | null;
|
|
1076
1079
|
status: 'ACTIVE' | 'BUSY' | 'AWAY' | 'OFFLINE' | string;
|
|
1077
1080
|
role: string;
|
|
1078
|
-
departmentName?: string;
|
|
1079
1081
|
}
|
|
1080
1082
|
interface UniversalSettingsProps {
|
|
1081
1083
|
accountType: 'INDIVIDUAL' | 'ORGANIZATION';
|
|
@@ -1113,4 +1115,4 @@ interface UniversalSettingsProps {
|
|
|
1113
1115
|
}
|
|
1114
1116
|
declare const UniversalSettings: React.FC<UniversalSettingsProps>;
|
|
1115
1117
|
|
|
1116
|
-
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
|
|
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-
|
|
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
|
))));
|
|
@@ -3621,12 +3621,17 @@ var ContentGridBlock = ({
|
|
|
3621
3621
|
bgColor_1,
|
|
3622
3622
|
bgColor_2,
|
|
3623
3623
|
bgDeco_1,
|
|
3624
|
-
bgDeco_2
|
|
3624
|
+
bgDeco_2,
|
|
3625
|
+
bgDecoRotation_1,
|
|
3626
|
+
bgDecoRotation_2
|
|
3625
3627
|
}) => {
|
|
3626
3628
|
return /* @__PURE__ */ import_react62.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react62.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react62.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[14px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react62.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-100 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react62.default.createElement("div", null, /* @__PURE__ */ import_react62.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react62.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react62.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative mx-h-95" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react62.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react62.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "grow flex flex-col mt-10 justify-center items-center py-6" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-200 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react62.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react62.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react62.default.createElement("div", null, /* @__PURE__ */ import_react62.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react62.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react62.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[14px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => {
|
|
3627
3629
|
const isSecondCard = idx === 1;
|
|
3628
|
-
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#
|
|
3629
|
-
const
|
|
3630
|
+
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#ffffff]" : bgColor_1 || "bg-[#068afe]";
|
|
3631
|
+
const defaultDeco_a = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_a.avif";
|
|
3632
|
+
const defaultDeco_b = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_b.avif";
|
|
3633
|
+
const bgDecoImage = isSecondCard ? bgDeco_2 || defaultDeco_b : bgDeco_1 || defaultDeco_a;
|
|
3634
|
+
const rotationClass = isSecondCard ? bgDecoRotation_2 || "-rotate-12" : bgDecoRotation_1 || "rotate-90";
|
|
3630
3635
|
return /* @__PURE__ */ import_react62.default.createElement(
|
|
3631
3636
|
"div",
|
|
3632
3637
|
{
|
|
@@ -3638,7 +3643,7 @@ var ContentGridBlock = ({
|
|
|
3638
3643
|
{
|
|
3639
3644
|
src: bgDecoImage,
|
|
3640
3645
|
alt: "Decorative background",
|
|
3641
|
-
className:
|
|
3646
|
+
className: `absolute bottom-0 right-0 translate-x-1/4 translate-y-1/4 w-52 sm:w-60 h-auto object-contain z-10 pointer-events-none opacity-30 ${rotationClass}`
|
|
3642
3647
|
}
|
|
3643
3648
|
),
|
|
3644
3649
|
/* @__PURE__ */ import_react62.default.createElement("div", { className: `absolute inset-0 z-20 pointer-events-none ${isSecondCard ? "" : "bg-black/20"}` }),
|
|
@@ -4509,67 +4514,68 @@ var UniversalBuyCryptoPage = ({
|
|
|
4509
4514
|
}))))));
|
|
4510
4515
|
};
|
|
4511
4516
|
|
|
4512
|
-
// src/components/
|
|
4517
|
+
// src/components/UniversalHuddlesPage.tsx
|
|
4513
4518
|
var import_react77 = __toESM(require("react"));
|
|
4514
|
-
var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
|
|
4515
4519
|
var import_react78 = require("@hugeicons/react");
|
|
4516
4520
|
var import_core_free_icons27 = require("@hugeicons/core-free-icons");
|
|
4517
|
-
var
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
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()}` }));
|
|
4521
4550
|
};
|
|
4522
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" }));
|
|
4523
|
-
var
|
|
4552
|
+
var UniversalHuddlesPage = ({
|
|
4524
4553
|
headerTitle,
|
|
4525
4554
|
headerDescription,
|
|
4526
|
-
|
|
4555
|
+
huddles,
|
|
4527
4556
|
isLoading,
|
|
4528
4557
|
currentPage,
|
|
4529
4558
|
totalPages,
|
|
4530
4559
|
onPageChange,
|
|
4531
|
-
|
|
4532
|
-
|
|
4560
|
+
onHuddleClick,
|
|
4561
|
+
onCreateHuddle
|
|
4533
4562
|
}) => {
|
|
4534
|
-
|
|
4535
|
-
const [deptName, setDeptName] = (0, import_react77.useState)("");
|
|
4536
|
-
const [isCreating, setIsCreating] = (0, import_react77.useState)(false);
|
|
4537
|
-
const handleCreateSubmit = async (e) => {
|
|
4538
|
-
e.preventDefault();
|
|
4539
|
-
if (deptName.length < 2 || isCreating || !onCreateDepartment) return;
|
|
4540
|
-
setIsCreating(true);
|
|
4541
|
-
try {
|
|
4542
|
-
await onCreateDepartment(deptName);
|
|
4543
|
-
setDeptName("");
|
|
4544
|
-
setIsCreateModalOpen(false);
|
|
4545
|
-
} catch (error) {
|
|
4546
|
-
import_react_hot_toast13.default.error(error.message || "Failed to create department.");
|
|
4547
|
-
} finally {
|
|
4548
|
-
setIsCreating(false);
|
|
4549
|
-
}
|
|
4550
|
-
};
|
|
4551
|
-
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(
|
|
4552
4564
|
"button",
|
|
4553
4565
|
{
|
|
4554
|
-
onClick:
|
|
4566
|
+
onClick: onCreateHuddle,
|
|
4555
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"
|
|
4556
4568
|
},
|
|
4557
4569
|
"Create new"
|
|
4558
|
-
)), 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,
|
|
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(
|
|
4559
4571
|
"div",
|
|
4560
4572
|
{
|
|
4561
|
-
key:
|
|
4562
|
-
onClick: () =>
|
|
4573
|
+
key: huddle.id,
|
|
4574
|
+
onClick: () => onHuddleClick(huddle.id),
|
|
4563
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"
|
|
4564
4576
|
},
|
|
4565
|
-
/* @__PURE__ */ import_react77.default.createElement(
|
|
4566
|
-
|
|
4567
|
-
{
|
|
4568
|
-
src: src || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif",
|
|
4569
|
-
alt: "Member",
|
|
4570
|
-
className: "w-full h-full object-cover"
|
|
4571
|
-
}
|
|
4572
|
-
)))), 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)),
|
|
4573
4579
|
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14, className: "shrink-0 text-neutral-400" })
|
|
4574
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(
|
|
4575
4581
|
"button",
|
|
@@ -4587,55 +4593,13 @@ var UniversalDepartmentsPage = ({
|
|
|
4587
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"
|
|
4588
4594
|
},
|
|
4589
4595
|
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.ArrowRight01Icon, size: 14 })
|
|
4590
|
-
)))))), 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(
|
|
4591
|
-
"button",
|
|
4592
|
-
{
|
|
4593
|
-
onClick: () => setIsCreateModalOpen(false),
|
|
4594
|
-
disabled: isCreating,
|
|
4595
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4596
|
-
},
|
|
4597
|
-
/* @__PURE__ */ import_react77.default.createElement(import_react78.HugeiconsIcon, { icon: import_core_free_icons27.CancelCircleIcon, size: 18 })
|
|
4598
|
-
)), /* @__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(
|
|
4599
|
-
"input",
|
|
4600
|
-
{
|
|
4601
|
-
type: "text",
|
|
4602
|
-
value: deptName,
|
|
4603
|
-
onChange: (e) => setDeptName(e.target.value),
|
|
4604
|
-
required: true,
|
|
4605
|
-
autoFocus: true,
|
|
4606
|
-
maxLength: 50,
|
|
4607
|
-
disabled: isCreating,
|
|
4608
|
-
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",
|
|
4609
|
-
placeholder: "e.g. Engineering, Marketing..."
|
|
4610
|
-
}
|
|
4611
|
-
)), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react77.default.createElement(
|
|
4612
|
-
ThreeDActionButton,
|
|
4613
|
-
{
|
|
4614
|
-
type: "submit",
|
|
4615
|
-
disabled: deptName.length < 2 || isCreating,
|
|
4616
|
-
isLoading: isCreating,
|
|
4617
|
-
className: "w-full"
|
|
4618
|
-
},
|
|
4619
|
-
"Create Department"
|
|
4620
|
-
), /* @__PURE__ */ import_react77.default.createElement(
|
|
4621
|
-
"button",
|
|
4622
|
-
{
|
|
4623
|
-
type: "button",
|
|
4624
|
-
onClick: () => {
|
|
4625
|
-
setIsCreateModalOpen(false);
|
|
4626
|
-
setDeptName("");
|
|
4627
|
-
},
|
|
4628
|
-
disabled: isCreating,
|
|
4629
|
-
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"
|
|
4630
|
-
},
|
|
4631
|
-
"Cancel"
|
|
4632
4596
|
)))))));
|
|
4633
4597
|
};
|
|
4634
4598
|
|
|
4635
4599
|
// src/components/UniversalMembersPage.tsx
|
|
4636
4600
|
var import_react79 = __toESM(require("react"));
|
|
4637
4601
|
var import_react80 = require("@hugeicons/react");
|
|
4638
|
-
var
|
|
4602
|
+
var import_react_hot_toast13 = __toESM(require("react-hot-toast"));
|
|
4639
4603
|
var import_core_free_icons28 = require("@hugeicons/core-free-icons");
|
|
4640
4604
|
var MemberAvatar = ({ src, status }) => {
|
|
4641
4605
|
const [loaded, setLoaded] = (0, import_react79.useState)(false);
|
|
@@ -4730,11 +4694,11 @@ var UniversalMembersPage = ({
|
|
|
4730
4694
|
setIsRemoving(true);
|
|
4731
4695
|
try {
|
|
4732
4696
|
await onRemoveMember(memberToRemove.id);
|
|
4733
|
-
|
|
4697
|
+
import_react_hot_toast13.default.success("Member removed successfully.");
|
|
4734
4698
|
setExpandedId(null);
|
|
4735
4699
|
setMemberToRemove(null);
|
|
4736
4700
|
} catch (error) {
|
|
4737
|
-
|
|
4701
|
+
import_react_hot_toast13.default.error("Failed to remove member.");
|
|
4738
4702
|
} finally {
|
|
4739
4703
|
setIsRemoving(false);
|
|
4740
4704
|
}
|
|
@@ -4748,7 +4712,7 @@ var UniversalMembersPage = ({
|
|
|
4748
4712
|
setInviteEmail("");
|
|
4749
4713
|
setIsInviteMode(false);
|
|
4750
4714
|
} catch (error) {
|
|
4751
|
-
|
|
4715
|
+
import_react_hot_toast13.default.error(error.message || "Failed to send invitation.");
|
|
4752
4716
|
} finally {
|
|
4753
4717
|
setIsInviting(false);
|
|
4754
4718
|
}
|
|
@@ -4895,15 +4859,29 @@ var UniversalMembersPage = ({
|
|
|
4895
4859
|
var import_react81 = __toESM(require("react"));
|
|
4896
4860
|
var import_navigation6 = require("next/navigation");
|
|
4897
4861
|
var import_react82 = require("@hugeicons/react");
|
|
4898
|
-
var
|
|
4862
|
+
var import_react_hot_toast14 = __toESM(require("react-hot-toast"));
|
|
4899
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
|
+
};
|
|
4900
4880
|
var UniversalHome2 = ({
|
|
4901
4881
|
avatarSrc,
|
|
4902
|
-
userStatus = "ACTIVE",
|
|
4903
4882
|
organizations = [],
|
|
4904
4883
|
activeOrgId,
|
|
4905
4884
|
onOrganizationSelect,
|
|
4906
|
-
barIcons = [],
|
|
4907
4885
|
createHuddleAction,
|
|
4908
4886
|
joinHuddleAction,
|
|
4909
4887
|
notifications = [],
|
|
@@ -4915,7 +4893,7 @@ var UniversalHome2 = ({
|
|
|
4915
4893
|
onResolveInvite,
|
|
4916
4894
|
formatNotifDate,
|
|
4917
4895
|
customContent,
|
|
4918
|
-
|
|
4896
|
+
huddlesProps,
|
|
4919
4897
|
onLogout
|
|
4920
4898
|
}) => {
|
|
4921
4899
|
const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react81.useState)(false);
|
|
@@ -4929,27 +4907,13 @@ var UniversalHome2 = ({
|
|
|
4929
4907
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4930
4908
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
4931
4909
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
4932
|
-
const getDisplayStatus = () => {
|
|
4933
|
-
if (userStatus === "ACTIVE") return "Online";
|
|
4934
|
-
if (userStatus === "BUSY") return "Busy";
|
|
4935
|
-
if (userStatus === "OFFLINE") return "Offline";
|
|
4936
|
-
if (userStatus === "AWAY") return "Away";
|
|
4937
|
-
return "Online";
|
|
4938
|
-
};
|
|
4939
|
-
const getStatusColor = () => {
|
|
4940
|
-
if (userStatus === "ACTIVE") return "bg-emerald-500";
|
|
4941
|
-
if (userStatus === "BUSY") return "bg-amber-500";
|
|
4942
|
-
if (userStatus === "OFFLINE") return "bg-rose-500";
|
|
4943
|
-
if (userStatus === "AWAY") return "bg-neutral-400";
|
|
4944
|
-
return "bg-emerald-500";
|
|
4945
|
-
};
|
|
4946
4910
|
const handleResolve = async (resolution) => {
|
|
4947
4911
|
if (!onResolveInvite || !selectedNotif) return;
|
|
4948
4912
|
setIsResolving(true);
|
|
4949
4913
|
try {
|
|
4950
4914
|
await onResolveInvite(selectedNotif, resolution);
|
|
4951
4915
|
} catch (error) {
|
|
4952
|
-
|
|
4916
|
+
import_react_hot_toast14.default.error("Failed to process invitation");
|
|
4953
4917
|
} finally {
|
|
4954
4918
|
setIsResolving(false);
|
|
4955
4919
|
}
|
|
@@ -4959,7 +4923,7 @@ var UniversalHome2 = ({
|
|
|
4959
4923
|
try {
|
|
4960
4924
|
if (onLogout) await onLogout();
|
|
4961
4925
|
} catch (e) {
|
|
4962
|
-
|
|
4926
|
+
import_react_hot_toast14.default.error("Failed to log out cleanly.");
|
|
4963
4927
|
} finally {
|
|
4964
4928
|
setIsLoggingOut(false);
|
|
4965
4929
|
setShowLogoutConfirm(false);
|
|
@@ -5016,14 +4980,14 @@ var UniversalHome2 = ({
|
|
|
5016
4980
|
{
|
|
5017
4981
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cal_b.avif",
|
|
5018
4982
|
alt: "Create Huddle",
|
|
5019
|
-
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none"
|
|
4983
|
+
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
5020
4984
|
}
|
|
5021
4985
|
)
|
|
5022
4986
|
), /* @__PURE__ */ import_react81.default.createElement(
|
|
5023
4987
|
"div",
|
|
5024
4988
|
{
|
|
5025
4989
|
onClick: joinHuddleAction?.onClick,
|
|
5026
|
-
className: "bg-[#
|
|
4990
|
+
className: "bg-[#ffffff] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
5027
4991
|
},
|
|
5028
4992
|
/* @__PURE__ */ import_react81.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react81.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight" }, "Join", /* @__PURE__ */ import_react81.default.createElement("br", null), /* @__PURE__ */ import_react81.default.createElement("span", { className: "text-black/60" }, "Huddle")), /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ import_react81.default.createElement(import_react82.HugeiconsIcon, { icon: import_core_free_icons29.ArrowRight01Icon, size: 16, className: "text-black" }))),
|
|
5029
4993
|
/* @__PURE__ */ import_react81.default.createElement(
|
|
@@ -5031,13 +4995,13 @@ var UniversalHome2 = ({
|
|
|
5031
4995
|
{
|
|
5032
4996
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cam_c.avif",
|
|
5033
4997
|
alt: "Join Huddle",
|
|
5034
|
-
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none"
|
|
4998
|
+
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
5035
4999
|
}
|
|
5036
5000
|
)
|
|
5037
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(
|
|
5038
|
-
|
|
5002
|
+
UniversalHuddlesPage,
|
|
5039
5003
|
{
|
|
5040
|
-
...
|
|
5004
|
+
...huddlesProps
|
|
5041
5005
|
}
|
|
5042
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(
|
|
5043
5007
|
"button",
|
|
@@ -5049,6 +5013,7 @@ var UniversalHome2 = ({
|
|
|
5049
5013
|
},
|
|
5050
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"}`
|
|
5051
5015
|
},
|
|
5016
|
+
/* @__PURE__ */ import_react81.default.createElement(OrgAvatar, { src: org.avatarUrl }),
|
|
5052
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")),
|
|
5053
5018
|
activeOrgId === org.id && /* @__PURE__ */ import_react81.default.createElement("div", { className: "w-2 h-2 rounded-full bg-[#068afe] shrink-0" })
|
|
5054
5019
|
)))), /* @__PURE__ */ import_react81.default.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ import_react81.default.createElement(
|
|
@@ -5111,7 +5076,7 @@ var UniversalHome2 = ({
|
|
|
5111
5076
|
|
|
5112
5077
|
// src/components/UniversalSettings.tsx
|
|
5113
5078
|
var import_react83 = __toESM(require("react"));
|
|
5114
|
-
var
|
|
5079
|
+
var import_react_hot_toast15 = __toESM(require("react-hot-toast"));
|
|
5115
5080
|
var import_react84 = require("@hugeicons/react");
|
|
5116
5081
|
var import_core_free_icons30 = require("@hugeicons/core-free-icons");
|
|
5117
5082
|
var MemberAvatar2 = ({ src, status, sizeClass = "w-10 h-10" }) => {
|
|
@@ -5231,11 +5196,11 @@ var UniversalSettings = ({
|
|
|
5231
5196
|
setIsRemoving(true);
|
|
5232
5197
|
try {
|
|
5233
5198
|
await onRemoveMember(memberToRemove.userId);
|
|
5234
|
-
|
|
5199
|
+
import_react_hot_toast15.default.success("Member removed successfully.");
|
|
5235
5200
|
setExpandedId(null);
|
|
5236
5201
|
setMemberToRemove(null);
|
|
5237
5202
|
} catch (error) {
|
|
5238
|
-
|
|
5203
|
+
import_react_hot_toast15.default.error("Failed to remove member.");
|
|
5239
5204
|
} finally {
|
|
5240
5205
|
setIsRemoving(false);
|
|
5241
5206
|
}
|
|
@@ -5249,7 +5214,7 @@ var UniversalSettings = ({
|
|
|
5249
5214
|
setInviteEmail("");
|
|
5250
5215
|
setIsInviteMode(false);
|
|
5251
5216
|
} catch (error) {
|
|
5252
|
-
|
|
5217
|
+
import_react_hot_toast15.default.error(error.message || "Failed to send invitation.");
|
|
5253
5218
|
} finally {
|
|
5254
5219
|
setIsInviting(false);
|
|
5255
5220
|
}
|
|
@@ -5292,7 +5257,7 @@ var UniversalSettings = ({
|
|
|
5292
5257
|
e.preventDefault();
|
|
5293
5258
|
if (isSavingAccount || isCheckingSlug || isAccountReadOnly || !onSaveAccount) return;
|
|
5294
5259
|
if (slug !== initialSlug && slugAvailable === false) {
|
|
5295
|
-
|
|
5260
|
+
import_react_hot_toast15.default.error("Please select an available address handle.");
|
|
5296
5261
|
return;
|
|
5297
5262
|
}
|
|
5298
5263
|
setIsSavingAccount(true);
|
|
@@ -5303,12 +5268,12 @@ var UniversalSettings = ({
|
|
|
5303
5268
|
};
|
|
5304
5269
|
const res = await onSaveAccount(payload);
|
|
5305
5270
|
if (res.success) {
|
|
5306
|
-
|
|
5271
|
+
import_react_hot_toast15.default.success("Profile updated successfully.");
|
|
5307
5272
|
} else {
|
|
5308
|
-
|
|
5273
|
+
import_react_hot_toast15.default.error(res.error || "Failed to update profile.");
|
|
5309
5274
|
}
|
|
5310
5275
|
} catch (error) {
|
|
5311
|
-
|
|
5276
|
+
import_react_hot_toast15.default.error("Service unavailable. Try again later.");
|
|
5312
5277
|
} finally {
|
|
5313
5278
|
setIsSavingAccount(false);
|
|
5314
5279
|
}
|
|
@@ -5376,7 +5341,7 @@ var UniversalSettings = ({
|
|
|
5376
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"
|
|
5377
5342
|
},
|
|
5378
5343
|
/* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.ListSettingIcon, size: 16 })
|
|
5379
|
-
))), /* @__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()))),
|
|
5344
|
+
))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, activeExpandedMember ? /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col animate-in fade-in zoom-in-95 duration-300 w-full" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-1 mb-8" }, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-black text-xl tracking-tight" }, "Member Profile"), /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[12px] text-neutral-500" }, "View and manage this member's access privileges.")), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex items-center gap-4 mb-8" }, /* @__PURE__ */ import_react83.default.createElement(MemberAvatar2, { src: activeExpandedMember.avatarUrl, status: activeExpandedMember.status, sizeClass: "w-14 h-14" }), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-sm text-black tracking-tight truncate" }, activeExpandedMember.fullName), /* @__PURE__ */ import_react83.default.createElement("span", { className: "text-[12px] text-neutral-500 capitalize" }, activeExpandedMember.role.toLowerCase()))), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col sm:flex-row gap-3 pt-6 " }, !isAccountReadOnly && /* @__PURE__ */ import_react83.default.createElement(
|
|
5380
5345
|
"button",
|
|
5381
5346
|
{
|
|
5382
5347
|
onClick: () => setMemberToRemove(activeExpandedMember),
|
|
@@ -5520,21 +5485,14 @@ var UniversalSettings = ({
|
|
|
5520
5485
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
|
|
5521
5486
|
},
|
|
5522
5487
|
"Cancel"
|
|
5523
|
-
))))), 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-[#
|
|
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(
|
|
5524
5489
|
"button",
|
|
5525
5490
|
{
|
|
5526
5491
|
onClick: onTopUp,
|
|
5527
|
-
className: "px-6 py-2 rounded-full border border-
|
|
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"
|
|
5528
5493
|
},
|
|
5529
5494
|
"Top Up Credits"
|
|
5530
|
-
))), /* @__PURE__ */ import_react83.default.createElement(
|
|
5531
|
-
"img",
|
|
5532
|
-
{
|
|
5533
|
-
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/save_box.avif",
|
|
5534
|
-
alt: "Credits",
|
|
5535
|
-
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"
|
|
5536
|
-
}
|
|
5537
|
-
)), /* @__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."))));
|
|
5538
5496
|
};
|
|
5539
5497
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5540
5498
|
0 && (module.exports = {
|
|
@@ -5571,10 +5529,10 @@ var UniversalSettings = ({
|
|
|
5571
5529
|
UniversalBuyCryptoPage,
|
|
5572
5530
|
UniversalCardActionPage,
|
|
5573
5531
|
UniversalCardPage,
|
|
5574
|
-
UniversalDepartmentsPage,
|
|
5575
5532
|
UniversalErrorView,
|
|
5576
5533
|
UniversalHome2,
|
|
5577
5534
|
UniversalHomeView,
|
|
5535
|
+
UniversalHuddlesPage,
|
|
5578
5536
|
UniversalMembersPage,
|
|
5579
5537
|
UniversalOrganizationPage,
|
|
5580
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-
|
|
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
|
))));
|
|
@@ -3608,12 +3608,17 @@ var ContentGridBlock = ({
|
|
|
3608
3608
|
bgColor_1,
|
|
3609
3609
|
bgColor_2,
|
|
3610
3610
|
bgDeco_1,
|
|
3611
|
-
bgDeco_2
|
|
3611
|
+
bgDeco_2,
|
|
3612
|
+
bgDecoRotation_1,
|
|
3613
|
+
bgDecoRotation_2
|
|
3612
3614
|
}) => {
|
|
3613
3615
|
return /* @__PURE__ */ React38.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React38.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React38.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React38.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React38.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React38.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React38.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React38.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ React38.createElement("p", { className: "text-[14px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React38.createElement("span", { className: "mb-auto text-[11px] text-neutral-100 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React38.createElement("div", null, /* @__PURE__ */ React38.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React38.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ React38.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React38.createElement(Image12, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React38.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React38.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative mx-h-95" }, /* @__PURE__ */ React38.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React38.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React38.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React38.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ React38.createElement(Image12, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React38.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ React38.createElement("div", { className: "grow flex flex-col mt-10 justify-center items-center py-6" }, /* @__PURE__ */ React38.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-200 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ React38.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React38.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React38.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React38.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React38.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col mx-h-95" }, /* @__PURE__ */ React38.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React38.createElement("div", null, /* @__PURE__ */ React38.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React38.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ React38.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React38.createElement(Image12, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React38.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React38.createElement("p", { className: "text-[14px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React38.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React38.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => {
|
|
3614
3616
|
const isSecondCard = idx === 1;
|
|
3615
|
-
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#
|
|
3616
|
-
const
|
|
3617
|
+
const cardBgColor = isSecondCard ? bgColor_2 || "bg-[#ffffff]" : bgColor_1 || "bg-[#068afe]";
|
|
3618
|
+
const defaultDeco_a = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_a.avif";
|
|
3619
|
+
const defaultDeco_b = "https://storage.googleapis.com/retina-cloud-v2/assets/images/deco_b.avif";
|
|
3620
|
+
const bgDecoImage = isSecondCard ? bgDeco_2 || defaultDeco_b : bgDeco_1 || defaultDeco_a;
|
|
3621
|
+
const rotationClass = isSecondCard ? bgDecoRotation_2 || "-rotate-12" : bgDecoRotation_1 || "rotate-90";
|
|
3617
3622
|
return /* @__PURE__ */ React38.createElement(
|
|
3618
3623
|
"div",
|
|
3619
3624
|
{
|
|
@@ -3625,7 +3630,7 @@ var ContentGridBlock = ({
|
|
|
3625
3630
|
{
|
|
3626
3631
|
src: bgDecoImage,
|
|
3627
3632
|
alt: "Decorative background",
|
|
3628
|
-
className:
|
|
3633
|
+
className: `absolute bottom-0 right-0 translate-x-1/4 translate-y-1/4 w-52 sm:w-60 h-auto object-contain z-10 pointer-events-none opacity-30 ${rotationClass}`
|
|
3629
3634
|
}
|
|
3630
3635
|
),
|
|
3631
3636
|
/* @__PURE__ */ React38.createElement("div", { className: `absolute inset-0 z-20 pointer-events-none ${isSecondCard ? "" : "bg-black/20"}` }),
|
|
@@ -4521,72 +4526,72 @@ var UniversalBuyCryptoPage = ({
|
|
|
4521
4526
|
}))))));
|
|
4522
4527
|
};
|
|
4523
4528
|
|
|
4524
|
-
// src/components/
|
|
4529
|
+
// src/components/UniversalHuddlesPage.tsx
|
|
4525
4530
|
import React46, { useState as useState32 } from "react";
|
|
4526
|
-
import toast12 from "react-hot-toast";
|
|
4527
4531
|
import { HugeiconsIcon as HugeiconsIcon32 } from "@hugeicons/react";
|
|
4528
4532
|
import {
|
|
4529
4533
|
ArrowLeft01Icon as ArrowLeft01Icon13,
|
|
4530
4534
|
ArrowRight01Icon as ArrowRight01Icon9,
|
|
4531
|
-
Loading03Icon as Loading03Icon20
|
|
4532
|
-
CancelCircleIcon as CancelCircleIcon9
|
|
4535
|
+
Loading03Icon as Loading03Icon20
|
|
4533
4536
|
} from "@hugeicons/core-free-icons";
|
|
4534
|
-
var
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
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()}` }));
|
|
4538
4566
|
};
|
|
4539
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" }));
|
|
4540
|
-
var
|
|
4568
|
+
var UniversalHuddlesPage = ({
|
|
4541
4569
|
headerTitle,
|
|
4542
4570
|
headerDescription,
|
|
4543
|
-
|
|
4571
|
+
huddles,
|
|
4544
4572
|
isLoading,
|
|
4545
4573
|
currentPage,
|
|
4546
4574
|
totalPages,
|
|
4547
4575
|
onPageChange,
|
|
4548
|
-
|
|
4549
|
-
|
|
4576
|
+
onHuddleClick,
|
|
4577
|
+
onCreateHuddle
|
|
4550
4578
|
}) => {
|
|
4551
|
-
|
|
4552
|
-
const [deptName, setDeptName] = useState32("");
|
|
4553
|
-
const [isCreating, setIsCreating] = useState32(false);
|
|
4554
|
-
const handleCreateSubmit = async (e) => {
|
|
4555
|
-
e.preventDefault();
|
|
4556
|
-
if (deptName.length < 2 || isCreating || !onCreateDepartment) return;
|
|
4557
|
-
setIsCreating(true);
|
|
4558
|
-
try {
|
|
4559
|
-
await onCreateDepartment(deptName);
|
|
4560
|
-
setDeptName("");
|
|
4561
|
-
setIsCreateModalOpen(false);
|
|
4562
|
-
} catch (error) {
|
|
4563
|
-
toast12.error(error.message || "Failed to create department.");
|
|
4564
|
-
} finally {
|
|
4565
|
-
setIsCreating(false);
|
|
4566
|
-
}
|
|
4567
|
-
};
|
|
4568
|
-
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(
|
|
4569
4580
|
"button",
|
|
4570
4581
|
{
|
|
4571
|
-
onClick:
|
|
4582
|
+
onClick: onCreateHuddle,
|
|
4572
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"
|
|
4573
4584
|
},
|
|
4574
4585
|
"Create new"
|
|
4575
|
-
)), 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,
|
|
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(
|
|
4576
4587
|
"div",
|
|
4577
4588
|
{
|
|
4578
|
-
key:
|
|
4579
|
-
onClick: () =>
|
|
4589
|
+
key: huddle.id,
|
|
4590
|
+
onClick: () => onHuddleClick(huddle.id),
|
|
4580
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"
|
|
4581
4592
|
},
|
|
4582
|
-
/* @__PURE__ */ React46.createElement(
|
|
4583
|
-
|
|
4584
|
-
{
|
|
4585
|
-
src: src || "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif",
|
|
4586
|
-
alt: "Member",
|
|
4587
|
-
className: "w-full h-full object-cover"
|
|
4588
|
-
}
|
|
4589
|
-
)))), 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)),
|
|
4590
4595
|
/* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: ArrowRight01Icon9, size: 14, className: "shrink-0 text-neutral-400" })
|
|
4591
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(
|
|
4592
4597
|
"button",
|
|
@@ -4604,55 +4609,13 @@ var UniversalDepartmentsPage = ({
|
|
|
4604
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"
|
|
4605
4610
|
},
|
|
4606
4611
|
/* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: ArrowRight01Icon9, size: 14 })
|
|
4607
|
-
)))))), 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(
|
|
4608
|
-
"button",
|
|
4609
|
-
{
|
|
4610
|
-
onClick: () => setIsCreateModalOpen(false),
|
|
4611
|
-
disabled: isCreating,
|
|
4612
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4613
|
-
},
|
|
4614
|
-
/* @__PURE__ */ React46.createElement(HugeiconsIcon32, { icon: CancelCircleIcon9, size: 18 })
|
|
4615
|
-
)), /* @__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(
|
|
4616
|
-
"input",
|
|
4617
|
-
{
|
|
4618
|
-
type: "text",
|
|
4619
|
-
value: deptName,
|
|
4620
|
-
onChange: (e) => setDeptName(e.target.value),
|
|
4621
|
-
required: true,
|
|
4622
|
-
autoFocus: true,
|
|
4623
|
-
maxLength: 50,
|
|
4624
|
-
disabled: isCreating,
|
|
4625
|
-
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",
|
|
4626
|
-
placeholder: "e.g. Engineering, Marketing..."
|
|
4627
|
-
}
|
|
4628
|
-
)), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React46.createElement(
|
|
4629
|
-
ThreeDActionButton,
|
|
4630
|
-
{
|
|
4631
|
-
type: "submit",
|
|
4632
|
-
disabled: deptName.length < 2 || isCreating,
|
|
4633
|
-
isLoading: isCreating,
|
|
4634
|
-
className: "w-full"
|
|
4635
|
-
},
|
|
4636
|
-
"Create Department"
|
|
4637
|
-
), /* @__PURE__ */ React46.createElement(
|
|
4638
|
-
"button",
|
|
4639
|
-
{
|
|
4640
|
-
type: "button",
|
|
4641
|
-
onClick: () => {
|
|
4642
|
-
setIsCreateModalOpen(false);
|
|
4643
|
-
setDeptName("");
|
|
4644
|
-
},
|
|
4645
|
-
disabled: isCreating,
|
|
4646
|
-
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"
|
|
4647
|
-
},
|
|
4648
|
-
"Cancel"
|
|
4649
4612
|
)))))));
|
|
4650
4613
|
};
|
|
4651
4614
|
|
|
4652
4615
|
// src/components/UniversalMembersPage.tsx
|
|
4653
4616
|
import React47, { useState as useState33, useEffect as useEffect18, useRef as useRef12 } from "react";
|
|
4654
4617
|
import { HugeiconsIcon as HugeiconsIcon33 } from "@hugeicons/react";
|
|
4655
|
-
import
|
|
4618
|
+
import toast12 from "react-hot-toast";
|
|
4656
4619
|
import {
|
|
4657
4620
|
ArrowLeft01Icon as ArrowLeft01Icon14,
|
|
4658
4621
|
ArrowRight01Icon as ArrowRight01Icon10,
|
|
@@ -4754,11 +4717,11 @@ var UniversalMembersPage = ({
|
|
|
4754
4717
|
setIsRemoving(true);
|
|
4755
4718
|
try {
|
|
4756
4719
|
await onRemoveMember(memberToRemove.id);
|
|
4757
|
-
|
|
4720
|
+
toast12.success("Member removed successfully.");
|
|
4758
4721
|
setExpandedId(null);
|
|
4759
4722
|
setMemberToRemove(null);
|
|
4760
4723
|
} catch (error) {
|
|
4761
|
-
|
|
4724
|
+
toast12.error("Failed to remove member.");
|
|
4762
4725
|
} finally {
|
|
4763
4726
|
setIsRemoving(false);
|
|
4764
4727
|
}
|
|
@@ -4772,7 +4735,7 @@ var UniversalMembersPage = ({
|
|
|
4772
4735
|
setInviteEmail("");
|
|
4773
4736
|
setIsInviteMode(false);
|
|
4774
4737
|
} catch (error) {
|
|
4775
|
-
|
|
4738
|
+
toast12.error(error.message || "Failed to send invitation.");
|
|
4776
4739
|
} finally {
|
|
4777
4740
|
setIsInviting(false);
|
|
4778
4741
|
}
|
|
@@ -4919,24 +4882,38 @@ var UniversalMembersPage = ({
|
|
|
4919
4882
|
import React48, { useState as useState34 } from "react";
|
|
4920
4883
|
import { useRouter as useRouter3 } from "next/navigation";
|
|
4921
4884
|
import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
|
|
4922
|
-
import
|
|
4885
|
+
import toast13 from "react-hot-toast";
|
|
4923
4886
|
import {
|
|
4924
4887
|
Loading03Icon as Loading03Icon22,
|
|
4925
4888
|
Notification01Icon as Notification01Icon2,
|
|
4926
4889
|
ArrowLeft01Icon as ArrowLeft01Icon15,
|
|
4927
4890
|
ArrowRight01Icon as ArrowRight01Icon11,
|
|
4928
|
-
CancelCircleIcon as
|
|
4891
|
+
CancelCircleIcon as CancelCircleIcon9,
|
|
4929
4892
|
ArrowUpRight01Icon as ArrowUpRight01Icon3,
|
|
4930
4893
|
Settings03Icon,
|
|
4931
4894
|
Logout01Icon
|
|
4932
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
|
+
};
|
|
4933
4912
|
var UniversalHome2 = ({
|
|
4934
4913
|
avatarSrc,
|
|
4935
|
-
userStatus = "ACTIVE",
|
|
4936
4914
|
organizations = [],
|
|
4937
4915
|
activeOrgId,
|
|
4938
4916
|
onOrganizationSelect,
|
|
4939
|
-
barIcons = [],
|
|
4940
4917
|
createHuddleAction,
|
|
4941
4918
|
joinHuddleAction,
|
|
4942
4919
|
notifications = [],
|
|
@@ -4948,7 +4925,7 @@ var UniversalHome2 = ({
|
|
|
4948
4925
|
onResolveInvite,
|
|
4949
4926
|
formatNotifDate,
|
|
4950
4927
|
customContent,
|
|
4951
|
-
|
|
4928
|
+
huddlesProps,
|
|
4952
4929
|
onLogout
|
|
4953
4930
|
}) => {
|
|
4954
4931
|
const [isAvatarLoaded, setIsAvatarLoaded] = useState34(false);
|
|
@@ -4962,27 +4939,13 @@ var UniversalHome2 = ({
|
|
|
4962
4939
|
const fallbackAvatarUrl = "https://storage.googleapis.com/retina-cloud-v2/assets/images/avatar.avif";
|
|
4963
4940
|
const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
|
|
4964
4941
|
const hasUnreadNotifs = notifications.some((n) => !n.isRead);
|
|
4965
|
-
const getDisplayStatus = () => {
|
|
4966
|
-
if (userStatus === "ACTIVE") return "Online";
|
|
4967
|
-
if (userStatus === "BUSY") return "Busy";
|
|
4968
|
-
if (userStatus === "OFFLINE") return "Offline";
|
|
4969
|
-
if (userStatus === "AWAY") return "Away";
|
|
4970
|
-
return "Online";
|
|
4971
|
-
};
|
|
4972
|
-
const getStatusColor = () => {
|
|
4973
|
-
if (userStatus === "ACTIVE") return "bg-emerald-500";
|
|
4974
|
-
if (userStatus === "BUSY") return "bg-amber-500";
|
|
4975
|
-
if (userStatus === "OFFLINE") return "bg-rose-500";
|
|
4976
|
-
if (userStatus === "AWAY") return "bg-neutral-400";
|
|
4977
|
-
return "bg-emerald-500";
|
|
4978
|
-
};
|
|
4979
4942
|
const handleResolve = async (resolution) => {
|
|
4980
4943
|
if (!onResolveInvite || !selectedNotif) return;
|
|
4981
4944
|
setIsResolving(true);
|
|
4982
4945
|
try {
|
|
4983
4946
|
await onResolveInvite(selectedNotif, resolution);
|
|
4984
4947
|
} catch (error) {
|
|
4985
|
-
|
|
4948
|
+
toast13.error("Failed to process invitation");
|
|
4986
4949
|
} finally {
|
|
4987
4950
|
setIsResolving(false);
|
|
4988
4951
|
}
|
|
@@ -4992,7 +4955,7 @@ var UniversalHome2 = ({
|
|
|
4992
4955
|
try {
|
|
4993
4956
|
if (onLogout) await onLogout();
|
|
4994
4957
|
} catch (e) {
|
|
4995
|
-
|
|
4958
|
+
toast13.error("Failed to log out cleanly.");
|
|
4996
4959
|
} finally {
|
|
4997
4960
|
setIsLoggingOut(false);
|
|
4998
4961
|
setShowLogoutConfirm(false);
|
|
@@ -5049,14 +5012,14 @@ var UniversalHome2 = ({
|
|
|
5049
5012
|
{
|
|
5050
5013
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cal_b.avif",
|
|
5051
5014
|
alt: "Create Huddle",
|
|
5052
|
-
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none"
|
|
5015
|
+
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
5053
5016
|
}
|
|
5054
5017
|
)
|
|
5055
5018
|
), /* @__PURE__ */ React48.createElement(
|
|
5056
5019
|
"div",
|
|
5057
5020
|
{
|
|
5058
5021
|
onClick: joinHuddleAction?.onClick,
|
|
5059
|
-
className: "bg-[#
|
|
5022
|
+
className: "bg-[#ffffff] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
|
|
5060
5023
|
},
|
|
5061
5024
|
/* @__PURE__ */ React48.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React48.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight" }, "Join", /* @__PURE__ */ React48.createElement("br", null), /* @__PURE__ */ React48.createElement("span", { className: "text-black/60" }, "Huddle")), /* @__PURE__ */ React48.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: ArrowRight01Icon11, size: 16, className: "text-black" }))),
|
|
5062
5025
|
/* @__PURE__ */ React48.createElement(
|
|
@@ -5064,15 +5027,15 @@ var UniversalHome2 = ({
|
|
|
5064
5027
|
{
|
|
5065
5028
|
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/cam_c.avif",
|
|
5066
5029
|
alt: "Join Huddle",
|
|
5067
|
-
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none"
|
|
5030
|
+
className: "absolute bottom-4 right-2 translate-x-1/4 translate-y-1/2 w-32 h-auto object-contain z-0 pointer-events-none opacity-30"
|
|
5068
5031
|
}
|
|
5069
5032
|
)
|
|
5070
5033
|
))), customContent && /* @__PURE__ */ React48.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ React48.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ React48.createElement(
|
|
5071
|
-
|
|
5034
|
+
UniversalHuddlesPage,
|
|
5072
5035
|
{
|
|
5073
|
-
...
|
|
5036
|
+
...huddlesProps
|
|
5074
5037
|
}
|
|
5075
|
-
)), 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:
|
|
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(
|
|
5076
5039
|
"button",
|
|
5077
5040
|
{
|
|
5078
5041
|
key: org.id,
|
|
@@ -5082,6 +5045,7 @@ var UniversalHome2 = ({
|
|
|
5082
5045
|
},
|
|
5083
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"}`
|
|
5084
5047
|
},
|
|
5048
|
+
/* @__PURE__ */ React48.createElement(OrgAvatar, { src: org.avatarUrl }),
|
|
5085
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")),
|
|
5086
5050
|
activeOrgId === org.id && /* @__PURE__ */ React48.createElement("div", { className: "w-2 h-2 rounded-full bg-[#068afe] shrink-0" })
|
|
5087
5051
|
)))), /* @__PURE__ */ React48.createElement("div", { className: "p-4 shrink-0" }, /* @__PURE__ */ React48.createElement(
|
|
@@ -5095,7 +5059,7 @@ var UniversalHome2 = ({
|
|
|
5095
5059
|
},
|
|
5096
5060
|
/* @__PURE__ */ React48.createElement(HugeiconsIcon34, { icon: Logout01Icon, size: 15 }),
|
|
5097
5061
|
"Log Out"
|
|
5098
|
-
)))), 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:
|
|
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(
|
|
5099
5063
|
"button",
|
|
5100
5064
|
{
|
|
5101
5065
|
onClick: () => handleResolve("ACCEPTED"),
|
|
@@ -5144,7 +5108,7 @@ var UniversalHome2 = ({
|
|
|
5144
5108
|
|
|
5145
5109
|
// src/components/UniversalSettings.tsx
|
|
5146
5110
|
import React49, { useState as useState35, useEffect as useEffect19, useRef as useRef13 } from "react";
|
|
5147
|
-
import
|
|
5111
|
+
import toast14 from "react-hot-toast";
|
|
5148
5112
|
import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
|
|
5149
5113
|
import {
|
|
5150
5114
|
ArrowLeft01Icon as ArrowLeft01Icon16,
|
|
@@ -5273,11 +5237,11 @@ var UniversalSettings = ({
|
|
|
5273
5237
|
setIsRemoving(true);
|
|
5274
5238
|
try {
|
|
5275
5239
|
await onRemoveMember(memberToRemove.userId);
|
|
5276
|
-
|
|
5240
|
+
toast14.success("Member removed successfully.");
|
|
5277
5241
|
setExpandedId(null);
|
|
5278
5242
|
setMemberToRemove(null);
|
|
5279
5243
|
} catch (error) {
|
|
5280
|
-
|
|
5244
|
+
toast14.error("Failed to remove member.");
|
|
5281
5245
|
} finally {
|
|
5282
5246
|
setIsRemoving(false);
|
|
5283
5247
|
}
|
|
@@ -5291,7 +5255,7 @@ var UniversalSettings = ({
|
|
|
5291
5255
|
setInviteEmail("");
|
|
5292
5256
|
setIsInviteMode(false);
|
|
5293
5257
|
} catch (error) {
|
|
5294
|
-
|
|
5258
|
+
toast14.error(error.message || "Failed to send invitation.");
|
|
5295
5259
|
} finally {
|
|
5296
5260
|
setIsInviting(false);
|
|
5297
5261
|
}
|
|
@@ -5334,7 +5298,7 @@ var UniversalSettings = ({
|
|
|
5334
5298
|
e.preventDefault();
|
|
5335
5299
|
if (isSavingAccount || isCheckingSlug || isAccountReadOnly || !onSaveAccount) return;
|
|
5336
5300
|
if (slug !== initialSlug && slugAvailable === false) {
|
|
5337
|
-
|
|
5301
|
+
toast14.error("Please select an available address handle.");
|
|
5338
5302
|
return;
|
|
5339
5303
|
}
|
|
5340
5304
|
setIsSavingAccount(true);
|
|
@@ -5345,12 +5309,12 @@ var UniversalSettings = ({
|
|
|
5345
5309
|
};
|
|
5346
5310
|
const res = await onSaveAccount(payload);
|
|
5347
5311
|
if (res.success) {
|
|
5348
|
-
|
|
5312
|
+
toast14.success("Profile updated successfully.");
|
|
5349
5313
|
} else {
|
|
5350
|
-
|
|
5314
|
+
toast14.error(res.error || "Failed to update profile.");
|
|
5351
5315
|
}
|
|
5352
5316
|
} catch (error) {
|
|
5353
|
-
|
|
5317
|
+
toast14.error("Service unavailable. Try again later.");
|
|
5354
5318
|
} finally {
|
|
5355
5319
|
setIsSavingAccount(false);
|
|
5356
5320
|
}
|
|
@@ -5418,7 +5382,7 @@ var UniversalSettings = ({
|
|
|
5418
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"
|
|
5419
5383
|
},
|
|
5420
5384
|
/* @__PURE__ */ React49.createElement(HugeiconsIcon35, { icon: ListSettingIcon3, size: 16 })
|
|
5421
|
-
))), /* @__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()))),
|
|
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(
|
|
5422
5386
|
"button",
|
|
5423
5387
|
{
|
|
5424
5388
|
onClick: () => setMemberToRemove(activeExpandedMember),
|
|
@@ -5562,21 +5526,14 @@ var UniversalSettings = ({
|
|
|
5562
5526
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
|
|
5563
5527
|
},
|
|
5564
5528
|
"Cancel"
|
|
5565
|
-
))))), activeTab === "BILLING" && /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React49.createElement("div", { className: "bg-[#
|
|
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(
|
|
5566
5530
|
"button",
|
|
5567
5531
|
{
|
|
5568
5532
|
onClick: onTopUp,
|
|
5569
|
-
className: "px-6 py-2 rounded-full border border-
|
|
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"
|
|
5570
5534
|
},
|
|
5571
5535
|
"Top Up Credits"
|
|
5572
|
-
))), /* @__PURE__ */ React49.createElement(
|
|
5573
|
-
"img",
|
|
5574
|
-
{
|
|
5575
|
-
src: "https://storage.googleapis.com/retina-cloud-v2/assets/images/save_box.avif",
|
|
5576
|
-
alt: "Credits",
|
|
5577
|
-
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"
|
|
5578
|
-
}
|
|
5579
|
-
)), /* @__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."))));
|
|
5580
5537
|
};
|
|
5581
5538
|
export {
|
|
5582
5539
|
AppBento2,
|
|
@@ -5612,10 +5569,10 @@ export {
|
|
|
5612
5569
|
UniversalBuyCryptoPage,
|
|
5613
5570
|
UniversalCardActionPage,
|
|
5614
5571
|
UniversalCardPage,
|
|
5615
|
-
UniversalDepartmentsPage,
|
|
5616
5572
|
UniversalErrorView,
|
|
5617
5573
|
UniversalHome2,
|
|
5618
5574
|
UniversalHomeView,
|
|
5575
|
+
UniversalHuddlesPage,
|
|
5619
5576
|
UniversalMembersPage,
|
|
5620
5577
|
UniversalOrganizationPage,
|
|
5621
5578
|
UniversalProfilePage,
|