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