@retinalabsllc/zairusjs 4.0.18 → 4.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1045,6 +1045,27 @@ interface UniversalDeveloperSettingsProps {
1045
1045
  }
1046
1046
  declare const UniversalDeveloperSettings: React.FC<UniversalDeveloperSettingsProps>;
1047
1047
 
1048
+ interface AppLibraryItem$1 {
1049
+ id: string;
1050
+ name: string;
1051
+ category: string;
1052
+ logoSrc: string;
1053
+ onClick?: () => void;
1054
+ }
1055
+ interface AppLibraryCategory {
1056
+ id: string;
1057
+ title: string;
1058
+ apps: AppLibraryItem$1[];
1059
+ seeMoreLabel?: string;
1060
+ onSeeMore?: () => void;
1061
+ }
1062
+ interface UniversalAppLibraryProps {
1063
+ tagline?: string;
1064
+ headline?: React.ReactNode;
1065
+ categories: AppLibraryCategory[];
1066
+ }
1067
+ declare const UniversalAppLibrary: React.FC<UniversalAppLibraryProps>;
1068
+
1048
1069
  interface StatItem {
1049
1070
  /** The small text label above the number */
1050
1071
  label: string;
@@ -1124,4 +1145,54 @@ interface ContentGridBlockProps {
1124
1145
  }
1125
1146
  declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
1126
1147
 
1127
- export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CheckoutInvoiceData, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type DriveItem$1 as DriveItem, DriveItemOpener, type DriveItemOpenerProps, type DriveItemType, DriveShareModal, type DriveShareModalProps, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, FileIconMapper, type FileIconMapperProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, type StorageConfig, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalCheckoutView, type UniversalCheckoutViewProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalDriveView, type UniversalDriveViewProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, UniversalTrashView, type UniversalTrashViewProps, type UploadQueueJob, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
1148
+ interface AppDetailsData {
1149
+ name: string;
1150
+ developer: string;
1151
+ tagline: string;
1152
+ logoSrc: string;
1153
+ description: string;
1154
+ screenshots: string[];
1155
+ platforms: {
1156
+ android: boolean;
1157
+ ios: boolean;
1158
+ };
1159
+ stats: {
1160
+ type: 'App' | 'Widget' | string;
1161
+ size: string;
1162
+ rating?: string;
1163
+ downloads?: string;
1164
+ };
1165
+ information: {
1166
+ category: string;
1167
+ version: string;
1168
+ developer: string;
1169
+ website: string;
1170
+ email: string;
1171
+ };
1172
+ ctaText?: string;
1173
+ ctaHref?: string;
1174
+ secondaryCtaText?: string;
1175
+ secondaryCtaHref?: string;
1176
+ }
1177
+ interface UniversalAppDetailsProps {
1178
+ app: AppDetailsData;
1179
+ onBack?: () => void;
1180
+ }
1181
+ declare const UniversalAppDetails: React.FC<UniversalAppDetailsProps>;
1182
+
1183
+ interface AppLibraryItem {
1184
+ id: string;
1185
+ name: string;
1186
+ category: string;
1187
+ logoSrc: string;
1188
+ onClick?: () => void;
1189
+ }
1190
+ interface UniversalAppCategoryGridProps {
1191
+ tagline?: string;
1192
+ categoryTitle: React.ReactNode;
1193
+ apps: AppLibraryItem[];
1194
+ onBack?: () => void;
1195
+ }
1196
+ declare const UniversalAppCategoryGrid: React.FC<UniversalAppCategoryGridProps>;
1197
+
1198
+ export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppDetailsData, type AppLibraryCategory, type AppLibraryItem$1 as AppLibraryItem, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CheckoutInvoiceData, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type DriveItem$1 as DriveItem, DriveItemOpener, type DriveItemOpenerProps, type DriveItemType, DriveShareModal, type DriveShareModalProps, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, FileIconMapper, type FileIconMapperProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, type StorageConfig, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalAppCategoryGrid, type UniversalAppCategoryGridProps, UniversalAppDetails, type UniversalAppDetailsProps, UniversalAppLibrary, type UniversalAppLibraryProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalCheckoutView, type UniversalCheckoutViewProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalDriveView, type UniversalDriveViewProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, UniversalTrashView, type UniversalTrashViewProps, type UploadQueueJob, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
package/dist/index.d.ts CHANGED
@@ -1045,6 +1045,27 @@ interface UniversalDeveloperSettingsProps {
1045
1045
  }
1046
1046
  declare const UniversalDeveloperSettings: React.FC<UniversalDeveloperSettingsProps>;
1047
1047
 
1048
+ interface AppLibraryItem$1 {
1049
+ id: string;
1050
+ name: string;
1051
+ category: string;
1052
+ logoSrc: string;
1053
+ onClick?: () => void;
1054
+ }
1055
+ interface AppLibraryCategory {
1056
+ id: string;
1057
+ title: string;
1058
+ apps: AppLibraryItem$1[];
1059
+ seeMoreLabel?: string;
1060
+ onSeeMore?: () => void;
1061
+ }
1062
+ interface UniversalAppLibraryProps {
1063
+ tagline?: string;
1064
+ headline?: React.ReactNode;
1065
+ categories: AppLibraryCategory[];
1066
+ }
1067
+ declare const UniversalAppLibrary: React.FC<UniversalAppLibraryProps>;
1068
+
1048
1069
  interface StatItem {
1049
1070
  /** The small text label above the number */
1050
1071
  label: string;
@@ -1124,4 +1145,54 @@ interface ContentGridBlockProps {
1124
1145
  }
1125
1146
  declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
1126
1147
 
1127
- export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CheckoutInvoiceData, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type DriveItem$1 as DriveItem, DriveItemOpener, type DriveItemOpenerProps, type DriveItemType, DriveShareModal, type DriveShareModalProps, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, FileIconMapper, type FileIconMapperProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, type StorageConfig, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalCheckoutView, type UniversalCheckoutViewProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalDriveView, type UniversalDriveViewProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, UniversalTrashView, type UniversalTrashViewProps, type UploadQueueJob, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
1148
+ interface AppDetailsData {
1149
+ name: string;
1150
+ developer: string;
1151
+ tagline: string;
1152
+ logoSrc: string;
1153
+ description: string;
1154
+ screenshots: string[];
1155
+ platforms: {
1156
+ android: boolean;
1157
+ ios: boolean;
1158
+ };
1159
+ stats: {
1160
+ type: 'App' | 'Widget' | string;
1161
+ size: string;
1162
+ rating?: string;
1163
+ downloads?: string;
1164
+ };
1165
+ information: {
1166
+ category: string;
1167
+ version: string;
1168
+ developer: string;
1169
+ website: string;
1170
+ email: string;
1171
+ };
1172
+ ctaText?: string;
1173
+ ctaHref?: string;
1174
+ secondaryCtaText?: string;
1175
+ secondaryCtaHref?: string;
1176
+ }
1177
+ interface UniversalAppDetailsProps {
1178
+ app: AppDetailsData;
1179
+ onBack?: () => void;
1180
+ }
1181
+ declare const UniversalAppDetails: React.FC<UniversalAppDetailsProps>;
1182
+
1183
+ interface AppLibraryItem {
1184
+ id: string;
1185
+ name: string;
1186
+ category: string;
1187
+ logoSrc: string;
1188
+ onClick?: () => void;
1189
+ }
1190
+ interface UniversalAppCategoryGridProps {
1191
+ tagline?: string;
1192
+ categoryTitle: React.ReactNode;
1193
+ apps: AppLibraryItem[];
1194
+ onBack?: () => void;
1195
+ }
1196
+ declare const UniversalAppCategoryGrid: React.FC<UniversalAppCategoryGridProps>;
1197
+
1198
+ export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppDetailsData, type AppLibraryCategory, type AppLibraryItem$1 as AppLibraryItem, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CheckoutInvoiceData, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type DriveItem$1 as DriveItem, DriveItemOpener, type DriveItemOpenerProps, type DriveItemType, DriveShareModal, type DriveShareModalProps, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, FileIconMapper, type FileIconMapperProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, type AppLogo$1 as HeroAppLogo, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, type PricingTab, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, type StorageConfig, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalAppCategoryGrid, type UniversalAppCategoryGridProps, UniversalAppDetails, type UniversalAppDetailsProps, UniversalAppLibrary, type UniversalAppLibraryProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalCheckoutView, type UniversalCheckoutViewProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalDriveView, type UniversalDriveViewProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, UniversalTrashView, type UniversalTrashViewProps, type UploadQueueJob, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
package/dist/index.js CHANGED
@@ -66,6 +66,9 @@ __export(index_exports, {
66
66
  ThreeDActionButton: () => ThreeDActionButton,
67
67
  ThreeDButton: () => ThreeDButton,
68
68
  UniversalAgentConsole: () => UniversalAgentConsole,
69
+ UniversalAppCategoryGrid: () => UniversalAppCategoryGrid,
70
+ UniversalAppDetails: () => UniversalAppDetails,
71
+ UniversalAppLibrary: () => UniversalAppLibrary,
69
72
  UniversalBillingPage: () => UniversalBillingPage,
70
73
  UniversalCheckoutView: () => UniversalCheckoutView,
71
74
  UniversalDashboardPage: () => UniversalDashboardPage,
@@ -2441,7 +2444,7 @@ var UniversalMembersPage = ({
2441
2444
  setSelectedMember(member);
2442
2445
  setCurrentView("details");
2443
2446
  },
2444
- className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2447
+ className: "flex items-center justify-between hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2445
2448
  },
2446
2449
  /* @__PURE__ */ import_react44.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ import_react44.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ import_react44.default.createElement(
2447
2450
  "img",
@@ -3252,10 +3255,9 @@ var UniversalDirectoryPage = ({
3252
3255
  {
3253
3256
  key: item.id,
3254
3257
  onClick: () => onRowClick(item.id),
3255
- className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
3258
+ className: "flex items-center justify-between hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
3256
3259
  },
3257
- /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ import_react61.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ import_react61.default.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText))),
3258
- item.rightBadge && /* @__PURE__ */ import_react61.default.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ import_react61.default.createElement("span", { className: `text-[11px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap ${item.rightBadgeClass || "text-neutral-500 border border-neutral-100 bg-white"}` }, item.rightBadge))
3260
+ /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ import_react61.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ import_react61.default.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText)))
3259
3261
  ))), /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react61.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] " }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react61.default.createElement(
3260
3262
  "button",
3261
3263
  {
@@ -3575,7 +3577,7 @@ var DriveItemOpener = ({ item, onClose }) => {
3575
3577
  const i = Math.floor(Math.log(num) / Math.log(k));
3576
3578
  return parseFloat((num / Math.pow(k, i)).toFixed(1)) + " " + sizes[i];
3577
3579
  };
3578
- return /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-200 bg-black/95 flex flex-col animate-in fade-in duration-200" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center justify-between p-4 border-b border-white/10 bg-black" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-10 h-10 bg-white/10 rounded-xl flex items-center justify-center" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "invert grayscale brightness-200" }, /* @__PURE__ */ import_react69.default.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType }))), /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("h3", { className: "text-sm font-medium text-white tracking-wide" }, item.name), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-white/50 mt-0.5" }, item.type, " \u2022 ", formatBytes(item.size), " \u2022 ", new Date(item.updatedAt).toLocaleDateString()))), /* @__PURE__ */ import_react69.default.createElement(
3580
+ return /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-200 bg-black/95 flex flex-col animate-in fade-in duration-200" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center justify-between p-4 border-b border-white/10 bg-black" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-10 h-10 bg-white/10 rounded-xl flex items-center justify-center" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "invert grayscale brightness-200" }, /* @__PURE__ */ import_react69.default.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType }))), /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("h3", { className: "text-sm text-white tracking-wide" }, item.name), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-white/50 mt-0.5" }, item.type, " \u2022 ", formatBytes(item.size), " \u2022 ", new Date(item.updatedAt).toLocaleDateString()))), /* @__PURE__ */ import_react69.default.createElement(
3579
3581
  "button",
3580
3582
  {
3581
3583
  onClick: onClose,
@@ -4261,7 +4263,7 @@ var UniversalRegistrationFlow = ({
4261
4263
  return /* @__PURE__ */ import_react78.default.createElement("div", { key: num, className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Loading03Icon, size: 18, className: "animate-spin text-black" }), " Uploading Document ", num, "...");
4262
4264
  }
4263
4265
  return /* @__PURE__ */ import_react78.default.createElement("div", { key: num, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.CheckmarkBadge01Icon, size: 18 }), " Optional Document ", num, " Uploaded"), !isReadOnly && /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => deleteOptionalDocument(docType), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.Delete02Icon, size: 16 })));
4264
- }))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, disabled: isAnyUploading, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Back"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep1Valid || isAnyUploading, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 2 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm mb-5 text-black" }, "Application Summary"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 text-sm" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 truncate text-[13px] " }, type === "company" ? "Company Name" : "Business Name"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black text-[13px]" }, formData.approvedName)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Classification"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate sm:text-right text-[13px] " }, formData.natureOfBusiness?.specificLabel || "Pending")), type === "company" ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Total Members"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, formData.members.length, " Directors/Shareholders")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Share Capital"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, "100% Allocated"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Proprietor"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, formData.ownerName)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Documents Attached"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-neutral-400 text-[13px] " }, "ID, Passport, Signature")), formData.otherDoc1Url && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Optional Documents"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-neutral-400 text-[13px] " }, [formData.otherDoc1Url, formData.otherDoc2Url, formData.otherDoc3Url].filter(Boolean).length, " Attached")))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 rounded-full text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 transition-colors outline-none" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Back"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 3 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6 py-6 animate-in zoom-in-95 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("h2", { className: "text-lg text-black tracking-tight mb-2" }, "Terms and Conditions of Application"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "text-xs text-neutral-500 mb-4" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: " mb-3" }, "Declaration and Consent"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "By proceeding with this application, you acknowledge and agree that all data, documents, and identification materials provided herein will be securely transmitted to the relevant official registries and authorized agents for the purpose of ", type === "company" ? "company" : "business", " incorporation and compliance verification."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "You confirm that all information provided is accurate and authentic. Any falsification of identity or corporate data may result in immediate rejection, and you may be held liable under applicable laws and regulations."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "This service operates strictly as a digital intermediary connecting you with official registries. The final approval of the ", type === "company" ? "company" : "business", " name and registration rests solely with the regulatory authorities. We are not liable for rejections arising from pre existing conflicts, non compliance, or regulatory policy changes not flagged during the AI pre check stages."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "leading-relaxed" }, "Proceeding to generate the invoice confirms your acceptance of these terms and initiates the formal filing process.")), /* @__PURE__ */ import_react78.default.createElement("label", { className: "flex items-start gap-3 mt-2 cursor-pointer group" }, /* @__PURE__ */ import_react78.default.createElement("input", { type: "checkbox", checked: iAgree, onChange: (e) => setIAgree(e.target.checked), disabled: isReadOnly, className: "mt-0.5 w-4 h-4 accent-black rounded cursor-pointer" }), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[13px] text-red-500 group-hover:text-red-600 transition-colors" }, "I have read, understood, and agree to the terms of data transfer and processing.")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-4 mt-8 w-full justify-end pt-6" }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: onCancelOrClose, disabled: isSubmitting, className: "px-8 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none w-full sm:w-auto" }, "Cancel"), /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => setMacroStep(0), disabled: isSubmitting || isReadOnly, className: "px-8 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none w-full sm:w-auto" }, "Edit Application"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleFinalSubmit, disabled: isSubmitting || !iAgree || isReadOnly, isLoading: isSubmitting, className: "min-w-40 w-full sm:w-auto" }, "Submit")))), activeModal.isOpen && /* @__PURE__ */ import_react78.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }) }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "p-4 text-center w-full shrink-0" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-[14px] text-black tracking-tight capitalize" }, "Select ", activeModal.type)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "p-4 flex flex-col gap-2 overflow-y-auto custom-scrollbar" }, (activeModal.type === "state" ? NIGERIAN_STATES : activeModal.type === "role" ? MEMBER_ROLES : NATIONALITIES).map((opt) => {
4266
+ }))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, disabled: isAnyUploading, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Back"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep1Valid || isAnyUploading, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 2 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ import_react78.default.createElement("div", null, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-sm mb-5 text-black" }, "Application Summary"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-4 text-sm" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 truncate text-[13px] " }, type === "company" ? "Company Name" : "Business Name"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black text-[13px]" }, formData.approvedName)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Classification"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate sm:text-right text-[13px] " }, formData.natureOfBusiness?.specificLabel || "Pending")), type === "company" ? /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Total Members"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, formData.members.length, " Directors/Shareholders")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Share Capital"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, "100% Allocated"))) : /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Proprietor"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-black truncate text-[13px] " }, formData.ownerName)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Documents Attached"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-neutral-400 text-[13px] " }, "ID, Passport, Signature")), formData.otherDoc1Url && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Optional Documents"), /* @__PURE__ */ import_react78.default.createElement("span", { className: " text-neutral-400 text-[13px] " }, [formData.otherDoc1Url, formData.otherDoc2Url, formData.otherDoc3Url].filter(Boolean).length, " Attached")))), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 " }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 rounded-full text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 transition-colors outline-none" }, /* @__PURE__ */ import_react78.default.createElement(import_react79.HugeiconsIcon, { icon: import_core_free_icons28.ArrowLeft01Icon, size: 14 }), " Back"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleNext, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 3 && /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col gap-6 py-6 animate-in zoom-in-95 duration-500" }, /* @__PURE__ */ import_react78.default.createElement("h2", { className: "text-lg text-black tracking-tight mb-2" }, "Terms and Conditions of Application"), /* @__PURE__ */ import_react78.default.createElement("div", { className: "text-xs text-neutral-500 mb-4" }, /* @__PURE__ */ import_react78.default.createElement("p", { className: " mb-3" }, "Declaration and Consent"), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "By proceeding with this application, you acknowledge and agree that all data, documents, and identification materials provided herein will be securely transmitted to the relevant official registries and authorized agents for the purpose of ", type === "company" ? "company" : "business", " incorporation and compliance verification."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "You confirm that all information provided is accurate and authentic. Any falsification of identity or corporate data may result in immediate rejection, and you may be held liable under applicable laws and regulations."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "mb-3 leading-relaxed" }, "This service operates strictly as a digital intermediary connecting you with official registries. The final approval of the ", type === "company" ? "company" : "business", " name and registration rests solely with the regulatory authorities. We are not liable for rejections arising from pre existing conflicts, non compliance, or regulatory policy changes not flagged during the AI pre check stages."), /* @__PURE__ */ import_react78.default.createElement("p", { className: "leading-relaxed" }, "Proceeding to generate the invoice confirms your acceptance of these terms and initiates the formal filing process.")), /* @__PURE__ */ import_react78.default.createElement("label", { className: "flex items-start gap-3 mt-2 cursor-pointer group" }, /* @__PURE__ */ import_react78.default.createElement("input", { type: "checkbox", checked: iAgree, onChange: (e) => setIAgree(e.target.checked), disabled: isReadOnly, className: "mt-0.5 w-4 h-4 accent-black rounded cursor-pointer" }), /* @__PURE__ */ import_react78.default.createElement("span", { className: "text-[13px] text-neutral-500 group-hover:text-neutral-600 transition-colors" }, "I have read, understood, and agree to the terms of data transfer and processing.")), /* @__PURE__ */ import_react78.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-4 mt-8 w-full justify-end pt-6" }, /* @__PURE__ */ import_react78.default.createElement("button", { onClick: onCancelOrClose, disabled: isSubmitting, className: "text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full px-8 py-2.5 border border-neutral-100 transition-colors outline-none w-full sm:w-auto" }, "Cancel"), /* @__PURE__ */ import_react78.default.createElement("button", { onClick: () => setMacroStep(0), disabled: isSubmitting || isReadOnly, className: " text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full px-8 py-2.5 border border-neutral-100transition-colors outline-none w-full sm:w-auto" }, "Edit Application"), /* @__PURE__ */ import_react78.default.createElement(ThreeDActionButton, { onClick: handleFinalSubmit, disabled: isSubmitting || !iAgree || isReadOnly, isLoading: isSubmitting, className: "min-w-40 w-full sm:w-auto" }, "Submit")))), activeModal.isOpen && /* @__PURE__ */ import_react78.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }) }), /* @__PURE__ */ import_react78.default.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "p-4 text-center w-full shrink-0" }, /* @__PURE__ */ import_react78.default.createElement("h3", { className: "text-[14px] text-black tracking-tight capitalize" }, "Select ", activeModal.type)), /* @__PURE__ */ import_react78.default.createElement("div", { className: "p-4 flex flex-col gap-2 overflow-y-auto custom-scrollbar" }, (activeModal.type === "state" ? NIGERIAN_STATES : activeModal.type === "role" ? MEMBER_ROLES : NATIONALITIES).map((opt) => {
4265
4267
  const isSelected = activeModal.isGlobalState ? formData.state === opt : formData.members[activeModal.memberIndex][activeModal.type] === opt;
4266
4268
  return /* @__PURE__ */ import_react78.default.createElement("button", { key: opt, onClick: () => {
4267
4269
  if (activeModal.isGlobalState) setFormData({ ...formData, state: opt });
@@ -4418,8 +4420,48 @@ SECRET_KEY="${secKey}"
4418
4420
  )))));
4419
4421
  };
4420
4422
 
4421
- // src/components/MedicalFeatureStatsBlock.tsx
4423
+ // src/components/UniversalAppLibrary.tsx
4422
4424
  var import_react82 = __toESM(require("react"));
4425
+ var import_react83 = require("@hugeicons/react");
4426
+ var import_core_free_icons30 = require("@hugeicons/core-free-icons");
4427
+ var AppCard = ({ app }) => {
4428
+ const [isLoading, setIsLoading] = (0, import_react82.useState)(true);
4429
+ return /* @__PURE__ */ import_react82.default.createElement(
4430
+ "button",
4431
+ {
4432
+ onClick: app.onClick,
4433
+ className: "flex flex-col gap-3 group cursor-pointer w-25 shrink-0 text-left outline-none"
4434
+ },
4435
+ /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative w-full aspect-square rounded-2xl bg-white overflow-hidden transition-all duration-300 flex items-center justify-center" }, isLoading && /* @__PURE__ */ import_react82.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ import_react82.default.createElement(import_react83.HugeiconsIcon, { icon: import_core_free_icons30.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react82.default.createElement(
4436
+ "img",
4437
+ {
4438
+ src: app.logoSrc,
4439
+ alt: app.name,
4440
+ loading: "lazy",
4441
+ onLoad: () => setIsLoading(false),
4442
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4443
+ }
4444
+ )),
4445
+ /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col min-w-0 px-1" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-[13px] text-black tracking-tight truncate group-hover:text-neutral-600 transition-colors" }, app.name), /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-[10px] text-neutral-500 tracking-wide truncate mt-0.5" }, app.category))
4446
+ );
4447
+ };
4448
+ var UniversalAppLibrary = ({
4449
+ tagline,
4450
+ headline,
4451
+ categories
4452
+ }) => {
4453
+ return /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "max-w-6xl w-full" }, (tagline || headline) && /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "relative z-10" }, tagline && /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), headline && /* @__PURE__ */ import_react82.default.createElement("h2", { className: "text-2xl sm:text-3xl tracking-tight text-black leading-[1.1]" }, headline))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col gap-14" }, categories.map((category) => /* @__PURE__ */ import_react82.default.createElement("div", { key: category.id, className: "flex flex-col" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-end justify-between mb-5 px-1" }, /* @__PURE__ */ import_react82.default.createElement("h3", { className: "text-lg text-black tracking-tight " }, category.title), category.onSeeMore && /* @__PURE__ */ import_react82.default.createElement(
4454
+ "button",
4455
+ {
4456
+ onClick: category.onSeeMore,
4457
+ className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors outline-none shrink-0 ml-4 pb-0.5"
4458
+ },
4459
+ category.seeMoreLabel || "See More"
4460
+ )), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex gap-4 sm:gap-6 overflow-x-auto pb-6 pt-2 -mx-4 px-4 sm:mx-0 sm:px-1 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] scrollbar-none" }, category.apps.map((app) => /* @__PURE__ */ import_react82.default.createElement(AppCard, { key: app.id, app }))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "w-full h-px mt-2 last-of-type:hidden" })))))));
4461
+ };
4462
+
4463
+ // src/components/MedicalFeatureStatsBlock.tsx
4464
+ var import_react84 = __toESM(require("react"));
4423
4465
  var import_image11 = __toESM(require("next/image"));
4424
4466
  var MedicalFeatureStatsBlock = ({
4425
4467
  bottomHeadline,
@@ -4428,9 +4470,9 @@ var MedicalFeatureStatsBlock = ({
4428
4470
  trustText,
4429
4471
  stats
4430
4472
  }) => {
4431
- const [isAnimating, setIsAnimating] = (0, import_react82.useState)(false);
4432
- const titleRef = (0, import_react82.useRef)(null);
4433
- (0, import_react82.useEffect)(() => {
4473
+ const [isAnimating, setIsAnimating] = (0, import_react84.useState)(false);
4474
+ const titleRef = (0, import_react84.useRef)(null);
4475
+ (0, import_react84.useEffect)(() => {
4434
4476
  const observer = new IntersectionObserver(
4435
4477
  ([entry]) => {
4436
4478
  if (entry.isIntersecting) {
@@ -4448,7 +4490,7 @@ var MedicalFeatureStatsBlock = ({
4448
4490
  }
4449
4491
  return () => observer.disconnect();
4450
4492
  }, []);
4451
- return /* @__PURE__ */ import_react82.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react82.default.createElement(
4493
+ return /* @__PURE__ */ import_react84.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react84.default.createElement(
4452
4494
  "h2",
4453
4495
  {
4454
4496
  ref: titleRef,
@@ -4456,7 +4498,7 @@ var MedicalFeatureStatsBlock = ({
4456
4498
  style: isAnimating ? { animationIterationCount: 1 } : {}
4457
4499
  },
4458
4500
  bottomHeadline
4459
- ), /* @__PURE__ */ import_react82.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react82.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react82.default.createElement(
4501
+ ), /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react84.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react84.default.createElement(
4460
4502
  import_image11.default,
4461
4503
  {
4462
4504
  src,
@@ -4465,17 +4507,17 @@ var MedicalFeatureStatsBlock = ({
4465
4507
  sizes: "48px",
4466
4508
  className: "object-cover"
4467
4509
  }
4468
- )))), /* @__PURE__ */ import_react82.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react82.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react82.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react82.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react82.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react82.default.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4510
+ )))), /* @__PURE__ */ import_react84.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react84.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react84.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react84.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react84.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react84.default.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4469
4511
  };
4470
4512
 
4471
4513
  // src/components/ConsultantShowcase.tsx
4472
- var import_react83 = __toESM(require("react"));
4514
+ var import_react85 = __toESM(require("react"));
4473
4515
  var import_image12 = __toESM(require("next/image"));
4474
- var import_react84 = require("@hugeicons/react");
4475
- var import_core_free_icons30 = require("@hugeicons/core-free-icons");
4516
+ var import_react86 = require("@hugeicons/react");
4517
+ var import_core_free_icons31 = require("@hugeicons/core-free-icons");
4476
4518
  var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
4477
- const [isLoading, setIsLoading] = (0, import_react83.useState)(true);
4478
- return /* @__PURE__ */ import_react83.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react83.default.createElement(import_react84.HugeiconsIcon, { icon: import_core_free_icons30.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react83.default.createElement(
4519
+ const [isLoading, setIsLoading] = (0, import_react85.useState)(true);
4520
+ return /* @__PURE__ */ import_react85.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react85.default.createElement(
4479
4521
  import_image12.default,
4480
4522
  {
4481
4523
  src,
@@ -4494,9 +4536,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
4494
4536
  var ConsultantShowcase = ({
4495
4537
  profiles
4496
4538
  }) => {
4497
- const [currentIndex, setCurrentIndex] = (0, import_react83.useState)(0);
4498
- const [touchStart, setTouchStart] = (0, import_react83.useState)(null);
4499
- const [touchEnd, setTouchEnd] = (0, import_react83.useState)(null);
4539
+ const [currentIndex, setCurrentIndex] = (0, import_react85.useState)(0);
4540
+ const [touchStart, setTouchStart] = (0, import_react85.useState)(null);
4541
+ const [touchEnd, setTouchEnd] = (0, import_react85.useState)(null);
4500
4542
  const nextSlide = () => {
4501
4543
  setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
4502
4544
  };
@@ -4521,7 +4563,7 @@ var ConsultantShowcase = ({
4521
4563
  }
4522
4564
  };
4523
4565
  if (!profiles || profiles.length === 0) return null;
4524
- return /* @__PURE__ */ import_react83.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react83.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react83.default.createElement(
4566
+ return /* @__PURE__ */ import_react85.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react85.default.createElement(
4525
4567
  "div",
4526
4568
  {
4527
4569
  className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
@@ -4531,13 +4573,13 @@ var ConsultantShowcase = ({
4531
4573
  },
4532
4574
  profiles.map((profile, idx) => {
4533
4575
  const isActive = idx === currentIndex;
4534
- return /* @__PURE__ */ import_react83.default.createElement(
4576
+ return /* @__PURE__ */ import_react85.default.createElement(
4535
4577
  "div",
4536
4578
  {
4537
4579
  key: profile.id,
4538
4580
  className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
4539
4581
  },
4540
- /* @__PURE__ */ import_react83.default.createElement(
4582
+ /* @__PURE__ */ import_react85.default.createElement(
4541
4583
  ImageWithLoader,
4542
4584
  {
4543
4585
  src: profile.imageSrc,
@@ -4545,14 +4587,14 @@ var ConsultantShowcase = ({
4545
4587
  priority: idx === 0
4546
4588
  }
4547
4589
  ),
4548
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
4549
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
4550
- /* @__PURE__ */ import_react83.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react83.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react83.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react83.default.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide mt-1" }, profile.description)))
4590
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
4591
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
4592
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide mt-1" }, profile.description)))
4551
4593
  );
4552
4594
  }),
4553
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
4554
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
4555
- /* @__PURE__ */ import_react83.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react83.default.createElement(
4595
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
4596
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
4597
+ /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react85.default.createElement(
4556
4598
  "button",
4557
4599
  {
4558
4600
  key: idx,
@@ -4565,13 +4607,13 @@ var ConsultantShowcase = ({
4565
4607
  };
4566
4608
 
4567
4609
  // src/components/ContentGridBlock.tsx
4568
- var import_react85 = __toESM(require("react"));
4610
+ var import_react87 = __toESM(require("react"));
4569
4611
  var import_image13 = __toESM(require("next/image"));
4570
- var import_react86 = require("@hugeicons/react");
4571
- var import_core_free_icons31 = require("@hugeicons/core-free-icons");
4612
+ var import_react88 = require("@hugeicons/react");
4613
+ var import_core_free_icons32 = require("@hugeicons/core-free-icons");
4572
4614
  var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
4573
- const [isLoading, setIsLoading] = (0, import_react85.useState)(true);
4574
- return /* @__PURE__ */ import_react85.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react85.default.createElement(import_react86.HugeiconsIcon, { icon: import_core_free_icons31.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react85.default.createElement(
4615
+ const [isLoading, setIsLoading] = (0, import_react87.useState)(true);
4616
+ return /* @__PURE__ */ import_react87.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react87.default.createElement(import_react88.HugeiconsIcon, { icon: import_core_free_icons32.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react87.default.createElement(
4575
4617
  import_image13.default,
4576
4618
  {
4577
4619
  src,
@@ -4593,14 +4635,149 @@ var ContentGridBlock = ({
4593
4635
  middleBottomCard,
4594
4636
  rightCards
4595
4637
  }) => {
4596
- return /* @__PURE__ */ import_react85.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react85.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react85.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react85.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react85.default.createElement("div", null, /* @__PURE__ */ import_react85.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react85.default.createElement(import_image13.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react85.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react85.default.createElement(import_image13.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-100 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react85.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react85.default.createElement("div", null, /* @__PURE__ */ import_react85.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react85.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react85.default.createElement(import_image13.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react85.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react85.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react85.default.createElement("div", { key: idx, className: "relative w-full h-80 rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react85.default.createElement(
4638
+ return /* @__PURE__ */ import_react87.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react87.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react87.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react87.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react87.default.createElement("div", null, /* @__PURE__ */ import_react87.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react87.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react87.default.createElement(import_image13.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react87.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react87.default.createElement(import_image13.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-100 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react87.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react87.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react87.default.createElement("div", null, /* @__PURE__ */ import_react87.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react87.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react87.default.createElement(import_image13.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react87.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react87.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react87.default.createElement("div", { key: idx, className: "relative w-full h-80 rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react87.default.createElement(
4597
4639
  ImageWithLoader2,
4598
4640
  {
4599
4641
  src: card.bgImageSrc,
4600
4642
  alt: card.title,
4601
4643
  className: "absolute inset-0 w-full h-full"
4602
4644
  }
4603
- ), /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-20 pointer-events-none" }), /* @__PURE__ */ import_react85.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react85.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react85.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react85.default.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ import_react85.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
4645
+ ), /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-20 pointer-events-none" }), /* @__PURE__ */ import_react87.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react87.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react87.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react87.default.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ import_react87.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
4646
+ };
4647
+
4648
+ // src/components/UniversalAppDetails.tsx
4649
+ var import_react89 = __toESM(require("react"));
4650
+ var import_react90 = require("@hugeicons/react");
4651
+ var import_core_free_icons33 = require("@hugeicons/core-free-icons");
4652
+ var ScreenshotCard = ({ src, alt, onClick }) => {
4653
+ const [isLoading, setIsLoading] = (0, import_react89.useState)(true);
4654
+ return /* @__PURE__ */ import_react89.default.createElement(
4655
+ "button",
4656
+ {
4657
+ onClick,
4658
+ className: "relative w-28 sm:w-32 aspect-9/19 shrink-0 rounded-2xl overflow-hidden bg-neutral-100 border border-neutral-200/50 outline-none hover:opacity-90 transition-opacity"
4659
+ },
4660
+ isLoading && /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })),
4661
+ /* @__PURE__ */ import_react89.default.createElement(
4662
+ "img",
4663
+ {
4664
+ src,
4665
+ alt,
4666
+ loading: "lazy",
4667
+ onLoad: () => setIsLoading(false),
4668
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4669
+ }
4670
+ )
4671
+ );
4672
+ };
4673
+ var LightboxImage = ({ src }) => {
4674
+ const [isLoading, setIsLoading] = (0, import_react89.useState)(true);
4675
+ return /* @__PURE__ */ import_react89.default.createElement("div", { className: "relative w-full h-full flex items-center justify-center p-4" }, isLoading && /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, size: 32, className: "animate-spin text-white" })), /* @__PURE__ */ import_react89.default.createElement(
4676
+ "img",
4677
+ {
4678
+ src,
4679
+ alt: "Fullscreen Screenshot",
4680
+ onLoad: () => setIsLoading(false),
4681
+ className: `max-w-full max-h-full object-contain transition-all duration-500 z-20 ${isLoading ? "opacity-0 blur-md" : "opacity-100 blur-0"}`
4682
+ }
4683
+ ));
4684
+ };
4685
+ var UniversalAppDetails = ({ app, onBack }) => {
4686
+ const [isLogoLoading, setIsLogoLoading] = (0, import_react89.useState)(true);
4687
+ const [isDescExpanded, setIsDescExpanded] = (0, import_react89.useState)(false);
4688
+ const [lightboxIndex, setLightboxIndex] = (0, import_react89.useState)(null);
4689
+ const MAX_DESC_LENGTH = 150;
4690
+ const isDescLong = app.description.length > MAX_DESC_LENGTH;
4691
+ const displayDesc = isDescExpanded || !isDescLong ? app.description : `${app.description.substring(0, MAX_DESC_LENGTH)}...`;
4692
+ const handlePrev = () => {
4693
+ if (lightboxIndex !== null) {
4694
+ setLightboxIndex(lightboxIndex === 0 ? app.screenshots.length - 1 : lightboxIndex - 1);
4695
+ }
4696
+ };
4697
+ const handleNext = () => {
4698
+ if (lightboxIndex !== null) {
4699
+ setLightboxIndex(lightboxIndex === app.screenshots.length - 1 ? 0 : lightboxIndex + 1);
4700
+ }
4701
+ };
4702
+ return /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full max-w-3xl mx-auto pt-10 pb-20 px-6 min-h-screen flex flex-col items-center" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col sm:flex-row items-start gap-4 w-full mb-10 text-left" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "relative w-20 h-20 sm:w-20 sm:h-20 md:w-24 md:h-24 lg:w-28 lg:h-28 shrink-0 rounded-2xl overflow-hidden flex items-center justify-center border border-neutral-100/50 bg-neutral-50" }, isLogoLoading && /* @__PURE__ */ import_react89.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100 animate-pulse" }), /* @__PURE__ */ import_react89.default.createElement(
4703
+ "img",
4704
+ {
4705
+ src: app.logoSrc,
4706
+ alt: `${app.name} Logo`,
4707
+ onLoad: () => setIsLogoLoading(false),
4708
+ className: `w-full h-full object-cover transition-opacity duration-300 z-20 ${isLogoLoading ? "opacity-0" : "opacity-100"}`
4709
+ }
4710
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col justify-center pt-1 min-w-0" }, /* @__PURE__ */ import_react89.default.createElement("h1", { className: "text-xl text-black leading-tight mb-1 font-medium" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "block truncate" }, app.name)), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-xs mt-1 text-neutral-400 truncate max-w-full" }, app.tagline), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-wrap items-center mt-4 gap-8 w-full" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-center gap-1.5 h-6 text-neutral-800" }, app.platforms.android && /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.AndroidIcon, size: 18 }), app.platforms.ios && /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.AppleIcon, size: 18 })), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Platforms")), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-sm font-medium h-6 flex items-center text-neutral-800 truncate" }, app.stats.type), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Type")), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-sm font-medium h-6 flex items-center text-neutral-800 truncate" }, app.stats.size), /* @__PURE__ */ import_react89.default.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Size"))))), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 items-center w-full mx-auto mb-12" }, app.ctaText && app.ctaHref && /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ import_react89.default.createElement(ThreeDButton, { href: app.ctaHref }, /* @__PURE__ */ import_react89.default.createElement("span", { className: "flex items-center justify-center gap-2" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Download01Icon, size: 16 }), app.ctaText))), app.secondaryCtaText && app.secondaryCtaHref && /* @__PURE__ */ import_react89.default.createElement(
4711
+ "a",
4712
+ {
4713
+ href: app.secondaryCtaHref,
4714
+ className: "w-full sm:w-60 inline-flex items-center justify-center gap-2 text-[11px] tracking-widest rounded-full px-8 py-2.5 border border-neutral-100 text-center text-black hover:bg-neutral-50 outline-none transition-colors"
4715
+ },
4716
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Bookmark02Icon, size: 16 }),
4717
+ app.secondaryCtaText
4718
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full mb-12" }, /* @__PURE__ */ import_react89.default.createElement("h2", { className: "text-xl text-black font-medium mb-4" }, "About"), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex gap-3 overflow-x-auto pb-4 scrollbar-hide -mx-6 px-6" }, app.screenshots.map((src, idx) => /* @__PURE__ */ import_react89.default.createElement(
4719
+ ScreenshotCard,
4720
+ {
4721
+ key: idx,
4722
+ src,
4723
+ alt: `${app.name} Screenshot ${idx + 1}`,
4724
+ onClick: () => setLightboxIndex(idx)
4725
+ }
4726
+ ))), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex items-end text-neutral-500 text-sm leading-relaxed mt-2" }, /* @__PURE__ */ import_react89.default.createElement("p", { className: "flex-1 whitespace-pre-wrap" }, displayDesc), isDescLong && /* @__PURE__ */ import_react89.default.createElement(
4727
+ "button",
4728
+ {
4729
+ onClick: () => setIsDescExpanded(!isDescExpanded),
4730
+ className: "ml-2 mb-0.5 text-neutral-400 hover:text-black transition-colors outline-none shrink-0"
4731
+ },
4732
+ /* @__PURE__ */ import_react89.default.createElement(
4733
+ import_react90.HugeiconsIcon,
4734
+ {
4735
+ icon: import_core_free_icons33.ArrowDown01Icon,
4736
+ size: 18,
4737
+ className: `transform transition-transform ${isDescExpanded ? "rotate-180" : ""}`
4738
+ }
4739
+ )
4740
+ ))), lightboxIndex !== null && /* @__PURE__ */ import_react89.default.createElement("div", { className: "fixed inset-0 z-50 bg-black/30 flex flex-col" }, /* @__PURE__ */ import_react89.default.createElement("div", { className: "w-full p-4 sm:p-6 flex justify-end" }, /* @__PURE__ */ import_react89.default.createElement(
4741
+ "button",
4742
+ {
4743
+ onClick: () => setLightboxIndex(null),
4744
+ className: "p-3 text-white bg-white/30 rounded-full transition-colors outline-none"
4745
+ },
4746
+ /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.Cancel01Icon, size: 24 })
4747
+ )), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex-1 flex items-center justify-between px-4 sm:px-10 pb-10" }, /* @__PURE__ */ import_react89.default.createElement("button", { onClick: handlePrev, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 24 })), /* @__PURE__ */ import_react89.default.createElement("div", { className: "flex-1 h-full max-h-[80vh]" }, /* @__PURE__ */ import_react89.default.createElement(LightboxImage, { src: app.screenshots[lightboxIndex] })), /* @__PURE__ */ import_react89.default.createElement("button", { onClick: handleNext, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowRight01Icon, size: 24 }))), /* @__PURE__ */ import_react89.default.createElement("div", { className: "sm:hidden flex justify-between px-8 pb-12 w-full" }, /* @__PURE__ */ import_react89.default.createElement("button", { onClick: handlePrev, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowLeft01Icon, size: 24 })), /* @__PURE__ */ import_react89.default.createElement("button", { onClick: handleNext, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ import_react89.default.createElement(import_react90.HugeiconsIcon, { icon: import_core_free_icons33.ArrowRight01Icon, size: 24 })))));
4748
+ };
4749
+
4750
+ // src/components/UniversalAppCategoryGrid.tsx
4751
+ var import_react91 = __toESM(require("react"));
4752
+ var import_react92 = require("@hugeicons/react");
4753
+ var import_core_free_icons34 = require("@hugeicons/core-free-icons");
4754
+ var AppGridCard = ({ app }) => {
4755
+ const [isLoading, setIsLoading] = (0, import_react91.useState)(true);
4756
+ return /* @__PURE__ */ import_react91.default.createElement(
4757
+ "button",
4758
+ {
4759
+ onClick: app.onClick,
4760
+ className: "flex flex-col gap-3 group cursor-pointer w-25 text-left outline-none"
4761
+ },
4762
+ /* @__PURE__ */ import_react91.default.createElement("div", { className: "relative w-full aspect-square rounded-2xl bg-white overflow-hidden transition-all duration-300 flex items-center justify-center" }, isLoading && /* @__PURE__ */ import_react91.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ import_react91.default.createElement(import_react92.HugeiconsIcon, { icon: import_core_free_icons34.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react91.default.createElement(
4763
+ "img",
4764
+ {
4765
+ src: app.logoSrc,
4766
+ alt: app.name,
4767
+ loading: "lazy",
4768
+ onLoad: () => setIsLoading(false),
4769
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4770
+ }
4771
+ )),
4772
+ /* @__PURE__ */ import_react91.default.createElement("div", { className: "flex flex-col min-w-0 px-1" }, /* @__PURE__ */ import_react91.default.createElement("span", { className: "text-[13px] text-black tracking-tight truncate group-hover:text-neutral-600 transition-colors" }, app.name), /* @__PURE__ */ import_react91.default.createElement("span", { className: "text-[10px] text-neutral-500 tracking-wide truncate mt-0.5" }, app.category))
4773
+ );
4774
+ };
4775
+ var UniversalAppCategoryGrid = ({
4776
+ tagline,
4777
+ categoryTitle,
4778
+ apps
4779
+ }) => {
4780
+ return /* @__PURE__ */ import_react91.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react91.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react91.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react91.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react91.default.createElement("div", { className: "relative z-10" }, tagline && /* @__PURE__ */ import_react91.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), categoryTitle && /* @__PURE__ */ import_react91.default.createElement("h2", { className: "text-2xl sm:text-3xl tracking-tight text-black leading-[1.1]" }, categoryTitle))), /* @__PURE__ */ import_react91.default.createElement("div", { className: "grid grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 gap-4 sm:gap-6 px-1" }, apps.map((app) => /* @__PURE__ */ import_react91.default.createElement(AppGridCard, { key: app.id, app }))))));
4604
4781
  };
4605
4782
  // Annotate the CommonJS export names for ESM import in node:
4606
4783
  0 && (module.exports = {
@@ -4639,6 +4816,9 @@ var ContentGridBlock = ({
4639
4816
  ThreeDActionButton,
4640
4817
  ThreeDButton,
4641
4818
  UniversalAgentConsole,
4819
+ UniversalAppCategoryGrid,
4820
+ UniversalAppDetails,
4821
+ UniversalAppLibrary,
4642
4822
  UniversalBillingPage,
4643
4823
  UniversalCheckoutView,
4644
4824
  UniversalDashboardPage,
package/dist/index.mjs CHANGED
@@ -2378,7 +2378,7 @@ var UniversalMembersPage = ({
2378
2378
  setSelectedMember(member);
2379
2379
  setCurrentView("details");
2380
2380
  },
2381
- className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2381
+ className: "flex items-center justify-between hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
2382
2382
  },
2383
2383
  /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, member.displayImage && member.displayImage !== "NO_IMAGE" ? /* @__PURE__ */ React29.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full overflow-hidden bg-neutral-100" }, /* @__PURE__ */ React29.createElement(
2384
2384
  "img",
@@ -3208,10 +3208,9 @@ var UniversalDirectoryPage = ({
3208
3208
  {
3209
3209
  key: item.id,
3210
3210
  onClick: () => onRowClick(item.id),
3211
- className: "flex items-center justify-between p-4 sm:p-5 hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
3211
+ className: "flex items-center justify-between hover:bg-neutral-50/50 transition-colors cursor-pointer group min-w-0"
3212
3212
  },
3213
- /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React38.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ React38.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React38.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ React38.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText))),
3214
- item.rightBadge && /* @__PURE__ */ React38.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ React38.createElement("span", { className: `text-[11px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap ${item.rightBadgeClass || "text-neutral-500 border border-neutral-100 bg-white"}` }, item.rightBadge))
3213
+ /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React38.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ React38.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React38.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ React38.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText)))
3215
3214
  ))), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ React38.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] " }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ React38.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React38.createElement(
3216
3215
  "button",
3217
3216
  {
@@ -3567,7 +3566,7 @@ var DriveItemOpener = ({ item, onClose }) => {
3567
3566
  const i = Math.floor(Math.log(num) / Math.log(k));
3568
3567
  return parseFloat((num / Math.pow(k, i)).toFixed(1)) + " " + sizes[i];
3569
3568
  };
3570
- return /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-200 bg-black/95 flex flex-col animate-in fade-in duration-200" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center justify-between p-4 border-b border-white/10 bg-black" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React42.createElement("div", { className: "w-10 h-10 bg-white/10 rounded-xl flex items-center justify-center" }, /* @__PURE__ */ React42.createElement("div", { className: "invert grayscale brightness-200" }, /* @__PURE__ */ React42.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType }))), /* @__PURE__ */ React42.createElement("div", null, /* @__PURE__ */ React42.createElement("h3", { className: "text-sm font-medium text-white tracking-wide" }, item.name), /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-white/50 mt-0.5" }, item.type, " \u2022 ", formatBytes(item.size), " \u2022 ", new Date(item.updatedAt).toLocaleDateString()))), /* @__PURE__ */ React42.createElement(
3569
+ return /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-200 bg-black/95 flex flex-col animate-in fade-in duration-200" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center justify-between p-4 border-b border-white/10 bg-black" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React42.createElement("div", { className: "w-10 h-10 bg-white/10 rounded-xl flex items-center justify-center" }, /* @__PURE__ */ React42.createElement("div", { className: "invert grayscale brightness-200" }, /* @__PURE__ */ React42.createElement(FileIconMapper, { type: item.type, mimeType: item.mimeType }))), /* @__PURE__ */ React42.createElement("div", null, /* @__PURE__ */ React42.createElement("h3", { className: "text-sm text-white tracking-wide" }, item.name), /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-white/50 mt-0.5" }, item.type, " \u2022 ", formatBytes(item.size), " \u2022 ", new Date(item.updatedAt).toLocaleDateString()))), /* @__PURE__ */ React42.createElement(
3571
3570
  "button",
3572
3571
  {
3573
3572
  onClick: onClose,
@@ -4253,7 +4252,7 @@ var UniversalRegistrationFlow = ({
4253
4252
  return /* @__PURE__ */ React47.createElement("div", { key: num, className: "flex items-center gap-3 p-4 border border-neutral-100 rounded-full bg-neutral-50 text-neutral-500 text-sm w-full" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: Loading03Icon15, size: 18, className: "animate-spin text-black" }), " Uploading Document ", num, "...");
4254
4253
  }
4255
4254
  return /* @__PURE__ */ React47.createElement("div", { key: num, className: "flex items-center justify-between p-4 bg-emerald-50 rounded-full text-emerald-800 text-sm w-full" }, /* @__PURE__ */ React47.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: CheckmarkBadge01Icon2, size: 18 }), " Optional Document ", num, " Uploaded"), !isReadOnly && /* @__PURE__ */ React47.createElement("button", { onClick: () => deleteOptionalDocument(docType), disabled: isAnyUploading, className: "text-emerald-700 hover:text-red-500 transition-colors p-1 outline-none shrink-0 disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: Delete02Icon3, size: 16 })));
4256
- }))), /* @__PURE__ */ React47.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ React47.createElement("button", { onClick: handleBack, disabled: isAnyUploading, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon10, size: 14 }), " Back"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep1Valid || isAnyUploading, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 2 && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React47.createElement("div", null, /* @__PURE__ */ React47.createElement("h3", { className: "text-sm mb-5 text-black" }, "Application Summary"), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-4 text-sm" }, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 truncate text-[13px] " }, type === "company" ? "Company Name" : "Business Name"), /* @__PURE__ */ React47.createElement("span", { className: " text-black text-[13px]" }, formData.approvedName)), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Classification"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate sm:text-right text-[13px] " }, formData.natureOfBusiness?.specificLabel || "Pending")), type === "company" ? /* @__PURE__ */ React47.createElement(React47.Fragment, null, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Total Members"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, formData.members.length, " Directors/Shareholders")), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Share Capital"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, "100% Allocated"))) : /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Proprietor"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, formData.ownerName)), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Documents Attached"), /* @__PURE__ */ React47.createElement("span", { className: " text-neutral-400 text-[13px] " }, "ID, Passport, Signature")), formData.otherDoc1Url && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Optional Documents"), /* @__PURE__ */ React47.createElement("span", { className: " text-neutral-400 text-[13px] " }, [formData.otherDoc1Url, formData.otherDoc2Url, formData.otherDoc3Url].filter(Boolean).length, " Attached")))), /* @__PURE__ */ React47.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 " }, /* @__PURE__ */ React47.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 rounded-full text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 transition-colors outline-none" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon10, size: 14 }), " Back"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleNext, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 3 && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-6 py-6 animate-in zoom-in-95 duration-500" }, /* @__PURE__ */ React47.createElement("h2", { className: "text-lg text-black tracking-tight mb-2" }, "Terms and Conditions of Application"), /* @__PURE__ */ React47.createElement("div", { className: "text-xs text-neutral-500 mb-4" }, /* @__PURE__ */ React47.createElement("p", { className: " mb-3" }, "Declaration and Consent"), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "By proceeding with this application, you acknowledge and agree that all data, documents, and identification materials provided herein will be securely transmitted to the relevant official registries and authorized agents for the purpose of ", type === "company" ? "company" : "business", " incorporation and compliance verification."), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "You confirm that all information provided is accurate and authentic. Any falsification of identity or corporate data may result in immediate rejection, and you may be held liable under applicable laws and regulations."), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "This service operates strictly as a digital intermediary connecting you with official registries. The final approval of the ", type === "company" ? "company" : "business", " name and registration rests solely with the regulatory authorities. We are not liable for rejections arising from pre existing conflicts, non compliance, or regulatory policy changes not flagged during the AI pre check stages."), /* @__PURE__ */ React47.createElement("p", { className: "leading-relaxed" }, "Proceeding to generate the invoice confirms your acceptance of these terms and initiates the formal filing process.")), /* @__PURE__ */ React47.createElement("label", { className: "flex items-start gap-3 mt-2 cursor-pointer group" }, /* @__PURE__ */ React47.createElement("input", { type: "checkbox", checked: iAgree, onChange: (e) => setIAgree(e.target.checked), disabled: isReadOnly, className: "mt-0.5 w-4 h-4 accent-black rounded cursor-pointer" }), /* @__PURE__ */ React47.createElement("span", { className: "text-[13px] text-red-500 group-hover:text-red-600 transition-colors" }, "I have read, understood, and agree to the terms of data transfer and processing.")), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-4 mt-8 w-full justify-end pt-6" }, /* @__PURE__ */ React47.createElement("button", { onClick: onCancelOrClose, disabled: isSubmitting, className: "px-8 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none w-full sm:w-auto" }, "Cancel"), /* @__PURE__ */ React47.createElement("button", { onClick: () => setMacroStep(0), disabled: isSubmitting || isReadOnly, className: "px-8 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none w-full sm:w-auto" }, "Edit Application"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleFinalSubmit, disabled: isSubmitting || !iAgree || isReadOnly, isLoading: isSubmitting, className: "min-w-40 w-full sm:w-auto" }, "Submit")))), activeModal.isOpen && /* @__PURE__ */ React47.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }) }), /* @__PURE__ */ React47.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ React47.createElement("div", { className: "p-4 text-center w-full shrink-0" }, /* @__PURE__ */ React47.createElement("h3", { className: "text-[14px] text-black tracking-tight capitalize" }, "Select ", activeModal.type)), /* @__PURE__ */ React47.createElement("div", { className: "p-4 flex flex-col gap-2 overflow-y-auto custom-scrollbar" }, (activeModal.type === "state" ? NIGERIAN_STATES : activeModal.type === "role" ? MEMBER_ROLES : NATIONALITIES).map((opt) => {
4255
+ }))), /* @__PURE__ */ React47.createElement("div", { className: "flex items-center justify-between mt-8 pt-6 " }, /* @__PURE__ */ React47.createElement("button", { onClick: handleBack, disabled: isAnyUploading, className: "flex items-center gap-2 px-6 py-2 text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full transition-colors outline-none disabled:opacity-50 disabled:cursor-not-allowed" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon10, size: 14 }), " Back"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleNext, disabled: !isStep1Valid || isAnyUploading, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 2 && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React47.createElement("div", null, /* @__PURE__ */ React47.createElement("h3", { className: "text-sm mb-5 text-black" }, "Application Summary"), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-4 text-sm" }, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 truncate text-[13px] " }, type === "company" ? "Company Name" : "Business Name"), /* @__PURE__ */ React47.createElement("span", { className: " text-black text-[13px]" }, formData.approvedName)), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Classification"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate sm:text-right text-[13px] " }, formData.natureOfBusiness?.specificLabel || "Pending")), type === "company" ? /* @__PURE__ */ React47.createElement(React47.Fragment, null, /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Total Members"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, formData.members.length, " Directors/Shareholders")), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Share Capital"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, "100% Allocated"))) : /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between border-b border-neutral-100 pb-3 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Proprietor"), /* @__PURE__ */ React47.createElement("span", { className: " text-black truncate text-[13px] " }, formData.ownerName)), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Documents Attached"), /* @__PURE__ */ React47.createElement("span", { className: " text-neutral-400 text-[13px] " }, "ID, Passport, Signature")), formData.otherDoc1Url && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row sm:justify-between pb-2 gap-1" }, /* @__PURE__ */ React47.createElement("span", { className: "text-neutral-500 text-[13px] " }, "Optional Documents"), /* @__PURE__ */ React47.createElement("span", { className: " text-neutral-400 text-[13px] " }, [formData.otherDoc1Url, formData.otherDoc2Url, formData.otherDoc3Url].filter(Boolean).length, " Attached")))), /* @__PURE__ */ React47.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 " }, /* @__PURE__ */ React47.createElement("button", { onClick: handleBack, className: "flex items-center gap-2 px-6 py-2 rounded-full text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 transition-colors outline-none" }, /* @__PURE__ */ React47.createElement(HugeiconsIcon32, { icon: ArrowLeft01Icon10, size: 14 }), " Back"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleNext, className: "w-fit shrink-0" }, "Next Step"))), macroStep === 3 && /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col gap-6 py-6 animate-in zoom-in-95 duration-500" }, /* @__PURE__ */ React47.createElement("h2", { className: "text-lg text-black tracking-tight mb-2" }, "Terms and Conditions of Application"), /* @__PURE__ */ React47.createElement("div", { className: "text-xs text-neutral-500 mb-4" }, /* @__PURE__ */ React47.createElement("p", { className: " mb-3" }, "Declaration and Consent"), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "By proceeding with this application, you acknowledge and agree that all data, documents, and identification materials provided herein will be securely transmitted to the relevant official registries and authorized agents for the purpose of ", type === "company" ? "company" : "business", " incorporation and compliance verification."), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "You confirm that all information provided is accurate and authentic. Any falsification of identity or corporate data may result in immediate rejection, and you may be held liable under applicable laws and regulations."), /* @__PURE__ */ React47.createElement("p", { className: "mb-3 leading-relaxed" }, "This service operates strictly as a digital intermediary connecting you with official registries. The final approval of the ", type === "company" ? "company" : "business", " name and registration rests solely with the regulatory authorities. We are not liable for rejections arising from pre existing conflicts, non compliance, or regulatory policy changes not flagged during the AI pre check stages."), /* @__PURE__ */ React47.createElement("p", { className: "leading-relaxed" }, "Proceeding to generate the invoice confirms your acceptance of these terms and initiates the formal filing process.")), /* @__PURE__ */ React47.createElement("label", { className: "flex items-start gap-3 mt-2 cursor-pointer group" }, /* @__PURE__ */ React47.createElement("input", { type: "checkbox", checked: iAgree, onChange: (e) => setIAgree(e.target.checked), disabled: isReadOnly, className: "mt-0.5 w-4 h-4 accent-black rounded cursor-pointer" }), /* @__PURE__ */ React47.createElement("span", { className: "text-[13px] text-neutral-500 group-hover:text-neutral-600 transition-colors" }, "I have read, understood, and agree to the terms of data transfer and processing.")), /* @__PURE__ */ React47.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-4 mt-8 w-full justify-end pt-6" }, /* @__PURE__ */ React47.createElement("button", { onClick: onCancelOrClose, disabled: isSubmitting, className: "text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full px-8 py-2.5 border border-neutral-100 transition-colors outline-none w-full sm:w-auto" }, "Cancel"), /* @__PURE__ */ React47.createElement("button", { onClick: () => setMacroStep(0), disabled: isSubmitting || isReadOnly, className: " text-[11px] tracking-widest text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full px-8 py-2.5 border border-neutral-100transition-colors outline-none w-full sm:w-auto" }, "Edit Application"), /* @__PURE__ */ React47.createElement(ThreeDActionButton, { onClick: handleFinalSubmit, disabled: isSubmitting || !iAgree || isReadOnly, isLoading: isSubmitting, className: "min-w-40 w-full sm:w-auto" }, "Submit")))), activeModal.isOpen && /* @__PURE__ */ React47.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React47.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }) }), /* @__PURE__ */ React47.createElement("div", { className: "relative w-80 bg-white shadow-2xl rounded-3xl flex flex-col overflow-hidden animate-in zoom-in-95 duration-200 max-h-[80vh]" }, /* @__PURE__ */ React47.createElement("div", { className: "p-4 text-center w-full shrink-0" }, /* @__PURE__ */ React47.createElement("h3", { className: "text-[14px] text-black tracking-tight capitalize" }, "Select ", activeModal.type)), /* @__PURE__ */ React47.createElement("div", { className: "p-4 flex flex-col gap-2 overflow-y-auto custom-scrollbar" }, (activeModal.type === "state" ? NIGERIAN_STATES : activeModal.type === "role" ? MEMBER_ROLES : NATIONALITIES).map((opt) => {
4257
4256
  const isSelected = activeModal.isGlobalState ? formData.state === opt : formData.members[activeModal.memberIndex][activeModal.type] === opt;
4258
4257
  return /* @__PURE__ */ React47.createElement("button", { key: opt, onClick: () => {
4259
4258
  if (activeModal.isGlobalState) setFormData({ ...formData, state: opt });
@@ -4410,8 +4409,48 @@ SECRET_KEY="${secKey}"
4410
4409
  )))));
4411
4410
  };
4412
4411
 
4412
+ // src/components/UniversalAppLibrary.tsx
4413
+ import React49, { useState as useState29 } from "react";
4414
+ import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
4415
+ import { Loading03Icon as Loading03Icon17 } from "@hugeicons/core-free-icons";
4416
+ var AppCard = ({ app }) => {
4417
+ const [isLoading, setIsLoading] = useState29(true);
4418
+ return /* @__PURE__ */ React49.createElement(
4419
+ "button",
4420
+ {
4421
+ onClick: app.onClick,
4422
+ className: "flex flex-col gap-3 group cursor-pointer w-25 shrink-0 text-left outline-none"
4423
+ },
4424
+ /* @__PURE__ */ React49.createElement("div", { className: "relative w-full aspect-square rounded-2xl bg-white overflow-hidden transition-all duration-300 flex items-center justify-center" }, isLoading && /* @__PURE__ */ React49.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ React49.createElement(HugeiconsIcon34, { icon: Loading03Icon17, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React49.createElement(
4425
+ "img",
4426
+ {
4427
+ src: app.logoSrc,
4428
+ alt: app.name,
4429
+ loading: "lazy",
4430
+ onLoad: () => setIsLoading(false),
4431
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4432
+ }
4433
+ )),
4434
+ /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col min-w-0 px-1" }, /* @__PURE__ */ React49.createElement("span", { className: "text-[13px] text-black tracking-tight truncate group-hover:text-neutral-600 transition-colors" }, app.name), /* @__PURE__ */ React49.createElement("span", { className: "text-[10px] text-neutral-500 tracking-wide truncate mt-0.5" }, app.category))
4435
+ );
4436
+ };
4437
+ var UniversalAppLibrary = ({
4438
+ tagline,
4439
+ headline,
4440
+ categories
4441
+ }) => {
4442
+ return /* @__PURE__ */ React49.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React49.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React49.createElement("div", { className: "max-w-6xl w-full" }, (tagline || headline) && /* @__PURE__ */ React49.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React49.createElement("div", { className: "relative z-10" }, tagline && /* @__PURE__ */ React49.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), headline && /* @__PURE__ */ React49.createElement("h2", { className: "text-2xl sm:text-3xl tracking-tight text-black leading-[1.1]" }, headline))), /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col gap-14" }, categories.map((category) => /* @__PURE__ */ React49.createElement("div", { key: category.id, className: "flex flex-col" }, /* @__PURE__ */ React49.createElement("div", { className: "flex items-end justify-between mb-5 px-1" }, /* @__PURE__ */ React49.createElement("h3", { className: "text-lg text-black tracking-tight " }, category.title), category.onSeeMore && /* @__PURE__ */ React49.createElement(
4443
+ "button",
4444
+ {
4445
+ onClick: category.onSeeMore,
4446
+ className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors outline-none shrink-0 ml-4 pb-0.5"
4447
+ },
4448
+ category.seeMoreLabel || "See More"
4449
+ )), /* @__PURE__ */ React49.createElement("div", { className: "flex gap-4 sm:gap-6 overflow-x-auto pb-6 pt-2 -mx-4 px-4 sm:mx-0 sm:px-1 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] scrollbar-none" }, category.apps.map((app) => /* @__PURE__ */ React49.createElement(AppCard, { key: app.id, app }))), /* @__PURE__ */ React49.createElement("div", { className: "w-full h-px mt-2 last-of-type:hidden" })))))));
4450
+ };
4451
+
4413
4452
  // src/components/MedicalFeatureStatsBlock.tsx
4414
- import React49, { useState as useState29, useEffect as useEffect20, useRef as useRef12 } from "react";
4453
+ import React50, { useState as useState30, useEffect as useEffect20, useRef as useRef12 } from "react";
4415
4454
  import Image11 from "next/image";
4416
4455
  var MedicalFeatureStatsBlock = ({
4417
4456
  bottomHeadline,
@@ -4420,7 +4459,7 @@ var MedicalFeatureStatsBlock = ({
4420
4459
  trustText,
4421
4460
  stats
4422
4461
  }) => {
4423
- const [isAnimating, setIsAnimating] = useState29(false);
4462
+ const [isAnimating, setIsAnimating] = useState30(false);
4424
4463
  const titleRef = useRef12(null);
4425
4464
  useEffect20(() => {
4426
4465
  const observer = new IntersectionObserver(
@@ -4440,7 +4479,7 @@ var MedicalFeatureStatsBlock = ({
4440
4479
  }
4441
4480
  return () => observer.disconnect();
4442
4481
  }, []);
4443
- return /* @__PURE__ */ React49.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ React49.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React49.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React49.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React49.createElement(
4482
+ return /* @__PURE__ */ React50.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ React50.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React50.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React50.createElement(
4444
4483
  "h2",
4445
4484
  {
4446
4485
  ref: titleRef,
@@ -4448,7 +4487,7 @@ var MedicalFeatureStatsBlock = ({
4448
4487
  style: isAnimating ? { animationIterationCount: 1 } : {}
4449
4488
  },
4450
4489
  bottomHeadline
4451
- ), /* @__PURE__ */ React49.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ React49.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React49.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React49.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ React49.createElement(
4490
+ ), /* @__PURE__ */ React50.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ React50.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React50.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React50.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ React50.createElement(
4452
4491
  Image11,
4453
4492
  {
4454
4493
  src,
@@ -4457,17 +4496,17 @@ var MedicalFeatureStatsBlock = ({
4457
4496
  sizes: "48px",
4458
4497
  className: "object-cover"
4459
4498
  }
4460
- )))), /* @__PURE__ */ React49.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React49.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React49.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React49.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React49.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React49.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4499
+ )))), /* @__PURE__ */ React50.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React50.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React50.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React50.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React50.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React50.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4461
4500
  };
4462
4501
 
4463
4502
  // src/components/ConsultantShowcase.tsx
4464
- import React50, { useState as useState30 } from "react";
4503
+ import React51, { useState as useState31 } from "react";
4465
4504
  import Image12 from "next/image";
4466
- import { HugeiconsIcon as HugeiconsIcon34 } from "@hugeicons/react";
4467
- import { Loading03Icon as Loading03Icon17 } from "@hugeicons/core-free-icons";
4505
+ import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
4506
+ import { Loading03Icon as Loading03Icon18 } from "@hugeicons/core-free-icons";
4468
4507
  var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
4469
- const [isLoading, setIsLoading] = useState30(true);
4470
- return /* @__PURE__ */ React50.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React50.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React50.createElement(HugeiconsIcon34, { icon: Loading03Icon17, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React50.createElement(
4508
+ const [isLoading, setIsLoading] = useState31(true);
4509
+ return /* @__PURE__ */ React51.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon35, { icon: Loading03Icon18, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React51.createElement(
4471
4510
  Image12,
4472
4511
  {
4473
4512
  src,
@@ -4486,9 +4525,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
4486
4525
  var ConsultantShowcase = ({
4487
4526
  profiles
4488
4527
  }) => {
4489
- const [currentIndex, setCurrentIndex] = useState30(0);
4490
- const [touchStart, setTouchStart] = useState30(null);
4491
- const [touchEnd, setTouchEnd] = useState30(null);
4528
+ const [currentIndex, setCurrentIndex] = useState31(0);
4529
+ const [touchStart, setTouchStart] = useState31(null);
4530
+ const [touchEnd, setTouchEnd] = useState31(null);
4492
4531
  const nextSlide = () => {
4493
4532
  setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
4494
4533
  };
@@ -4513,7 +4552,7 @@ var ConsultantShowcase = ({
4513
4552
  }
4514
4553
  };
4515
4554
  if (!profiles || profiles.length === 0) return null;
4516
- return /* @__PURE__ */ React50.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React50.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React50.createElement(
4555
+ return /* @__PURE__ */ React51.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React51.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React51.createElement(
4517
4556
  "div",
4518
4557
  {
4519
4558
  className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
@@ -4523,13 +4562,13 @@ var ConsultantShowcase = ({
4523
4562
  },
4524
4563
  profiles.map((profile, idx) => {
4525
4564
  const isActive = idx === currentIndex;
4526
- return /* @__PURE__ */ React50.createElement(
4565
+ return /* @__PURE__ */ React51.createElement(
4527
4566
  "div",
4528
4567
  {
4529
4568
  key: profile.id,
4530
4569
  className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
4531
4570
  },
4532
- /* @__PURE__ */ React50.createElement(
4571
+ /* @__PURE__ */ React51.createElement(
4533
4572
  ImageWithLoader,
4534
4573
  {
4535
4574
  src: profile.imageSrc,
@@ -4537,14 +4576,14 @@ var ConsultantShowcase = ({
4537
4576
  priority: idx === 0
4538
4577
  }
4539
4578
  ),
4540
- /* @__PURE__ */ React50.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
4541
- /* @__PURE__ */ React50.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
4542
- /* @__PURE__ */ React50.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ React50.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React50.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React50.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React50.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide mt-1" }, profile.description)))
4579
+ /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
4580
+ /* @__PURE__ */ React51.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
4581
+ /* @__PURE__ */ React51.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ React51.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React51.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React51.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide mt-1" }, profile.description)))
4543
4582
  );
4544
4583
  }),
4545
- /* @__PURE__ */ React50.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
4546
- /* @__PURE__ */ React50.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
4547
- /* @__PURE__ */ React50.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ React50.createElement(
4584
+ /* @__PURE__ */ React51.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
4585
+ /* @__PURE__ */ React51.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
4586
+ /* @__PURE__ */ React51.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ React51.createElement(
4548
4587
  "button",
4549
4588
  {
4550
4589
  key: idx,
@@ -4557,13 +4596,13 @@ var ConsultantShowcase = ({
4557
4596
  };
4558
4597
 
4559
4598
  // src/components/ContentGridBlock.tsx
4560
- import React51, { useState as useState31 } from "react";
4599
+ import React52, { useState as useState32 } from "react";
4561
4600
  import Image13 from "next/image";
4562
- import { HugeiconsIcon as HugeiconsIcon35 } from "@hugeicons/react";
4563
- import { Loading03Icon as Loading03Icon18 } from "@hugeicons/core-free-icons";
4601
+ import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
4602
+ import { Loading03Icon as Loading03Icon19 } from "@hugeicons/core-free-icons";
4564
4603
  var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
4565
- const [isLoading, setIsLoading] = useState31(true);
4566
- return /* @__PURE__ */ React51.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ React51.createElement(HugeiconsIcon35, { icon: Loading03Icon18, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React51.createElement(
4604
+ const [isLoading, setIsLoading] = useState32(true);
4605
+ return /* @__PURE__ */ React52.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ React52.createElement(HugeiconsIcon36, { icon: Loading03Icon19, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React52.createElement(
4567
4606
  Image13,
4568
4607
  {
4569
4608
  src,
@@ -4585,14 +4624,159 @@ var ContentGridBlock = ({
4585
4624
  middleBottomCard,
4586
4625
  rightCards
4587
4626
  }) => {
4588
- return /* @__PURE__ */ React51.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React51.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React51.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React51.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React51.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React51.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React51.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React51.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React51.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React51.createElement("div", null, /* @__PURE__ */ React51.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React51.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ React51.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React51.createElement(Image13, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React51.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React51.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React51.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React51.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React51.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React51.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ React51.createElement(Image13, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React51.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ React51.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React51.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-100 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ React51.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React51.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React51.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React51.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React51.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React51.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React51.createElement("div", null, /* @__PURE__ */ React51.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React51.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ React51.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React51.createElement(Image13, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React51.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React51.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React51.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React51.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React51.createElement("div", { key: idx, className: "relative w-full h-80 rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React51.createElement(
4627
+ return /* @__PURE__ */ React52.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React52.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React52.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React52.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React52.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React52.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React52.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React52.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React52.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ React52.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React52.createElement(Image13, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React52.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React52.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React52.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React52.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React52.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ React52.createElement(Image13, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React52.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ React52.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React52.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-100 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ React52.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React52.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React52.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React52.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React52.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React52.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React52.createElement("div", null, /* @__PURE__ */ React52.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React52.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ React52.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React52.createElement(Image13, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React52.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React52.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React52.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React52.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React52.createElement("div", { key: idx, className: "relative w-full h-80 rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React52.createElement(
4589
4628
  ImageWithLoader2,
4590
4629
  {
4591
4630
  src: card.bgImageSrc,
4592
4631
  alt: card.title,
4593
4632
  className: "absolute inset-0 w-full h-full"
4594
4633
  }
4595
- ), /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 bg-black/20 z-20 pointer-events-none" }), /* @__PURE__ */ React51.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ React51.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ React51.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ React51.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React51.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ React51.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
4634
+ ), /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 bg-black/20 z-20 pointer-events-none" }), /* @__PURE__ */ React52.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ React52.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ React52.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ React52.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React52.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ React52.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
4635
+ };
4636
+
4637
+ // src/components/UniversalAppDetails.tsx
4638
+ import React53, { useState as useState33 } from "react";
4639
+ import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
4640
+ import {
4641
+ AppleIcon,
4642
+ AndroidIcon,
4643
+ Download01Icon as Download01Icon2,
4644
+ Bookmark02Icon,
4645
+ Loading03Icon as Loading03Icon20,
4646
+ ArrowDown01Icon as ArrowDown01Icon5,
4647
+ Cancel01Icon as Cancel01Icon5,
4648
+ ArrowLeft01Icon as ArrowLeft01Icon11,
4649
+ ArrowRight01Icon as ArrowRight01Icon9
4650
+ } from "@hugeicons/core-free-icons";
4651
+ var ScreenshotCard = ({ src, alt, onClick }) => {
4652
+ const [isLoading, setIsLoading] = useState33(true);
4653
+ return /* @__PURE__ */ React53.createElement(
4654
+ "button",
4655
+ {
4656
+ onClick,
4657
+ className: "relative w-28 sm:w-32 aspect-9/19 shrink-0 rounded-2xl overflow-hidden bg-neutral-100 border border-neutral-200/50 outline-none hover:opacity-90 transition-opacity"
4658
+ },
4659
+ isLoading && /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: Loading03Icon20, size: 24, className: "animate-spin text-neutral-400" })),
4660
+ /* @__PURE__ */ React53.createElement(
4661
+ "img",
4662
+ {
4663
+ src,
4664
+ alt,
4665
+ loading: "lazy",
4666
+ onLoad: () => setIsLoading(false),
4667
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4668
+ }
4669
+ )
4670
+ );
4671
+ };
4672
+ var LightboxImage = ({ src }) => {
4673
+ const [isLoading, setIsLoading] = useState33(true);
4674
+ return /* @__PURE__ */ React53.createElement("div", { className: "relative w-full h-full flex items-center justify-center p-4" }, isLoading && /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: Loading03Icon20, size: 32, className: "animate-spin text-white" })), /* @__PURE__ */ React53.createElement(
4675
+ "img",
4676
+ {
4677
+ src,
4678
+ alt: "Fullscreen Screenshot",
4679
+ onLoad: () => setIsLoading(false),
4680
+ className: `max-w-full max-h-full object-contain transition-all duration-500 z-20 ${isLoading ? "opacity-0 blur-md" : "opacity-100 blur-0"}`
4681
+ }
4682
+ ));
4683
+ };
4684
+ var UniversalAppDetails = ({ app, onBack }) => {
4685
+ const [isLogoLoading, setIsLogoLoading] = useState33(true);
4686
+ const [isDescExpanded, setIsDescExpanded] = useState33(false);
4687
+ const [lightboxIndex, setLightboxIndex] = useState33(null);
4688
+ const MAX_DESC_LENGTH = 150;
4689
+ const isDescLong = app.description.length > MAX_DESC_LENGTH;
4690
+ const displayDesc = isDescExpanded || !isDescLong ? app.description : `${app.description.substring(0, MAX_DESC_LENGTH)}...`;
4691
+ const handlePrev = () => {
4692
+ if (lightboxIndex !== null) {
4693
+ setLightboxIndex(lightboxIndex === 0 ? app.screenshots.length - 1 : lightboxIndex - 1);
4694
+ }
4695
+ };
4696
+ const handleNext = () => {
4697
+ if (lightboxIndex !== null) {
4698
+ setLightboxIndex(lightboxIndex === app.screenshots.length - 1 ? 0 : lightboxIndex + 1);
4699
+ }
4700
+ };
4701
+ return /* @__PURE__ */ React53.createElement("div", { className: "w-full max-w-3xl mx-auto pt-10 pb-20 px-6 min-h-screen flex flex-col items-center" }, /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col sm:flex-row items-start gap-4 w-full mb-10 text-left" }, /* @__PURE__ */ React53.createElement("div", { className: "relative w-20 h-20 sm:w-20 sm:h-20 md:w-24 md:h-24 lg:w-28 lg:h-28 shrink-0 rounded-2xl overflow-hidden flex items-center justify-center border border-neutral-100/50 bg-neutral-50" }, isLogoLoading && /* @__PURE__ */ React53.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100 animate-pulse" }), /* @__PURE__ */ React53.createElement(
4702
+ "img",
4703
+ {
4704
+ src: app.logoSrc,
4705
+ alt: `${app.name} Logo`,
4706
+ onLoad: () => setIsLogoLoading(false),
4707
+ className: `w-full h-full object-cover transition-opacity duration-300 z-20 ${isLogoLoading ? "opacity-0" : "opacity-100"}`
4708
+ }
4709
+ )), /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col justify-center pt-1 min-w-0" }, /* @__PURE__ */ React53.createElement("h1", { className: "text-xl text-black leading-tight mb-1 font-medium" }, /* @__PURE__ */ React53.createElement("span", { className: "block truncate" }, app.name)), /* @__PURE__ */ React53.createElement("span", { className: "text-xs mt-1 text-neutral-400 truncate max-w-full" }, app.tagline), /* @__PURE__ */ React53.createElement("div", { className: "flex flex-wrap items-center mt-4 gap-8 w-full" }, /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React53.createElement("div", { className: "flex items-center gap-1.5 h-6 text-neutral-800" }, app.platforms.android && /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: AndroidIcon, size: 18 }), app.platforms.ios && /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: AppleIcon, size: 18 })), /* @__PURE__ */ React53.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Platforms")), /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React53.createElement("span", { className: "text-sm font-medium h-6 flex items-center text-neutral-800 truncate" }, app.stats.type), /* @__PURE__ */ React53.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Type")), /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React53.createElement("span", { className: "text-sm font-medium h-6 flex items-center text-neutral-800 truncate" }, app.stats.size), /* @__PURE__ */ React53.createElement("span", { className: "text-[10px] text-neutral-400 mt-1" }, "Size"))))), /* @__PURE__ */ React53.createElement("div", { className: "flex flex-col sm:flex-row gap-4 items-center w-full mx-auto mb-12" }, app.ctaText && app.ctaHref && /* @__PURE__ */ React53.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React53.createElement(ThreeDButton, { href: app.ctaHref }, /* @__PURE__ */ React53.createElement("span", { className: "flex items-center justify-center gap-2" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: Download01Icon2, size: 16 }), app.ctaText))), app.secondaryCtaText && app.secondaryCtaHref && /* @__PURE__ */ React53.createElement(
4710
+ "a",
4711
+ {
4712
+ href: app.secondaryCtaHref,
4713
+ className: "w-full sm:w-60 inline-flex items-center justify-center gap-2 text-[11px] tracking-widest rounded-full px-8 py-2.5 border border-neutral-100 text-center text-black hover:bg-neutral-50 outline-none transition-colors"
4714
+ },
4715
+ /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: Bookmark02Icon, size: 16 }),
4716
+ app.secondaryCtaText
4717
+ )), /* @__PURE__ */ React53.createElement("div", { className: "w-full mb-12" }, /* @__PURE__ */ React53.createElement("h2", { className: "text-xl text-black font-medium mb-4" }, "About"), /* @__PURE__ */ React53.createElement("div", { className: "flex gap-3 overflow-x-auto pb-4 scrollbar-hide -mx-6 px-6" }, app.screenshots.map((src, idx) => /* @__PURE__ */ React53.createElement(
4718
+ ScreenshotCard,
4719
+ {
4720
+ key: idx,
4721
+ src,
4722
+ alt: `${app.name} Screenshot ${idx + 1}`,
4723
+ onClick: () => setLightboxIndex(idx)
4724
+ }
4725
+ ))), /* @__PURE__ */ React53.createElement("div", { className: "flex items-end text-neutral-500 text-sm leading-relaxed mt-2" }, /* @__PURE__ */ React53.createElement("p", { className: "flex-1 whitespace-pre-wrap" }, displayDesc), isDescLong && /* @__PURE__ */ React53.createElement(
4726
+ "button",
4727
+ {
4728
+ onClick: () => setIsDescExpanded(!isDescExpanded),
4729
+ className: "ml-2 mb-0.5 text-neutral-400 hover:text-black transition-colors outline-none shrink-0"
4730
+ },
4731
+ /* @__PURE__ */ React53.createElement(
4732
+ HugeiconsIcon37,
4733
+ {
4734
+ icon: ArrowDown01Icon5,
4735
+ size: 18,
4736
+ className: `transform transition-transform ${isDescExpanded ? "rotate-180" : ""}`
4737
+ }
4738
+ )
4739
+ ))), lightboxIndex !== null && /* @__PURE__ */ React53.createElement("div", { className: "fixed inset-0 z-50 bg-black/30 flex flex-col" }, /* @__PURE__ */ React53.createElement("div", { className: "w-full p-4 sm:p-6 flex justify-end" }, /* @__PURE__ */ React53.createElement(
4740
+ "button",
4741
+ {
4742
+ onClick: () => setLightboxIndex(null),
4743
+ className: "p-3 text-white bg-white/30 rounded-full transition-colors outline-none"
4744
+ },
4745
+ /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: Cancel01Icon5, size: 24 })
4746
+ )), /* @__PURE__ */ React53.createElement("div", { className: "flex-1 flex items-center justify-between px-4 sm:px-10 pb-10" }, /* @__PURE__ */ React53.createElement("button", { onClick: handlePrev, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon11, size: 24 })), /* @__PURE__ */ React53.createElement("div", { className: "flex-1 h-full max-h-[80vh]" }, /* @__PURE__ */ React53.createElement(LightboxImage, { src: app.screenshots[lightboxIndex] })), /* @__PURE__ */ React53.createElement("button", { onClick: handleNext, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: ArrowRight01Icon9, size: 24 }))), /* @__PURE__ */ React53.createElement("div", { className: "sm:hidden flex justify-between px-8 pb-12 w-full" }, /* @__PURE__ */ React53.createElement("button", { onClick: handlePrev, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: ArrowLeft01Icon11, size: 24 })), /* @__PURE__ */ React53.createElement("button", { onClick: handleNext, className: "p-3 text-white bg-white/30 rounded-full" }, /* @__PURE__ */ React53.createElement(HugeiconsIcon37, { icon: ArrowRight01Icon9, size: 24 })))));
4747
+ };
4748
+
4749
+ // src/components/UniversalAppCategoryGrid.tsx
4750
+ import React54, { useState as useState34 } from "react";
4751
+ import { HugeiconsIcon as HugeiconsIcon38 } from "@hugeicons/react";
4752
+ import { Loading03Icon as Loading03Icon21 } from "@hugeicons/core-free-icons";
4753
+ var AppGridCard = ({ app }) => {
4754
+ const [isLoading, setIsLoading] = useState34(true);
4755
+ return /* @__PURE__ */ React54.createElement(
4756
+ "button",
4757
+ {
4758
+ onClick: app.onClick,
4759
+ className: "flex flex-col gap-3 group cursor-pointer w-25 text-left outline-none"
4760
+ },
4761
+ /* @__PURE__ */ React54.createElement("div", { className: "relative w-full aspect-square rounded-2xl bg-white overflow-hidden transition-all duration-300 flex items-center justify-center" }, isLoading && /* @__PURE__ */ React54.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-50/50" }, /* @__PURE__ */ React54.createElement(HugeiconsIcon38, { icon: Loading03Icon21, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React54.createElement(
4762
+ "img",
4763
+ {
4764
+ src: app.logoSrc,
4765
+ alt: app.name,
4766
+ loading: "lazy",
4767
+ onLoad: () => setIsLoading(false),
4768
+ className: `w-full h-full object-cover transition-all duration-700 ease-out z-20 ${isLoading ? "opacity-0 scale-95 blur-md" : "opacity-100 scale-100 blur-0"}`
4769
+ }
4770
+ )),
4771
+ /* @__PURE__ */ React54.createElement("div", { className: "flex flex-col min-w-0 px-1" }, /* @__PURE__ */ React54.createElement("span", { className: "text-[13px] text-black tracking-tight truncate group-hover:text-neutral-600 transition-colors" }, app.name), /* @__PURE__ */ React54.createElement("span", { className: "text-[10px] text-neutral-500 tracking-wide truncate mt-0.5" }, app.category))
4772
+ );
4773
+ };
4774
+ var UniversalAppCategoryGrid = ({
4775
+ tagline,
4776
+ categoryTitle,
4777
+ apps
4778
+ }) => {
4779
+ return /* @__PURE__ */ React54.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React54.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React54.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React54.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React54.createElement("div", { className: "relative z-10" }, tagline && /* @__PURE__ */ React54.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), categoryTitle && /* @__PURE__ */ React54.createElement("h2", { className: "text-2xl sm:text-3xl tracking-tight text-black leading-[1.1]" }, categoryTitle))), /* @__PURE__ */ React54.createElement("div", { className: "grid grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 gap-4 sm:gap-6 px-1" }, apps.map((app) => /* @__PURE__ */ React54.createElement(AppGridCard, { key: app.id, app }))))));
4596
4780
  };
4597
4781
  export {
4598
4782
  AITranscriptionFeature,
@@ -4630,6 +4814,9 @@ export {
4630
4814
  ThreeDActionButton,
4631
4815
  ThreeDButton,
4632
4816
  UniversalAgentConsole,
4817
+ UniversalAppCategoryGrid,
4818
+ UniversalAppDetails,
4819
+ UniversalAppLibrary,
4633
4820
  UniversalBillingPage,
4634
4821
  UniversalCheckoutView,
4635
4822
  UniversalDashboardPage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "4.0.18",
3
+ "version": "4.0.20",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",