@retinalabsllc/zairusjs 1.0.1 → 1.0.2

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
@@ -276,10 +276,17 @@ interface PricingPlan {
276
276
  isPremium?: boolean;
277
277
  features: PricingFeature[];
278
278
  }
279
+ interface PricingTab {
280
+ label: string;
281
+ plans: PricingPlan[];
282
+ }
279
283
  interface ManagedPricingBlockProps {
280
284
  tagline?: string;
281
285
  title: React.ReactNode;
282
- plans: PricingPlan[];
286
+ /** Default plans if tabs are not used. Optional to support tab-only structures. */
287
+ plans?: PricingPlan[];
288
+ /** Optional tabs array to toggle between different sets of plans (e.g., Country, Monthly/Yearly) */
289
+ tabs?: PricingTab[];
283
290
  }
284
291
  declare const ManagedPricingBlock: React.FC<ManagedPricingBlockProps>;
285
292
 
@@ -1000,4 +1007,4 @@ interface ContentGridBlockProps {
1000
1007
  }
1001
1008
  declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
1002
1009
 
1003
- 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 CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, 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, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, 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, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
1010
+ 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 CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, 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, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, 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, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
package/dist/index.d.ts CHANGED
@@ -276,10 +276,17 @@ interface PricingPlan {
276
276
  isPremium?: boolean;
277
277
  features: PricingFeature[];
278
278
  }
279
+ interface PricingTab {
280
+ label: string;
281
+ plans: PricingPlan[];
282
+ }
279
283
  interface ManagedPricingBlockProps {
280
284
  tagline?: string;
281
285
  title: React.ReactNode;
282
- plans: PricingPlan[];
286
+ /** Default plans if tabs are not used. Optional to support tab-only structures. */
287
+ plans?: PricingPlan[];
288
+ /** Optional tabs array to toggle between different sets of plans (e.g., Country, Monthly/Yearly) */
289
+ tabs?: PricingTab[];
283
290
  }
284
291
  declare const ManagedPricingBlock: React.FC<ManagedPricingBlockProps>;
285
292
 
@@ -1000,4 +1007,4 @@ interface ContentGridBlockProps {
1000
1007
  }
1001
1008
  declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
1002
1009
 
1003
- 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 CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, 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, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, 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, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
1010
+ 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 CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, 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, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, 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, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
package/dist/index.js CHANGED
@@ -739,7 +739,7 @@ var HeroSection = ({
739
739
  className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 outline-none transition-colors"
740
740
  },
741
741
  secondaryCtaText
742
- )), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react9.default.createElement("div", { className: "w-full flex flex-col items-center mb-12 md:mb-16" }, appsText && /* @__PURE__ */ import_react9.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 uppercase mb-5" }, appsText), /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex flex-wrap justify-center items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react9.default.createElement("div", { key: idx, className: "relative h-7 w-7 flex items-center justify-center cursor-default" }, /* @__PURE__ */ import_react9.default.createElement(
742
+ )), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react9.default.createElement("div", { className: "w-full flex flex-col items-center mb-12 md:mb-16" }, appsText && /* @__PURE__ */ import_react9.default.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 uppercase mb-5" }, appsText), /* @__PURE__ */ import_react9.default.createElement("div", { className: "flex flex-wrap justify-center items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react9.default.createElement("div", { key: idx, className: "relative h-5 w-5 flex items-center justify-center cursor-default" }, /* @__PURE__ */ import_react9.default.createElement(
743
743
  import_image2.default,
744
744
  {
745
745
  src: logo.src,
@@ -1132,9 +1132,11 @@ var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react21.default.c
1132
1132
  var ManagedPricingBlock = ({
1133
1133
  tagline,
1134
1134
  title,
1135
- plans
1135
+ plans = [],
1136
+ tabs
1136
1137
  }) => {
1137
1138
  const [isAnimating, setIsAnimating] = (0, import_react21.useState)(false);
1139
+ const [activeTabIndex, setActiveTabIndex] = (0, import_react21.useState)(0);
1138
1140
  const titleRef = (0, import_react21.useRef)(null);
1139
1141
  (0, import_react21.useEffect)(() => {
1140
1142
  const observer = new IntersectionObserver(
@@ -1154,25 +1156,38 @@ var ManagedPricingBlock = ({
1154
1156
  }
1155
1157
  return () => observer.disconnect();
1156
1158
  }, []);
1159
+ const hasTabs = tabs && tabs.length > 0;
1160
+ const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
1157
1161
  return /* @__PURE__ */ import_react21.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-12" }, tagline && /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block uppercase" }, tagline), /* @__PURE__ */ import_react21.default.createElement(
1158
1162
  "h1",
1159
1163
  {
1160
1164
  ref: titleRef,
1161
- className: ` text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
1165
+ className: `text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
1162
1166
  style: isAnimating ? { animationIterationCount: 1 } : {}
1163
1167
  },
1164
1168
  title
1165
- )), /* @__PURE__ */ import_react21.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl" }, plans.map((plan, planIdx) => /* @__PURE__ */ import_react21.default.createElement(
1169
+ )), hasTabs && /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-center justify-center mb-10 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1.5 shadow-sm max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
1170
+ const isActive = activeTabIndex === idx;
1171
+ return /* @__PURE__ */ import_react21.default.createElement(
1172
+ "button",
1173
+ {
1174
+ key: idx,
1175
+ onClick: () => setActiveTabIndex(idx),
1176
+ className: `px-6 py-2 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-50 text-black font-medium border border-neutral-200/50" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50 border border-transparent"}`
1177
+ },
1178
+ tab.label
1179
+ );
1180
+ }))), /* @__PURE__ */ import_react21.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ import_react21.default.createElement(
1166
1181
  "div",
1167
1182
  {
1168
- key: planIdx,
1169
- className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden ${plan.isPremium ? "" : ""}`
1183
+ key: `${activeTabIndex}-${planIdx}`,
1184
+ className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
1170
1185
  },
1171
- /* @__PURE__ */ import_react21.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-5xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-xs text-neutral-500 mt-2" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react21.default.createElement(
1186
+ /* @__PURE__ */ import_react21.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-5xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react21.default.createElement(
1172
1187
  "div",
1173
1188
  {
1174
1189
  key: logoIdx,
1175
- className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
1190
+ className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
1176
1191
  },
1177
1192
  /* @__PURE__ */ import_react21.default.createElement(
1178
1193
  import_image5.default,
@@ -1189,7 +1204,7 @@ var ManagedPricingBlock = ({
1189
1204
  import_link5.default,
1190
1205
  {
1191
1206
  href: plan.ctaHref,
1192
- className: "w-full py-2 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none"
1207
+ className: "w-full py-2 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none block"
1193
1208
  },
1194
1209
  plan.ctaText
1195
1210
  ),
@@ -1708,7 +1723,7 @@ var ECOSYSTEM_APPS = [
1708
1723
  { id: "sheets", name: "Retina Sheets", description: "Advanced Spreadsheets", iconSrc: "https://retinalabs.company/assets/images/sheets.avif", url: "https://sheets.retinaapps.com/app" },
1709
1724
  { id: "drive", name: "Retina Drive", description: "Secure Cloud Storage", iconSrc: "https://retinalabs.company/assets/images/drive.avif", url: "https://drive.retinaapps.com/app" },
1710
1725
  { id: "calendar", name: "Retina Calendar", description: "Smart Scheduling", iconSrc: "https://retinalabs.company/assets/images/calendar.avif", url: "https://calendar.retinaapps.com/app" },
1711
- { id: "mail", name: "Retina Mail", description: "Encrypted Communications", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
1726
+ { id: "mail", name: "Retina Mail", description: "Secure Email Inbox", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
1712
1727
  ];
1713
1728
  var UniversalSidebar = ({
1714
1729
  navItems,
@@ -1898,7 +1913,7 @@ var UniversalSidebar = ({
1898
1913
  {
1899
1914
  key: app.id,
1900
1915
  href: app.url,
1901
- className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? " border border-neutral-100" : "hover:bg-neutral-50 border border-transparent"}`
1916
+ className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? " bg-neutral-50" : "hover:bg-neutral-50 border border-transparent"}`
1902
1917
  },
1903
1918
  /* @__PURE__ */ import_react36.default.createElement(
1904
1919
  "img",
@@ -2396,7 +2411,7 @@ var UniversalMembersPage = ({
2396
2411
  },
2397
2412
  /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.UserAdd01Icon, size: 12 }),
2398
2413
  "Add Member"
2399
- )), currentView !== "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react42.default.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react42.default.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react42.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.map((member) => /* @__PURE__ */ import_react42.default.createElement(
2414
+ )), currentView !== "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react42.default.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ import_react42.default.createElement(import_react43.HugeiconsIcon, { icon: import_core_free_icons11.ArrowLeft01Icon, size: 12 }), " Back"), /* @__PURE__ */ import_react42.default.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react42.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "divide-y divide-neutral-100" }, members.length === 0 ? /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No organization member") : members.map((member) => /* @__PURE__ */ import_react42.default.createElement(
2400
2415
  "div",
2401
2416
  {
2402
2417
  key: member.id,
@@ -3929,14 +3944,14 @@ var UniversalDeveloperSettings = ({
3929
3944
  setWebhookUrl(val.trim());
3930
3945
  };
3931
3946
  const downloadEnvironmentFile = (pubKey, secKey) => {
3932
- const envContent = `AUDDITUR_PUBLIC_KEY="${pubKey}"
3933
- AUDDITUR_SECRET_KEY="${secKey}"
3947
+ const envContent = `PUBLIC_KEY="${pubKey}"
3948
+ SECRET_KEY="${secKey}"
3934
3949
  `;
3935
3950
  const blob = new Blob([envContent], { type: "text/plain" });
3936
3951
  const url = URL.createObjectURL(blob);
3937
3952
  const link = document.createElement("a");
3938
3953
  link.href = url;
3939
- link.download = "auditor-keys.env";
3954
+ link.download = "retina-keys.txt";
3940
3955
  document.body.appendChild(link);
3941
3956
  link.click();
3942
3957
  document.body.removeChild(link);
@@ -4095,7 +4110,7 @@ var MedicalFeatureStatsBlock = ({
4095
4110
  sizes: "48px",
4096
4111
  className: "object-cover"
4097
4112
  }
4098
- )))), /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-[12px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react71.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react71.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ import_react71.default.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-[#000000] shrink-0" }), /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react71.default.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4113
+ )))), /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-[12px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react71.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react71.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center border border-neutral-100 rounded-full p-0.5 mb-6" }, /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react71.default.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4099
4114
  };
4100
4115
 
4101
4116
  // src/components/ConsultantShowcase.tsx
package/dist/index.mjs CHANGED
@@ -659,7 +659,7 @@ var HeroSection = ({
659
659
  className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 outline-none transition-colors"
660
660
  },
661
661
  secondaryCtaText
662
- )), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React7.createElement("div", { className: "w-full flex flex-col items-center mb-12 md:mb-16" }, appsText && /* @__PURE__ */ React7.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 uppercase mb-5" }, appsText), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-wrap justify-center items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ React7.createElement("div", { key: idx, className: "relative h-7 w-7 flex items-center justify-center cursor-default" }, /* @__PURE__ */ React7.createElement(
662
+ )), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React7.createElement("div", { className: "w-full flex flex-col items-center mb-12 md:mb-16" }, appsText && /* @__PURE__ */ React7.createElement("p", { className: "text-[10px] tracking-[0.2em] text-neutral-400 uppercase mb-5" }, appsText), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-wrap justify-center items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ React7.createElement("div", { key: idx, className: "relative h-5 w-5 flex items-center justify-center cursor-default" }, /* @__PURE__ */ React7.createElement(
663
663
  Image2,
664
664
  {
665
665
  src: logo.src,
@@ -1052,9 +1052,11 @@ var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React14.createElement("s
1052
1052
  var ManagedPricingBlock = ({
1053
1053
  tagline,
1054
1054
  title,
1055
- plans
1055
+ plans = [],
1056
+ tabs
1056
1057
  }) => {
1057
1058
  const [isAnimating, setIsAnimating] = useState10(false);
1059
+ const [activeTabIndex, setActiveTabIndex] = useState10(0);
1058
1060
  const titleRef = useRef7(null);
1059
1061
  useEffect8(() => {
1060
1062
  const observer = new IntersectionObserver(
@@ -1074,25 +1076,38 @@ var ManagedPricingBlock = ({
1074
1076
  }
1075
1077
  return () => observer.disconnect();
1076
1078
  }, []);
1079
+ const hasTabs = tabs && tabs.length > 0;
1080
+ const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
1077
1081
  return /* @__PURE__ */ React14.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full flex flex-col items-center text-center mb-12" }, tagline && /* @__PURE__ */ React14.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block uppercase" }, tagline), /* @__PURE__ */ React14.createElement(
1078
1082
  "h1",
1079
1083
  {
1080
1084
  ref: titleRef,
1081
- className: ` text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
1085
+ className: `text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
1082
1086
  style: isAnimating ? { animationIterationCount: 1 } : {}
1083
1087
  },
1084
1088
  title
1085
- )), /* @__PURE__ */ React14.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl" }, plans.map((plan, planIdx) => /* @__PURE__ */ React14.createElement(
1089
+ )), hasTabs && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-center mb-10 w-full animate-in fade-in duration-300" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center bg-white rounded-full p-1.5 shadow-sm max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
1090
+ const isActive = activeTabIndex === idx;
1091
+ return /* @__PURE__ */ React14.createElement(
1092
+ "button",
1093
+ {
1094
+ key: idx,
1095
+ onClick: () => setActiveTabIndex(idx),
1096
+ className: `px-6 py-2 rounded-full text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-50 text-black font-medium border border-neutral-200/50" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50 border border-transparent"}`
1097
+ },
1098
+ tab.label
1099
+ );
1100
+ }))), /* @__PURE__ */ React14.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ React14.createElement(
1086
1101
  "div",
1087
1102
  {
1088
- key: planIdx,
1089
- className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden ${plan.isPremium ? "" : ""}`
1103
+ key: `${activeTabIndex}-${planIdx}`,
1104
+ className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
1090
1105
  },
1091
- /* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ React14.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React14.createElement("span", { className: "text-5xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React14.createElement("p", { className: "text-xs text-neutral-500 mt-2" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React14.createElement(
1106
+ /* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ React14.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React14.createElement("span", { className: "text-5xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React14.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React14.createElement(
1092
1107
  "div",
1093
1108
  {
1094
1109
  key: logoIdx,
1095
- className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
1110
+ className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
1096
1111
  },
1097
1112
  /* @__PURE__ */ React14.createElement(
1098
1113
  Image5,
@@ -1109,7 +1124,7 @@ var ManagedPricingBlock = ({
1109
1124
  Link5,
1110
1125
  {
1111
1126
  href: plan.ctaHref,
1112
- className: "w-full py-2 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none"
1127
+ className: "w-full py-2 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none block"
1113
1128
  },
1114
1129
  plan.ctaText
1115
1130
  ),
@@ -1636,7 +1651,7 @@ var ECOSYSTEM_APPS = [
1636
1651
  { id: "sheets", name: "Retina Sheets", description: "Advanced Spreadsheets", iconSrc: "https://retinalabs.company/assets/images/sheets.avif", url: "https://sheets.retinaapps.com/app" },
1637
1652
  { id: "drive", name: "Retina Drive", description: "Secure Cloud Storage", iconSrc: "https://retinalabs.company/assets/images/drive.avif", url: "https://drive.retinaapps.com/app" },
1638
1653
  { id: "calendar", name: "Retina Calendar", description: "Smart Scheduling", iconSrc: "https://retinalabs.company/assets/images/calendar.avif", url: "https://calendar.retinaapps.com/app" },
1639
- { id: "mail", name: "Retina Mail", description: "Encrypted Communications", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
1654
+ { id: "mail", name: "Retina Mail", description: "Secure Email Inbox", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
1640
1655
  ];
1641
1656
  var UniversalSidebar = ({
1642
1657
  navItems,
@@ -1826,7 +1841,7 @@ var UniversalSidebar = ({
1826
1841
  {
1827
1842
  key: app.id,
1828
1843
  href: app.url,
1829
- className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? " border border-neutral-100" : "hover:bg-neutral-50 border border-transparent"}`
1844
+ className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? " bg-neutral-50" : "hover:bg-neutral-50 border border-transparent"}`
1830
1845
  },
1831
1846
  /* @__PURE__ */ React25.createElement(
1832
1847
  "img",
@@ -2335,7 +2350,7 @@ var UniversalMembersPage = ({
2335
2350
  },
2336
2351
  /* @__PURE__ */ React28.createElement(HugeiconsIcon15, { icon: UserAdd01Icon, size: 12 }),
2337
2352
  "Add Member"
2338
- )), currentView !== "list" && /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React28.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon15, { icon: ArrowLeft01Icon3, size: 12 }), " Back"), /* @__PURE__ */ React28.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ React28.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React28.createElement(PageSpinner2, null) : /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React28.createElement("div", { className: "divide-y divide-neutral-100" }, members.map((member) => /* @__PURE__ */ React28.createElement(
2353
+ )), currentView !== "list" && /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React28.createElement("button", { onClick: goBack, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon15, { icon: ArrowLeft01Icon3, size: 12 }), " Back"), /* @__PURE__ */ React28.createElement("h1", { className: " text-lg text-black tracking-tight" }, currentView === "invite" ? "Add New Member" : "Member Profile"))), currentView === "list" && /* @__PURE__ */ React28.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React28.createElement(PageSpinner2, null) : /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React28.createElement("div", { className: "divide-y divide-neutral-100" }, members.length === 0 ? /* @__PURE__ */ React28.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No organization member") : members.map((member) => /* @__PURE__ */ React28.createElement(
2339
2354
  "div",
2340
2355
  {
2341
2356
  key: member.id,
@@ -3892,14 +3907,14 @@ var UniversalDeveloperSettings = ({
3892
3907
  setWebhookUrl(val.trim());
3893
3908
  };
3894
3909
  const downloadEnvironmentFile = (pubKey, secKey) => {
3895
- const envContent = `AUDDITUR_PUBLIC_KEY="${pubKey}"
3896
- AUDDITUR_SECRET_KEY="${secKey}"
3910
+ const envContent = `PUBLIC_KEY="${pubKey}"
3911
+ SECRET_KEY="${secKey}"
3897
3912
  `;
3898
3913
  const blob = new Blob([envContent], { type: "text/plain" });
3899
3914
  const url = URL.createObjectURL(blob);
3900
3915
  const link = document.createElement("a");
3901
3916
  link.href = url;
3902
- link.download = "auditor-keys.env";
3917
+ link.download = "retina-keys.txt";
3903
3918
  document.body.appendChild(link);
3904
3919
  link.click();
3905
3920
  document.body.removeChild(link);
@@ -4058,7 +4073,7 @@ var MedicalFeatureStatsBlock = ({
4058
4073
  sizes: "48px",
4059
4074
  className: "object-cover"
4060
4075
  }
4061
- )))), /* @__PURE__ */ React43.createElement("p", { className: "text-[12px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React43.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React43.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React43.createElement("div", { className: "flex items-center gap-3 mb-6" }, /* @__PURE__ */ React43.createElement("span", { className: "w-1.5 h-1.5 rounded-full bg-[#000000] shrink-0" }), /* @__PURE__ */ React43.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React43.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4076
+ )))), /* @__PURE__ */ React43.createElement("p", { className: "text-[12px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React43.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React43.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React43.createElement("div", { className: "flex items-center border border-neutral-100 rounded-full p-0.5 mb-6" }, /* @__PURE__ */ React43.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React43.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
4062
4077
  };
4063
4078
 
4064
4079
  // src/components/ConsultantShowcase.tsx
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",