@olwiba/ui 0.1.12 → 0.1.13

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context/OlwibaUIContext.tsx","../src/primitives/Button.tsx","../src/primitives/Card.tsx","../src/primitives/Badge.tsx","../src/primitives/Input.tsx","../src/primitives/Textarea.tsx","../src/primitives/Checkbox.tsx","../src/primitives/Switch.tsx","../src/layout/Grid.tsx","../src/layout/Stack.tsx","../src/layout/Section.tsx","../src/layout/AppContent.tsx","../src/layout/AppGrid.tsx","../src/layout/PublicPageFrame.tsx","../src/app/AppShell.tsx","../src/app/AuthSection.tsx","../src/app/EmptyState.tsx","../src/app/ErrorPage.tsx","../src/app/UpgradePrompt.tsx","../src/motion/FadeIn.tsx","../src/marketing/SectionTitle.tsx","../src/components/PhoneFrame.tsx","../src/marketing/HeroSection.tsx","../src/components/FeatureCard.tsx","../src/motion/StaggerChildren.tsx","../src/marketing/FeaturesSection.tsx","../src/marketing/GroupedFeaturesSection.tsx","../src/marketing/StepsSection.tsx","../src/marketing/TechStackSection.tsx","../src/marketing/CarouselSection.tsx","../src/marketing/FeatureMarqueeSection.tsx","../src/marketing/CtaSection.tsx","../src/marketing/CtaCardSection.tsx","../src/components/PricingCard.tsx","../src/motion/CountdownTimer.tsx","../src/marketing/PricingSection.tsx","../src/components/TestimonialCard.tsx","../src/marketing/TestimonialsSection.tsx","../src/marketing/TeamSection.tsx","../src/marketing/FaqSection.tsx","../src/motion/CountUp.tsx","../src/marketing/StatsSection.tsx","../src/marketing/NewsletterSection.tsx","../src/marketing/ContactSection.tsx","../src/marketing/ComparisonSection.tsx","../src/marketing/QualificationSection.tsx","../src/marketing/Navbar.tsx","../src/marketing/Footer.tsx","../src/marketing/LogoStrip.tsx","../src/overlays/Underlay.tsx","../src/overlays/Overlay.tsx","../src/motion/AnimatedPill.tsx","../src/motion/PageTransition.tsx","../src/components/Spotlight.tsx","../src/components/Dock.tsx","../src/components/ContextMenu.tsx","../src/components/ConfirmDialog.tsx","../src/components/AppScreen.tsx","../src/components/GlassCard.tsx","../src/components/StatCard.tsx","../src/components/ImageCard.tsx","../src/components/FlowConnector.tsx","../src/components/FlowBracket.tsx","../src/components/Spinner.tsx","../src/components/PageHeader.tsx","../src/components/Suspensed.tsx","../src/components/ThemeSwitchMinimal.tsx","../src/components/ModeSwitchMinimal.tsx","../src/components/BrandColorSwitchMinimal.tsx","../src/components/ThemeColorUpdater.tsx","../src/components/VersionBanner.tsx","../src/components/DevBanner.tsx","../src/components/RegisterHotkeys.tsx","../src/components/RootErrorFallback.tsx","../src/blog/PostCard.tsx","../src/blog/PostList.tsx","../src/blog/ChangelogCard.tsx","../src/blog/ChangelogList.tsx","../src/hooks/use-mounted.ts","../src/hooks/use-confirm.ts","../src/hooks/use-controlled-open.ts","../src/hooks/use-scrolled-past.ts","../src/hooks/use-copy-to-clipboard.ts","../src/hooks/use-debounce.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-local-storage.ts","../src/hooks/use-media-query.ts","../src/hooks/use-pagination.ts"],"names":["React","React2","jsx","CNButton","React3","CNCard","CNBadge","React4","CNInput","React5","CNTextarea","React6","CNCheckbox","React7","CNSwitch","gapMap","spanMap","spacingMap","maxWidthMap","jsxs","defaultRenderLink","cn","Badge","CardHeader","CardTitle","CardDescription","CardContent","Fragment","form","Button","React8","Avatar","AvatarImage","AvatarFallback","ArrowRight","translateMap","React9","useUIVariant","React10","Sparkles","React11","Separator","React12","React13","badge","React14","React15","Input","defaults","React16","Mail","Label","Textarea","Check","X","React17","speedDuration","React18","useRef","useEffect","React19","React20","React21","RadixContextMenu","blurClass","React22","ChevronRight","ChevronLeft","React23","Spinner","React24","React25","React26","React27","React28","formatDate","useState","React30","React31","React32","React33","React34","React35","React36","React37"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useIsMobile, UIVariantProvider, type UIVariant } from '@olwiba/cn';\n\nexport type UIMode = 'default' | 'playful' | 'smooth';\n\ninterface OlwibaUIContextValue {\n isMobile: boolean;\n mode: UIMode;\n setMode: (mode: UIMode) => void;\n}\n\nconst OlwibaUIContext = React.createContext<OlwibaUIContextValue>({\n isMobile: false,\n mode: 'default',\n setMode: () => {},\n});\n\nexport interface OlwibaUIProviderProps {\n children: React.ReactNode;\n /**\n * Override the mobile detection. If omitted, uses useIsMobile() from @olwiba/cn\n * which detects based on a 768px viewport breakpoint.\n */\n isMobile?: boolean;\n /**\n * Global component mode. Primitives imported from @olwiba/ui will automatically\n * apply this mode unless overridden at the component level.\n *\n * - `'default'` — standard square shadcn/Radix appearance\n * - `'playful'` — slight rotation + offset drop shadow backdrop\n * - `'smooth'` — softer, larger border-radius across all components\n */\n mode?: UIMode;\n}\n\nexport function OlwibaUIProvider({ children, isMobile: isMobileProp, mode: initialMode = 'default' }: OlwibaUIProviderProps) {\n const detectedMobile = useIsMobile();\n const isMobile = isMobileProp ?? detectedMobile;\n const [mode, setMode] = React.useState<UIMode>(initialMode);\n\n const variant = mode !== 'default' ? (mode as UIVariant) : undefined;\n\n return (\n <OlwibaUIContext.Provider value={{ isMobile, mode, setMode }}>\n <UIVariantProvider mode={variant}>\n {children}\n </UIVariantProvider>\n </OlwibaUIContext.Provider>\n );\n}\n\nexport function useOlwibaUI() {\n return React.useContext(OlwibaUIContext);\n}\n\n/** Returns just the current UI mode from context. */\nexport function useUIMode(): UIMode {\n return React.useContext(OlwibaUIContext).mode;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Button as CNButton, type ButtonProps as CNButtonProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type ButtonProps = CNButtonProps;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNButton mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nButton.displayName = 'Button';\n","'use client';\n\nimport * as React from 'react';\nimport {\n Card as CNCard, type CardProps as CNCardProps,\n CardHeader, CardTitle, CardDescription, CardContent, CardFooter,\n} from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type CardProps = CNCardProps;\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNCard mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nCard.displayName = 'Card';\n\n// Sub-components are pass-throughs — no mode logic needed.\nexport { CardHeader, CardTitle, CardDescription, CardContent, CardFooter };\n","'use client';\n\nimport * as React from 'react';\nimport { Badge as CNBadge, type BadgeProps as CNBadgeProps } from '@olwiba/cn';\n\n// Badge no longer supports mode — variant/size/disabled only.\nexport type BadgeProps = CNBadgeProps;\n\nexport function Badge(props: BadgeProps) {\n return <CNBadge {...props} />;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Input as CNInput, type InputProps as CNInputProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type InputProps = CNInputProps;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNInput mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nInput.displayName = 'Input';\n","'use client';\n\nimport * as React from 'react';\nimport { Textarea as CNTextarea, type TextareaProps as CNTextareaProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type TextareaProps = CNTextareaProps;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNTextarea mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nTextarea.displayName = 'Textarea';\n","'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CNCheckbox, type CheckboxProps as CNCheckboxProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type CheckboxProps = CNCheckboxProps;\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CNCheckbox>,\n CheckboxProps\n>(({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNCheckbox mode={resolvedMode} {...props} ref={ref} />;\n});\nCheckbox.displayName = 'Checkbox';\n","'use client';\n\nimport * as React from 'react';\nimport { Switch as CNSwitch, type SwitchProps as CNSwitchProps } from '@olwiba/cn';\n\nexport type SwitchProps = CNSwitchProps & {\n mode?: 'default' | 'playful' | 'smooth';\n};\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof CNSwitch>,\n SwitchProps\n>(({ mode: _mode, ...props }, ref) => {\n return <CNSwitch {...props} ref={ref} />;\n});\nSwitch.displayName = 'Switch';\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst colsMap: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 12: 'grid-cols-12',\n}\n\nconst gapMap = {\n none: 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n}\n\nconst spanMap: Record<number, string> = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n}\n\nconst rowSpanMap: Record<number, string> = {\n 1: 'row-span-1',\n 2: 'row-span-2',\n 3: 'row-span-3',\n 4: 'row-span-4',\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 12\n gap?: keyof typeof gapMap\n}\n\nexport function Grid({ columns = 3, gap = 'md', className, children, ...props }: GridProps) {\n return (\n <div className={cn('grid', colsMap[columns], gapMap[gap], className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport interface GridItemProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n rowSpan?: 1 | 2 | 3 | 4\n}\n\nexport function GridItem({ span = 1, rowSpan, className, children, ...props }: GridItemProps) {\n return (\n <div\n className={cn(spanMap[span], rowSpan != null && rowSpanMap[rowSpan], className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst gapMap = {\n none: 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n}\n\nconst alignMap = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n}\n\nconst justifyMap = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n}\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'col' | 'row'\n gap?: keyof typeof gapMap\n align?: keyof typeof alignMap\n justify?: keyof typeof justifyMap\n wrap?: boolean\n}\n\nexport function Stack({\n direction = 'col',\n gap = 'md',\n align = 'stretch',\n justify = 'start',\n wrap = false,\n className,\n children,\n ...props\n}: StackProps) {\n return (\n <div\n className={cn(\n 'flex',\n direction === 'col' ? 'flex-col' : 'flex-row',\n gapMap[gap],\n alignMap[align],\n justifyMap[justify],\n wrap && 'flex-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst paddingMap = {\n none: '',\n sm: 'py-4',\n md: 'py-8',\n lg: 'py-16',\n}\n\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\n title?: string\n description?: string\n padding?: keyof typeof paddingMap\n}\n\nexport function Section({ title, description, padding = 'md', className, children, ...props }: SectionProps) {\n return (\n <section className={cn('w-full', paddingMap[padding], className)} {...props}>\n {(title || description) && (\n <div className=\"mb-6\">\n {title && <h2 className=\"text-xl font-semibold text-foreground\">{title}</h2>}\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </div>\n )}\n {children}\n </section>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst spacingMap = {\n sm: 'space-y-4',\n md: 'space-y-6',\n lg: 'space-y-8',\n}\n\nconst maxWidthMap = {\n none: '',\n 'screen-lg': 'mx-auto max-w-screen-lg',\n 'screen-xl': 'mx-auto max-w-screen-xl',\n 'screen-2xl': 'mx-auto max-w-screen-2xl',\n}\n\nexport interface AppContentProps extends React.HTMLAttributes<HTMLDivElement> {\n spacing?: keyof typeof spacingMap\n maxWidth?: keyof typeof maxWidthMap\n}\n\nexport function AppContent({\n spacing = 'md',\n maxWidth = 'none',\n className,\n children,\n ...props\n}: AppContentProps) {\n return (\n <div className={cn('p-6', maxWidthMap[maxWidth], spacingMap[spacing], className)} {...props}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst columnsMap = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 xl:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 xl:grid-cols-4',\n}\n\nconst gapMap = {\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n}\n\nconst spanMap = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'xl:col-span-3',\n 4: 'xl:col-span-4',\n full: 'col-span-full',\n}\n\nexport interface AppGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: keyof typeof columnsMap\n gap?: keyof typeof gapMap\n}\n\nexport function AppGrid({ columns = 3, gap = 'md', className, children, ...props }: AppGridProps) {\n return (\n <div className={cn('grid', columnsMap[columns], gapMap[gap], className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport interface AppGridCellProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: keyof typeof spanMap\n}\n\nexport function AppGridCell({ span = 1, className, children, ...props }: AppGridCellProps) {\n return (\n <div className={cn(spanMap[span], className)} {...props}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst surfaceMap = {\n default: 'bg-background',\n muted: 'bg-muted/50',\n}\n\nconst spacingMap = {\n sm: 'gap-4 p-4',\n md: 'gap-5 p-4 sm:gap-6 sm:p-6',\n lg: 'gap-6 p-4 sm:gap-8 sm:p-6',\n}\n\nconst maxWidthMap = {\n none: '',\n 'screen-xl': 'mx-auto max-w-screen-xl',\n 'screen-2xl': 'mx-auto max-w-screen-2xl',\n}\n\nexport interface PublicPageFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n surface?: keyof typeof surfaceMap\n spacing?: keyof typeof spacingMap\n maxWidth?: keyof typeof maxWidthMap\n}\n\nexport function PublicPageFrame({\n surface = 'muted',\n spacing = 'md',\n maxWidth = 'none',\n className,\n children,\n ...props\n}: PublicPageFrameProps) {\n return (\n <div className={cn('min-h-screen', surfaceMap[surface], className)} {...props}>\n <div className={cn('flex flex-col', spacingMap[spacing], maxWidthMap[maxWidth])}>\n {children}\n </div>\n </div>\n )\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n BellIcon,\n CreditCardIcon,\n LogOutIcon,\n MoreVerticalIcon,\n PlusCircleIcon,\n} from 'lucide-react';\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Separator,\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarTrigger,\n useSidebar,\n} from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\n// ─── Public types ─────────────────────────────────────────────────────────────\n\nexport interface AppNavItem {\n icon: LucideIcon;\n label: string;\n href: string;\n isActive?: boolean;\n}\n\nexport interface AppShellAction {\n icon?: LucideIcon;\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface AppShellUser {\n email: string;\n name?: string;\n avatar?: string;\n /** Displayed as a sub-label (e.g. plan tier). */\n plan?: string;\n onSignOut?: () => void;\n onBilling?: () => void;\n}\n\nexport interface AppShellBrand {\n name: ReactNode;\n logo?: ReactNode;\n href?: string;\n}\n\n/**\n * Render a navigation link. Override to integrate your router's Link component.\n * @example renderLink={({ href, children }) => <Link to={href}>{children}</Link>}\n */\nexport type AppShellRenderLink = (props: {\n href: string;\n children: ReactNode;\n className?: string;\n}) => ReactNode;\n\nexport interface AppShellProps {\n brand?: AppShellBrand;\n navItems?: AppNavItem[];\n /** Primary CTA rendered above nav (e.g. \"New project\", \"Quick create\") */\n action?: AppShellAction;\n user?: AppShellUser;\n /** Text shown in the top header bar */\n pageTitle?: string;\n /** Slot rendered at the start of the top header bar, after the sidebar trigger. */\n headerStart?: ReactNode;\n /** Slot rendered at the end of the top header bar. */\n headerEnd?: ReactNode;\n /** Override link rendering for SPA navigation. Defaults to a native <a>. */\n renderLink?: AppShellRenderLink;\n children?: ReactNode;\n /**\n * Sidebar collapse behaviour.\n * - `\"icon\"` — collapses to a narrow icon rail (default, recommended for desktop)\n * - `\"offcanvas\"` — slides off-screen as a drawer overlay\n * - `\"none\"` — always fully visible\n */\n collapsible?: 'icon' | 'offcanvas' | 'none';\n /**\n * Layout scope.\n * - `\"viewport\"` (default) — fills the full browser viewport; use for top-level app shells.\n * - `\"contained\"` — fills its parent container; use in docs sandboxes, modals, or embedded previews.\n */\n sidebarPosition?: 'viewport' | 'contained';\n /** Which side the sidebar sits on. @default \"left\" */\n side?: 'left' | 'right';\n}\n\n// ─── Internal sub-components ──────────────────────────────────────────────────\n\nfunction NavUser({ user }: { user: AppShellUser }) {\n const { isMobile } = useSidebar();\n const uiMode = useUIMode();\n const avatarMode = uiMode !== 'default' ? (uiMode as 'playful' | 'smooth') : undefined;\n const initials = (user.name ?? user.email).slice(0, 2).toUpperCase();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar mode={avatarMode} size=\"sm\" className=\"grayscale\">\n {user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n <AvatarFallback>{initials}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name ?? user.email}</span>\n <span className=\"truncate text-xs text-muted-foreground\">\n {user.plan ? `${user.plan} plan` : user.email}\n </span>\n </div>\n <MoreVerticalIcon className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar mode={avatarMode} size=\"sm\">\n {user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n <AvatarFallback>{initials}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name ?? user.email}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {user.onBilling && (\n <DropdownMenuItem onClick={user.onBilling}>\n <CreditCardIcon />\n Billing\n </DropdownMenuItem>\n )}\n <DropdownMenuItem>\n <BellIcon />\n Notifications\n </DropdownMenuItem>\n </DropdownMenuGroup>\n {user.onSignOut && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={user.onSignOut}>\n <LogOutIcon />\n Sign out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n\nfunction ShellSidebar({\n brand,\n navItems,\n action,\n user,\n renderLink,\n collapsible,\n side,\n sidebarPosition,\n}: {\n brand: AppShellBrand;\n navItems: AppNavItem[];\n action?: AppShellAction;\n user: AppShellUser;\n renderLink: AppShellRenderLink;\n collapsible: 'icon' | 'offcanvas' | 'none';\n side: 'left' | 'right';\n sidebarPosition: 'viewport' | 'contained';\n}) {\n const fallbackLogo = typeof brand.name === 'string' ? brand.name.slice(0, 1).toUpperCase() : null;\n\n return (\n <Sidebar side={side} collapsible={collapsible} sidebarPosition={sidebarPosition}>\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton asChild tooltip={typeof brand.name === 'string' ? brand.name : undefined} className=\"data-[slot=sidebar-menu-button]:!p-1.5\">\n {renderLink({\n href: brand.href ?? '#',\n children: (\n <>\n {brand.logo ? (\n <span className=\"flex size-8 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n ) : (\n <span className=\"flex size-4 shrink-0 items-center justify-center text-sm font-semibold\">\n {fallbackLogo}\n </span>\n )}\n <span className=\"min-w-0 truncate text-base font-semibold group-data-[collapsible=icon]:hidden\">\n {brand.name}\n </span>\n </>\n ),\n })}\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarGroup>\n <SidebarGroupContent className=\"flex flex-col gap-2\">\n {action && (\n <SidebarMenu>\n <SidebarMenuItem>\n {action.href ? (\n <SidebarMenuButton\n asChild\n tooltip={action.label}\n className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n >\n {renderLink({\n href: action.href,\n children: (\n <>\n {action.icon && <action.icon />}\n <span>{action.label}</span>\n </>\n ),\n })}\n </SidebarMenuButton>\n ) : (\n <SidebarMenuButton\n tooltip={action.label}\n onClick={action.onClick}\n className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n >\n {action.icon && <action.icon />}\n <span>{action.label}</span>\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n </SidebarMenu>\n )}\n\n <SidebarMenu>\n {navItems.map((item) => (\n <SidebarMenuItem key={item.label}>\n <SidebarMenuButton asChild tooltip={item.label} isActive={item.isActive}>\n {renderLink({\n href: item.href,\n children: (\n <>\n <item.icon />\n <span>{item.label}</span>\n </>\n ),\n })}\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n\n <SidebarFooter>\n <NavUser user={user} />\n </SidebarFooter>\n </Sidebar>\n );\n}\n\nfunction ShellHeader({\n pageTitle,\n headerStart,\n headerEnd,\n}: {\n pageTitle: string;\n headerStart?: ReactNode;\n headerEnd?: ReactNode;\n}) {\n return (\n <header className=\"flex h-12 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n <SidebarTrigger className=\"-ml-1\" />\n {headerStart && (\n <div className=\"flex items-center gap-1\">\n {headerStart}\n </div>\n )}\n <Separator orientation=\"vertical\" className=\"mx-2 data-[orientation=vertical]:h-4\" />\n <h1 className=\"text-base font-medium\">{pageTitle}</h1>\n {headerEnd && (\n <div className=\"ml-auto flex items-center gap-1\">\n {headerEnd}\n </div>\n )}\n </div>\n </header>\n );\n}\n\n// ─── Default placeholder values (keeps the shell renderable without required props) ─\n\nconst defaultBrand: AppShellBrand = {\n name: 'App',\n href: '#',\n};\n\nconst defaultUser: AppShellUser = {\n name: 'User',\n email: 'user@example.com',\n};\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\n// ─── Main export ──────────────────────────────────────────────────────────────\n\nexport function AppShell({\n brand = defaultBrand,\n navItems = [],\n action,\n user = defaultUser,\n pageTitle = 'Dashboard',\n headerStart,\n headerEnd,\n renderLink = defaultRenderLink,\n collapsible = 'icon',\n sidebarPosition = 'viewport',\n side = 'left',\n children,\n}: AppShellProps = {}) {\n const isContained = sidebarPosition === 'contained';\n\n const inner = (\n <SidebarProvider\n layout={isContained ? 'embedded' : 'viewport'}\n className={isContained ? 'overflow-hidden' : 'h-svh overflow-hidden'}\n >\n <ShellSidebar\n brand={brand}\n navItems={navItems}\n action={action}\n user={user}\n renderLink={renderLink}\n collapsible={collapsible}\n side={side}\n sidebarPosition={sidebarPosition}\n />\n <SidebarInset className={isContained ? undefined : 'overflow-y-auto'}>\n <ShellHeader pageTitle={pageTitle} headerStart={headerStart} headerEnd={headerEnd} />\n {children}\n </SidebarInset>\n </SidebarProvider>\n );\n\n if (isContained) {\n return (\n <div className=\"relative flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden\">\n {inner}\n </div>\n );\n }\n\n return inner;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Building2, ShieldCheck, Sparkles } from 'lucide-react';\nimport { Badge, CardContent, CardDescription, CardHeader, CardTitle, Label, cn } from '@olwiba/cn';\nimport { Button } from '../primitives/Button';\nimport { Card } from '../primitives/Card';\nimport { Input } from '../primitives/Input';\nimport type { AppShellRenderLink } from './AppShell';\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\n// ─── Centered layout ──────────────────────────────────────────────────────────\n\nfunction CenteredAuth({ children, brand, className }: { children: React.ReactNode; brand?: React.ReactNode; className?: string }) {\n return (\n <section className={cn('flex min-h-screen flex-col justify-center bg-background py-12 px-4 sm:px-6 lg:px-8', className)}>\n {brand && (\n <div className=\"mx-auto w-full max-w-md text-center mb-8\">\n {brand}\n </div>\n )}\n <div className=\"mx-auto w-full max-w-md\">\n {children}\n </div>\n </section>\n );\n}\n\n// ─── Split layout ─────────────────────────────────────────────────────────────\n\nfunction SplitAuth({ children, panel }: { children: React.ReactNode; panel?: React.ReactNode }) {\n const defaultPanel = (\n <div className=\"flex flex-col gap-6\">\n <Badge variant=\"secondary\" className=\"w-fit\">Welcome</Badge>\n <div className=\"space-y-3\">\n <h2 className=\"text-3xl font-semibold tracking-tight\">Build better, ship faster</h2>\n <p className=\"max-w-md text-muted-foreground\">\n Sign in to continue building with ready-made components and layouts.\n </p>\n </div>\n <div className=\"space-y-3 text-sm text-muted-foreground\">\n <div className=\"flex items-center gap-2\"><ShieldCheck className=\"size-4\" /> Type-safe components</div>\n <div className=\"flex items-center gap-2\"><Sparkles className=\"size-4\" /> Polished defaults</div>\n <div className=\"flex items-center gap-2\"><Building2 className=\"size-4\" /> Plug-and-play shells</div>\n </div>\n </div>\n );\n\n return (\n <section className=\"grid h-full min-h-[560px] overflow-hidden rounded-2xl border bg-card lg:grid-cols-2\">\n <div className=\"relative hidden p-8 pb-16 lg:flex lg:flex-col lg:justify-center\">\n <div className=\"absolute inset-0 bg-gradient-to-br from-primary/20 via-transparent to-muted\" />\n <div className=\"relative z-10\">{panel ?? defaultPanel}</div>\n </div>\n <div className=\"flex items-center justify-center p-6 lg:p-10\">\n {children}\n </div>\n </section>\n );\n}\n\n// ─── Shared form slot ─────────────────────────────────────────────────────────\n\nexport interface AuthFormProps {\n /** Controls form title, fields, and footer text. @default 'signin' */\n mode?: 'signin' | 'signup';\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n onSso?: () => void;\n /** (signin) Link to the sign-up page */\n signUpHref?: string;\n /** (signup) Link back to the sign-in page */\n signInHref?: string;\n forgotPasswordHref?: string;\n /** Brand node — in centered layout renders above the card; in split layout renders inside the card */\n brand?: React.ReactNode;\n /** Error message displayed below the form fields */\n error?: string;\n /** Disables the submit button and shows a loading label */\n loading?: boolean;\n /** Render prop for links — use to inject framework-native link components (e.g. TanStack Router Link) */\n renderLink?: AppShellRenderLink;\n /** Optional content rendered below the form — use for social auth buttons or other additions */\n footer?: React.ReactNode;\n /** Pre-fill the email field (e.g. from demo credential links). Triggers a brief border highlight animation. */\n defaultEmail?: string;\n /** Pre-fill the password field (e.g. from demo credential links). Triggers a brief border highlight animation. */\n defaultPassword?: string;\n}\n\nfunction DefaultForm({\n mode = 'signin',\n onSubmit,\n onSso,\n signUpHref = '#',\n signInHref = '#',\n forgotPasswordHref = '#',\n brand,\n error,\n loading,\n renderLink = defaultRenderLink,\n footer,\n defaultEmail,\n defaultPassword,\n}: AuthFormProps) {\n const isSignUp = mode === 'signup';\n const hasPrefill = !!(defaultEmail || defaultPassword);\n const prefillStyle = (active: boolean): React.CSSProperties | undefined =>\n active ? { animation: 'auth-prefill 1.6s ease-out 0.35s 1 both' } : undefined;\n\n return (\n <Card className=\"w-full\">\n {hasPrefill && (\n // Theme tokens hold full color values (oklch), so opacity must come from color-mix, not hsl(var()/a)\n <style>{`@keyframes auth-prefill{0%{box-shadow:0 0 0 0 transparent}40%{box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 45%,transparent),0 0 16px 2px color-mix(in oklab,var(--primary) 35%,transparent)}100%{box-shadow:0 0 0 0 transparent}}`}</style>\n )}\n <CardHeader>\n {brand && <div className=\"mb-2\">{brand}</div>}\n <CardTitle>{isSignUp ? 'Create an account' : 'Sign in'}</CardTitle>\n <CardDescription>\n {isSignUp\n ? 'Enter your details to create your account.'\n : 'Enter your email and password to continue.'}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <form onSubmit={onSubmit} className=\"space-y-4\">\n {isSignUp && (\n <div className=\"space-y-2\">\n <Label htmlFor=\"auth-name\">Name</Label>\n <Input id=\"auth-name\" name=\"name\" type=\"text\" placeholder=\"Your name\" autoComplete=\"name\" />\n </div>\n )}\n <div className=\"space-y-2\">\n <Label htmlFor=\"auth-email\">Email address</Label>\n <Input\n id=\"auth-email\"\n name=\"email\"\n type=\"email\"\n placeholder=\"name@company.com\"\n autoComplete=\"email\"\n defaultValue={defaultEmail}\n style={prefillStyle(!!defaultEmail)}\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"auth-password\">Password</Label>\n {!isSignUp && forgotPasswordHref && renderLink({\n href: forgotPasswordHref,\n className: 'text-xs text-muted-foreground underline underline-offset-4 hover:text-foreground',\n children: 'Forgot password?',\n })}\n </div>\n <Input\n id=\"auth-password\"\n name=\"password\"\n type=\"password\"\n placeholder=\"••••••••\"\n autoComplete={isSignUp ? 'new-password' : 'current-password'}\n defaultValue={defaultPassword}\n style={prefillStyle(!!defaultPassword)}\n />\n </div>\n {error && (\n <p className=\"text-sm font-medium text-destructive\">{error}</p>\n )}\n <div className=\"flex flex-col gap-2\">\n <Button type=\"submit\" className=\"w-full\" disabled={loading}>\n {loading ? 'Please wait…' : isSignUp ? 'Create account' : 'Sign in'}\n </Button>\n {onSso && (\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" onClick={onSso} disabled={loading}>\n Use SSO\n </Button>\n )}\n </div>\n </form>\n <p className=\"text-center text-xs text-muted-foreground\">\n {isSignUp ? (\n <>\n Already have an account?{' '}\n {renderLink({ href: signInHref, className: 'text-foreground underline underline-offset-4', children: 'Sign in' })}\n </>\n ) : (\n signUpHref && (\n <>\n New here?{' '}\n {renderLink({ href: signUpHref, className: 'text-foreground underline underline-offset-4', children: 'Create an account' })}\n </>\n )\n )}\n </p>\n {footer && <div>{footer}</div>}\n </CardContent>\n </Card>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\nexport interface AuthSectionProps extends AuthFormProps {\n /** Visual layout of the auth screen. @default 'centered' */\n layout?: 'centered' | 'split';\n /** Custom form/card content. Defaults to the built-in form. */\n children?: React.ReactNode;\n /** (split layout only) Custom content for the left decorative panel */\n panel?: React.ReactNode;\n className?: string;\n}\n\nexport function AuthSection({\n layout = 'centered',\n children,\n panel,\n className,\n ...formProps\n}: AuthSectionProps) {\n if (layout === 'split') {\n const form = children ?? <DefaultForm {...formProps} />;\n return (\n <div className={cn('h-full', className)}>\n <SplitAuth panel={panel}>{form}</SplitAuth>\n </div>\n );\n }\n\n // Centered: brand renders above the card, not inside it\n const { brand, ...restFormProps } = formProps;\n const form = children ?? <DefaultForm {...restFormProps} />;\n return (\n <CenteredAuth brand={brand} className={className}>\n {form}\n </CenteredAuth>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: LucideIcon;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport function EmptyState({ icon: Icon, title, description, action, className, ...props }: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center gap-3 py-12 text-center', className)}\n {...props}\n >\n {Icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-2xl border bg-muted\">\n <Icon className=\"size-6 text-muted-foreground\" />\n </div>\n )}\n <div className=\"space-y-1\">\n <h3 className=\"font-semibold\">{title}</h3>\n {description && (\n <p className=\"max-w-xs text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n {action}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { ArrowLeft, Compass } from 'lucide-react';\nimport { Button } from '../primitives/Button';\nimport type { AppShellRenderLink } from './AppShell';\n\nexport interface ErrorPageProps {\n statusCode?: string;\n title?: string;\n description?: string;\n action?: { label: string; href: string };\n backAction?: { label: string; href?: string; onClick?: () => void };\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function ErrorPage({\n statusCode = '404',\n title = 'Page not found',\n description = \"The page you're looking for doesn't exist or has been moved. Check the URL or head back home.\",\n action = { label: 'Take me home', href: '/' },\n backAction = { label: 'Go back' },\n renderLink = defaultRenderLink,\n}: ErrorPageProps) {\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"relative flex min-h-[560px] flex-col items-center justify-center px-6 py-16 text-center\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_center,hsl(var(--muted)/0.8),transparent_70%)]\" />\n <div className=\"relative space-y-6\">\n <div className=\"flex justify-center\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-2xl border bg-muted\">\n <Compass className=\"size-8 text-muted-foreground\" />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"text-8xl font-bold tracking-tight text-muted-foreground/20\">{statusCode}</div>\n <h1 className=\"-mt-4 text-2xl font-semibold tracking-tight\">{title}</h1>\n <p className=\"mx-auto max-w-sm text-sm text-muted-foreground\">\n {description}\n </p>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-center gap-3\">\n {backAction && (\n backAction.href ? (\n renderLink({\n href: backAction.href,\n children: (\n <Button variant=\"outline\">\n <ArrowLeft className=\"mr-2 size-4\" />\n {backAction.label}\n </Button>\n ),\n })\n ) : (\n <Button variant=\"outline\" onClick={backAction.onClick}>\n <ArrowLeft className=\"mr-2 size-4\" />\n {backAction.label}\n </Button>\n )\n )}\n {action && (\n renderLink({\n href: action.href,\n children: <Button>{action.label}</Button>,\n })\n )}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { X } from 'lucide-react';\nimport {\n Button,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n cn,\n} from '@olwiba/cn';\n\nexport interface UpgradeComparisonRow {\n key?: React.Key;\n label: React.ReactNode;\n currentValue: React.ReactNode;\n upgradedValue: React.ReactNode;\n}\n\nexport interface UpgradePromptProps {\n /** Layout variant. `banner` is an inline strip; `comparison` is a full feature-table block. */\n variant: 'banner' | 'comparison';\n /** Primary heading shown in both variants. */\n title: React.ReactNode;\n /** Supporting copy shown below the title. */\n description: React.ReactNode;\n /** Label for the primary upgrade CTA. Include pricing here if relevant. */\n primaryActionLabel: React.ReactNode;\n /** Called when the primary upgrade CTA is clicked. */\n onPrimaryAction: () => void;\n /** Optional secondary action label, typically for \"maybe later\" or dismiss behavior. */\n secondaryActionLabel?: React.ReactNode;\n /** Called when the optional secondary action is clicked. */\n onSecondaryAction?: () => void;\n /** Small eyebrow label shown above the title in the comparison variant. */\n eyebrow?: React.ReactNode;\n /** Feature comparison rows for the comparison variant. */\n rows?: UpgradeComparisonRow[];\n /** Column header for the current plan. Defaults to \"Current\". */\n currentPlanLabel?: React.ReactNode;\n /** Column header for the upgraded plan. Defaults to \"Upgrade\". */\n upgradedPlanLabel?: React.ReactNode;\n /** Small body text shown below the comparison table, before the action buttons. */\n footer?: React.ReactNode;\n /** Optional close icon action for the comparison variant. */\n onClose?: () => void;\n /** Accessible label for the comparison close icon. Defaults to \"Close\". */\n closeLabel?: string;\n className?: string;\n}\n\nexport function UpgradePrompt({\n variant,\n title,\n description,\n primaryActionLabel,\n onPrimaryAction,\n secondaryActionLabel,\n onSecondaryAction,\n eyebrow,\n rows,\n currentPlanLabel = 'Current',\n upgradedPlanLabel = 'Upgrade',\n footer,\n onClose,\n closeLabel = 'Close',\n className,\n}: UpgradePromptProps) {\n const hasSecondaryAction = Boolean(secondaryActionLabel && onSecondaryAction);\n\n if (variant === 'banner') {\n return (\n <section\n className={cn(\n 'rounded-xl border border-dashed bg-card/40 p-5 sm:p-6',\n className,\n )}\n >\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-xl font-semibold\">{title}</h3>\n <p className=\"mt-2 max-w-xl text-sm leading-6 text-muted-foreground\">\n {description}\n </p>\n </div>\n\n <div className=\"flex flex-wrap gap-2\">\n {hasSecondaryAction ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onSecondaryAction}\n className=\"border\"\n >\n {secondaryActionLabel}\n </Button>\n ) : null}\n <Button type=\"button\" onClick={onPrimaryAction}>\n {primaryActionLabel}\n </Button>\n </div>\n </div>\n </section>\n );\n }\n\n return (\n <section\n className={cn(\n 'w-full max-w-3xl rounded-2xl border bg-card p-6 shadow-sm sm:p-7',\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n {eyebrow ? (\n <div className=\"font-mono text-[11px] uppercase tracking-[0.08em] text-primary\">\n {eyebrow}\n </div>\n ) : null}\n <h3\n className={cn(\n 'text-2xl font-semibold sm:text-[1.75rem]',\n eyebrow ? 'mt-3' : '',\n )}\n >\n {title}\n </h3>\n <p className=\"mt-3 max-w-2xl text-sm leading-6 text-muted-foreground sm:text-base\">\n {description}\n </p>\n </div>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors hover:bg-muted\"\n aria-label={closeLabel}\n >\n <X className=\"size-4\" />\n </button>\n ) : null}\n </div>\n\n {rows && rows.length > 0 ? (\n <div className=\"mt-6 overflow-hidden rounded-xl border bg-muted/30\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead />\n <TableHead className=\"font-mono text-xs uppercase tracking-wider text-muted-foreground\">\n {currentPlanLabel}\n </TableHead>\n <TableHead className=\"font-mono text-xs uppercase tracking-wider text-primary\">\n {upgradedPlanLabel}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {rows.map((row, index) => (\n <TableRow key={row.key ?? index}>\n <TableCell className=\"font-medium\">{row.label}</TableCell>\n <TableCell className=\"font-mono text-muted-foreground\">\n {row.currentValue}\n </TableCell>\n <TableCell className=\"font-mono\">{row.upgradedValue}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n ) : null}\n\n <div\n className={cn(\n 'mt-6 flex flex-col gap-3 sm:flex-row sm:items-center',\n footer || hasSecondaryAction ? 'sm:justify-between' : 'sm:justify-end',\n )}\n >\n {footer ? <p className=\"text-sm text-muted-foreground\">{footer}</p> : null}\n <div className=\"flex flex-wrap gap-2\">\n {hasSecondaryAction ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onSecondaryAction}\n className=\"border\"\n >\n {secondaryActionLabel}\n </Button>\n ) : null}\n <Button type=\"button\" onClick={onPrimaryAction}>\n {primaryActionLabel}\n </Button>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface FadeInProps extends React.HTMLAttributes<HTMLDivElement> {\n delay?: number;\n duration?: number;\n direction?: 'up' | 'down' | 'left' | 'right' | 'none';\n once?: boolean;\n children: React.ReactNode;\n}\n\nconst translateMap = {\n up: 'translate-y-6',\n down: '-translate-y-6',\n left: 'translate-x-6',\n right: '-translate-x-6',\n none: '',\n};\n\nexport function FadeIn({\n delay = 0,\n duration = 600,\n direction = 'up',\n once = true,\n children,\n className,\n style,\n ...props\n}: FadeInProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n if (once) observer.disconnect();\n } else if (!once) {\n setVisible(false);\n }\n },\n { threshold: 0.1 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [once]);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'transition-all',\n visible ? 'opacity-100 translate-x-0 translate-y-0' : `opacity-0 ${translateMap[direction]}`,\n className,\n )}\n style={{ transitionDuration: `${duration}ms`, transitionDelay: `${delay}ms`, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface SectionTitleProps {\n title: string;\n description?: string;\n badge?: string;\n className?: string;\n}\n\nexport function SectionTitle({ title, description, badge, className }: SectionTitleProps) {\n return (\n <FadeIn direction=\"up\">\n <div className={cn('text-center', className)}>\n {badge && <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>}\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-2xl text-pretty text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n </FadeIn>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\nconst sizes = {\n sm: { outer: 'w-44', height: 'h-80', notch: 'w-16 h-4', border: 'rounded-[2rem]', screen: 'rounded-[1.75rem]' },\n md: { outer: 'w-56', height: 'h-[26rem]', notch: 'w-20 h-5', border: 'rounded-[2.5rem]', screen: 'rounded-[2.25rem]' },\n lg: { outer: 'w-72', height: 'h-[34rem]', notch: 'w-24 h-6', border: 'rounded-[3rem]', screen: 'rounded-[2.75rem]' },\n} as const;\n\nexport interface PhoneFrameProps {\n children?: React.ReactNode;\n size?: keyof typeof sizes;\n className?: string;\n float?: boolean;\n}\n\nexport function PhoneFrame({ children, size = 'md', className, float = true }: PhoneFrameProps) {\n const s = sizes[size];\n return (\n <>\n {float && (\n <style>{`\n @keyframes olwiba-phone-float {\n 0%, 100% { transform: translateY(0px); }\n 50% { transform: translateY(-10px); }\n }\n .olwiba-phone-float { animation: olwiba-phone-float 5s ease-in-out infinite; }\n `}</style>\n )}\n <div\n className={cn(\n 'relative mx-auto',\n s.outer,\n float && 'olwiba-phone-float',\n className,\n )}\n >\n {/* Device body */}\n <div\n className={cn(\n 'relative flex w-full flex-col overflow-hidden border-[3px] border-foreground/15 bg-muted shadow-2xl',\n s.border,\n s.height,\n )}\n >\n {/* Status bar / notch area */}\n <div className=\"relative flex justify-center pt-3 pb-1 shrink-0\">\n <div className={cn('rounded-full bg-foreground/10', s.notch)} />\n </div>\n\n {/* Screen */}\n <div className={cn('mx-1.5 mb-1.5 flex-1 overflow-hidden bg-background', s.screen)}>\n {children}\n </div>\n </div>\n\n {/* Side buttons */}\n <div className=\"absolute right-[-5px] top-24 h-12 w-[3px] rounded-l-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-20 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-32 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-44 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n </div>\n </>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, Badge, Button } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\nimport { PhoneFrame } from '../components/PhoneFrame';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface HeroSectionProps {\n heading: string;\n badge?: string;\n description: string;\n primaryCta: { label: string; href: string };\n secondaryCta?: { label: string; href: string };\n heroImage?: React.ReactNode;\n media?: 'image' | 'phone' | 'none';\n phoneSize?: 'sm' | 'md' | 'lg';\n avatarUrls?: string[];\n socialProofText?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function HeroSection({\n heading,\n badge,\n description,\n primaryCta,\n secondaryCta,\n heroImage,\n media = 'image',\n phoneSize = 'lg',\n avatarUrls,\n socialProofText,\n renderLink = defaultRenderLink,\n}: HeroSectionProps) {\n return (\n <section className=\"overflow-hidden\">\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto grid max-w-6xl items-center gap-10 lg:grid-cols-2 lg:gap-16\">\n {/* Left - text content */}\n <FadeIn direction=\"left\">\n <div className=\"flex flex-col gap-6\">\n {badge && (\n <div>\n <Badge variant=\"secondary\">{badge}</Badge>\n </div>\n )}\n <h1 className=\"text-balance text-4xl font-semibold tracking-tight sm:text-5xl lg:text-6xl\">\n {heading}\n </h1>\n <p className=\"max-w-lg text-pretty text-lg text-muted-foreground\">\n {description}\n </p>\n <div className=\"flex flex-wrap items-center gap-3\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <Button size=\"lg\">\n {primaryCta.label}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n ),\n })}\n {secondaryCta &&\n renderLink({\n href: secondaryCta.href,\n children: (\n <Button size=\"lg\" variant=\"outline\">\n {secondaryCta.label}\n </Button>\n ),\n })}\n </div>\n </div>\n </FadeIn>\n\n {/* Right - media */}\n {media !== 'none' && (\n <FadeIn direction=\"right\" delay={200}>\n {media === 'phone' ? (\n <div className=\"flex justify-center\">\n <PhoneFrame size={phoneSize}>\n {heroImage}\n </PhoneFrame>\n </div>\n ) : (\n <div className=\"overflow-hidden rounded-2xl\">\n {heroImage}\n </div>\n )}\n </FadeIn>\n )}\n </div>\n\n {/* Avatar social proof row */}\n {(avatarUrls?.length || socialProofText) && (\n <FadeIn direction=\"up\" delay={400}>\n <div className=\"mx-auto mt-12 flex max-w-6xl items-center gap-4\">\n {avatarUrls && avatarUrls.length > 0 && (\n <div className=\"flex -space-x-3\">\n {avatarUrls.map((url, i) => (\n <Avatar key={i} className=\"size-9 border-2 border-background\">\n <AvatarImage src={url} alt=\"\" />\n <AvatarFallback className=\"text-xs\">\n {String.fromCharCode(65 + (i % 26))}\n </AvatarFallback>\n </Avatar>\n ))}\n </div>\n )}\n {socialProofText && (\n <p className=\"text-sm font-medium text-muted-foreground\">\n {socialProofText}\n </p>\n )}\n </div>\n </FadeIn>\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { ArrowRight } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\n\nexport interface FeatureCardProps extends React.HTMLAttributes<HTMLDivElement> {\n icon: LucideIcon;\n title: string;\n description: string;\n href?: string;\n}\n\nexport function FeatureCard({ icon: Icon, title, description, href, className, ...props }: FeatureCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'group relative flex h-full flex-col gap-4 border bg-card p-6 transition-all duration-200',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl hover:-translate-y-0.5 hover:shadow-md'\n : 'rounded-2xl hover:-translate-y-0.5 hover:shadow-md',\n href && 'cursor-pointer',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n <div\n className={cn(\n 'flex h-10 w-10 items-center justify-center bg-primary/10 text-primary transition-colors group-hover:bg-primary group-hover:text-primary-foreground',\n mode === 'smooth' ? 'rounded-2xl' : 'rounded-xl',\n )}\n >\n <Icon className=\"size-5\" />\n </div>\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <h3 className=\"font-semibold leading-tight\">{title}</h3>\n {href && (\n <ArrowRight className=\"size-4 shrink-0 text-muted-foreground opacity-0 transition-all group-hover:translate-x-0.5 group-hover:opacity-100\" />\n )}\n </div>\n <p className=\"text-sm leading-relaxed text-muted-foreground\">{description}</p>\n </div>\n </div>\n );\n\n const content =\n mode === 'playful' ? (\n <div className={cn('group/playful relative h-full', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-2xl bg-border transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]\"\n />\n {cardInner}\n </div>\n ) : (\n cardInner\n );\n\n if (href) {\n return <a href={href} className=\"block h-full\">{content}</a>;\n }\n\n return content;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface StaggerChildrenProps extends React.HTMLAttributes<HTMLDivElement> {\n stagger?: number;\n delay?: number;\n duration?: number;\n direction?: 'up' | 'down' | 'left' | 'right' | 'none';\n once?: boolean;\n children: React.ReactNode;\n}\n\nconst translateMap = {\n up: [0, 20],\n down: [0, -20],\n left: [20, 0],\n right: [-20, 0],\n none: [0, 0],\n};\n\nexport function StaggerChildren({\n stagger = 80,\n delay = 0,\n duration = 500,\n direction = 'up',\n once = true,\n children,\n className,\n ...props\n}: StaggerChildrenProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n if (once) observer.disconnect();\n } else if (!once) {\n setVisible(false);\n }\n },\n { threshold: 0.1 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [once]);\n\n const [tx, ty] = translateMap[direction];\n\n return (\n <div ref={ref} className={cn(className)} {...props}>\n {React.Children.map(children, (child, i) => (\n <div\n className=\"h-full\"\n style={{\n transition: `opacity ${duration}ms ease, transform ${duration}ms ease`,\n transitionDelay: `${delay + i * stagger}ms`,\n opacity: visible ? 1 : 0,\n transform: visible ? 'translate(0,0)' : `translate(${tx}px,${ty}px)`,\n }}\n >\n {child}\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface FeaturesSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\nexport function FeaturesSection({\n title = 'Everything you need to ship fast',\n description = 'A complete system of components, blocks, and hooks designed to work together - and get out of your way.',\n badge = 'Features',\n features,\n}: FeaturesSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 grid gap-8 sm:grid-cols-2 lg:grid-cols-3\">\n {features.map((feature) => (\n <FeatureCard\n key={feature.title}\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface GroupedFeatureGroup {\n label: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\nexport interface GroupedFeaturesSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n groups: GroupedFeatureGroup[];\n}\n\nexport function GroupedFeaturesSection({\n badge = 'Features',\n title = 'Everything you need to ship',\n description,\n groups,\n}: GroupedFeaturesSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <div className=\"mt-14 space-y-14\">\n {groups.map((group, i) => (\n <div key={group.label}>\n <FadeIn direction=\"up\" delay={i * 60}>\n <div className=\"mb-6 flex items-center gap-3\">\n <span className=\"text-sm font-semibold tracking-wide text-muted-foreground uppercase\">\n {group.label}\n </span>\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n </FadeIn>\n <StaggerChildren className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {group.features.map((feature) => (\n <FeatureCard\n key={feature.title}\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n ))}\n </StaggerChildren>\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface StepItem {\n emoji?: string;\n title: string;\n description: string;\n}\n\nexport interface StepsSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n steps: StepItem[];\n}\n\nexport function StepsSection({\n badge = 'How it works',\n title = 'From zero to shipped',\n description,\n steps,\n}: StepsSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <div className=\"mt-12\">\n {/* Desktop: horizontal row */}\n <div className=\"hidden sm:grid\" style={{ gridTemplateColumns: `repeat(${steps.length}, 1fr)` }}>\n {steps.map((step, i) => (\n <FadeIn key={step.title} direction=\"up\" delay={i * 80}>\n <div className=\"relative flex flex-col items-center text-center px-4\">\n {/* Dashed connector to next step */}\n {i < steps.length - 1 && (\n <div\n aria-hidden=\"true\"\n className=\"absolute top-6 left-1/2 w-full border-t border-dashed border-border\"\n />\n )}\n {/* Emoji badge (or fallback number) */}\n <div className=\"relative z-10 mb-3 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-2xl\">\n {step.emoji ?? (\n <span className=\"text-sm font-semibold text-primary\">{i + 1}</span>\n )}\n </div>\n <h3 className=\"font-semibold text-foreground\">{step.title}</h3>\n <p className=\"mt-2 text-sm leading-relaxed text-muted-foreground\">{step.description}</p>\n </div>\n </FadeIn>\n ))}\n </div>\n\n {/* Mobile: vertical timeline */}\n <div className=\"flex flex-col gap-0 sm:hidden\">\n {steps.map((step, i) => (\n <FadeIn key={step.title} direction=\"up\" delay={i * 80}>\n <div className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Vertical connector */}\n {i < steps.length - 1 && (\n <div\n aria-hidden=\"true\"\n className=\"absolute left-[23px] top-14 bottom-0 w-px border-l border-dashed border-border\"\n />\n )}\n {/* Emoji badge (or fallback number) */}\n <div className=\"relative z-10 flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-muted text-2xl\">\n {step.emoji ?? (\n <span className=\"text-sm font-semibold text-primary\">{i + 1}</span>\n )}\n </div>\n <div className=\"pt-3\">\n <h3 className=\"font-semibold text-foreground\">{step.title}</h3>\n <p className=\"mt-1.5 text-sm leading-relaxed text-muted-foreground\">{step.description}</p>\n </div>\n </div>\n </FadeIn>\n ))}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface TechStackItem {\n icon: LucideIcon;\n name: string;\n description: string;\n href?: string;\n}\n\nexport interface TechStackSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n items: TechStackItem[];\n}\n\nexport function TechStackSection({\n badge = 'Built on',\n title = 'The stack',\n description,\n items,\n}: TechStackSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <StaggerChildren className=\"mt-12 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {items.map((item) => {\n const Icon = item.icon;\n const card = (\n <div\n className={cn(\n 'group flex flex-col gap-3 border bg-background p-5 transition-all duration-200',\n mode === 'smooth'\n ? 'rounded-2xl hover:-translate-y-0.5 hover:shadow-md'\n : 'rounded-xl hover:-translate-y-0.5 hover:shadow-md',\n )}\n >\n <div\n className={cn(\n 'flex h-9 w-9 items-center justify-center bg-muted text-muted-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary',\n mode === 'smooth' ? 'rounded-xl' : 'rounded-lg',\n )}\n >\n <Icon className=\"size-4\" />\n </div>\n <div>\n <p className=\"text-sm font-semibold leading-tight\">{item.name}</p>\n <p className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">{item.description}</p>\n </div>\n </div>\n );\n\n if (item.href) {\n return (\n <a key={item.name} href={item.href} className=\"block\">\n {card}\n </a>\n );\n }\n return <div key={item.name}>{card}</div>;\n })}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface CarouselSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\n/**\n * Horizontally scrolling card carousel for feature-style content.\n * Scroll-snap based with prev/next controls — no carousel dependency.\n */\nexport function CarouselSection({\n title = 'Explore the platform',\n description,\n badge = 'Features',\n features,\n}: CarouselSectionProps) {\n const mode = useUIVariant();\n const trackRef = React.useRef<HTMLDivElement>(null);\n const [canPrev, setCanPrev] = React.useState(false);\n const [canNext, setCanNext] = React.useState(true);\n\n const updateScrollState = React.useCallback(() => {\n const track = trackRef.current;\n if (!track) return;\n setCanPrev(track.scrollLeft > 8);\n setCanNext(track.scrollLeft < track.scrollWidth - track.clientWidth - 8);\n }, []);\n\n React.useEffect(() => {\n const track = trackRef.current;\n if (!track) return;\n updateScrollState();\n track.addEventListener('scroll', updateScrollState, { passive: true });\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(track);\n return () => {\n track.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const scrollByCard = (direction: 1 | -1) => {\n const track = trackRef.current;\n if (!track) return;\n const card = track.querySelector<HTMLElement>('[data-carousel-item]');\n const step = card ? card.offsetWidth + 24 : track.clientWidth * 0.8;\n track.scrollBy({ left: direction * step, behavior: 'smooth' });\n };\n\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n const controlClasses = cn(\n 'flex size-9 items-center justify-center border bg-background text-foreground transition-colors',\n 'hover:bg-muted disabled:opacity-40 disabled:hover:bg-background',\n mode === 'smooth' ? 'rounded-2xl' : 'rounded-xl',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <FadeIn direction=\"up\">\n <div className=\"mt-10 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n aria-label=\"Previous\"\n className={controlClasses}\n onClick={() => scrollByCard(-1)}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next\"\n className={controlClasses}\n onClick={() => scrollByCard(1)}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </button>\n </div>\n\n <div\n ref={trackRef}\n className=\"mt-4 flex snap-x snap-mandatory gap-6 overflow-x-auto pb-4 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n >\n {features.map((feature) => (\n <div\n key={feature.title}\n data-carousel-item\n className=\"w-[280px] shrink-0 snap-start sm:w-[320px]\"\n >\n <FeatureCard\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n </div>\n ))}\n </div>\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface FeatureMarqueeItem {\n icon: LucideIcon;\n title: string;\n}\n\nexport interface FeatureMarqueeRow {\n items: FeatureMarqueeItem[];\n direction?: 'left' | 'right';\n}\n\nexport interface FeatureMarqueeSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n rows: FeatureMarqueeRow[];\n speed?: 'slow' | 'normal' | 'fast';\n pauseOnHover?: boolean;\n}\n\nconst speedDuration = {\n slow: '280s',\n normal: '180s',\n fast: '100s',\n} as const;\n\nexport function FeatureMarqueeSection({\n badge,\n title,\n description,\n rows,\n speed = 'normal',\n pauseOnHover = true,\n}: FeatureMarqueeSectionProps) {\n const mode = useUIVariant();\n const duration = speedDuration[speed];\n\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"py-14 sm:py-20\">\n {(title || badge || description) && (\n <FadeIn direction=\"up\">\n <div className=\"mx-auto mb-10 max-w-4xl px-6 sm:px-10\">\n <SectionTitle title={title ?? ''} description={description} badge={badge} />\n </div>\n </FadeIn>\n )}\n\n <div className=\"space-y-3\">\n {rows.map((row, i) => {\n const direction = row.direction ?? (i % 2 === 0 ? 'left' : 'right');\n const reversed = direction === 'right';\n // Repeat enough that one set exceeds 4K viewport (~3840px).\n const set = Array.from({ length: 4 }, () => row.items).flat();\n const items = [...set, ...set];\n\n return (\n <div\n key={i}\n className=\"group relative overflow-hidden\"\n style={{\n maskImage:\n 'linear-gradient(to right, transparent, black 8%, black 92%, transparent)',\n WebkitMaskImage:\n 'linear-gradient(to right, transparent, black 8%, black 92%, transparent)',\n }}\n >\n <div\n className={cn(\n 'flex w-max gap-3 py-0.5',\n pauseOnHover && 'group-hover:[animation-play-state:paused]',\n )}\n style={{\n animation: `${reversed ? 'feature-marquee-right' : 'feature-marquee-left'} ${duration} linear infinite`,\n }}\n >\n {items.map((item, j) => {\n const Icon = item.icon;\n return (\n <div\n key={`${item.title}-${j}`}\n className=\"flex shrink-0 items-center gap-2 rounded-full border bg-background px-4 py-2 text-sm shadow-sm\"\n >\n <Icon className=\"size-3.5 shrink-0 text-primary\" />\n <span className=\"whitespace-nowrap text-foreground\">{item.title}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n\n <style>{`\n @keyframes feature-marquee-left {\n from { transform: translateX(0); }\n to { transform: translateX(-50%); }\n }\n @keyframes feature-marquee-right {\n from { transform: translateX(-50%); }\n to { transform: translateX(0); }\n }\n `}</style>\n </section>\n );\n}\n","'use client';\n\nimport { ArrowRight, Sparkles } from 'lucide-react';\nimport { Button, cn, useUIVariant } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface CtaSectionProps {\n heading: string;\n description: string;\n primaryCta: { label: string; href: string };\n secondaryCta?: { label: string; href: string };\n footnote?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function CtaSection({\n heading,\n description,\n primaryCta,\n secondaryCta,\n footnote,\n renderLink = defaultRenderLink,\n}: CtaSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"relative px-6 py-16 sm:px-10 sm:py-24\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_center,hsl(var(--primary)/0.15),transparent_70%)]\" />\n <FadeIn direction=\"up\">\n <div className=\"relative mx-auto max-w-2xl text-center\">\n <div className={cn('mb-4 inline-flex h-10 w-10 items-center justify-center bg-primary/10 text-primary', mode === 'smooth' ? 'rounded-3xl' : 'rounded-2xl')}>\n <Sparkles className=\"size-5\" />\n </div>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {heading}\n </h2>\n <p className=\"mx-auto mt-4 max-w-lg text-pretty text-muted-foreground\">\n {description}\n </p>\n <div className=\"mt-8 flex flex-wrap items-center justify-center gap-3\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <Button size=\"lg\">\n {primaryCta.label}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n ),\n })}\n {secondaryCta &&\n renderLink({\n href: secondaryCta.href,\n children: (\n <Button size=\"lg\" variant=\"outline\">\n {secondaryCta.label}\n </Button>\n ),\n })}\n </div>\n {footnote && (\n <p className=\"mt-4 text-sm text-muted-foreground\">\n {footnote}\n </p>\n )}\n </div>\n </FadeIn>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, Rocket } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface CtaCardSectionProps {\n heading: string;\n description?: string;\n primaryCta: { label: string; href: string };\n footnote?: string;\n icon?: React.ReactNode;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function CtaCardSection({\n heading,\n description,\n primaryCta,\n footnote,\n icon,\n renderLink = defaultRenderLink,\n}: CtaCardSectionProps) {\n const ref = React.useRef<HTMLElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n observer.disconnect();\n }\n },\n { threshold: 0.15 },\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n return (\n <section\n ref={ref}\n className={cn(\n 'relative overflow-hidden rounded-3xl border border-gray-200 shadow-sm dark:border-border',\n 'bg-[#E0DFDB] dark:bg-card',\n 'transition-[opacity,transform] duration-700 ease-out',\n visible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-6',\n )}\n >\n {/* Decorative icon */}\n <div\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center\"\n style={{\n opacity: visible ? 0.12 : 0,\n transform: visible ? 'scale(1) rotate(0deg)' : 'scale(0.9) rotate(-5deg)',\n transition: 'opacity 700ms ease 200ms, transform 700ms ease 200ms',\n }}\n >\n {icon ?? <Rocket className=\"size-72 text-foreground dark:text-foreground\" strokeWidth={0.75} />}\n </div>\n\n {/* Content */}\n <div className=\"relative z-10 px-6 py-20 text-center sm:px-10 sm:py-28\">\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {heading}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-lg text-pretty text-muted-foreground\">{description}</p>\n )}\n <div className=\"mt-8\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <span className=\"inline-flex items-center gap-2 rounded-full bg-foreground px-6 py-3 text-sm font-medium text-background transition-opacity hover:opacity-80\">\n {primaryCta.label}\n <ArrowRight className=\"size-4\" />\n </span>\n ),\n })}\n </div>\n {footnote && (\n <p className=\"mt-5 text-sm text-muted-foreground\">{footnote}</p>\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { Badge, Button, cn, Separator, useUIVariant } from '@olwiba/cn';\n\nexport interface PricingFeature {\n label: string;\n included: boolean;\n}\n\nexport interface PricingCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n price: string;\n period?: string;\n description: string;\n features: PricingFeature[];\n cta: string;\n highlighted?: boolean;\n disabled?: boolean;\n /** Disables only the CTA button, leaving the rest of the card interactive. */\n ctaDisabled?: boolean;\n badge?: React.ReactNode;\n /** Rendered directly below the CTA button (e.g. a \"Get notified\" link). */\n footer?: React.ReactNode;\n onSelect?: () => void;\n}\n\nexport function PricingCard({\n name,\n price,\n period = '/mo',\n description,\n features,\n cta,\n highlighted = false,\n disabled = false,\n ctaDisabled = false,\n badge,\n footer,\n onSelect,\n className,\n ...props\n}: PricingCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'relative flex flex-col border p-6 transition-opacity',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl'\n : 'rounded-2xl',\n highlighted ? 'border-primary bg-primary/5 shadow-sm' : 'bg-card',\n disabled && 'pointer-events-none opacity-40 select-none',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n {badge && (\n <div className=\"absolute -top-3 left-1/2 -translate-x-1/2\">\n {typeof badge === 'string' ? <Badge>{badge}</Badge> : badge}\n </div>\n )}\n\n <div className=\"space-y-1\">\n <div className=\"text-sm font-medium text-muted-foreground\">{name}</div>\n <div className=\"flex items-end gap-1\">\n <span className=\"text-4xl font-bold tracking-tight\">{price}</span>\n <span className=\"mb-1 text-sm text-muted-foreground\">{period}</span>\n </div>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n\n <Button\n variant={highlighted ? 'default' : 'outline'}\n className=\"mt-6 w-full\"\n onClick={onSelect}\n disabled={disabled || ctaDisabled}\n >\n {cta}\n </Button>\n\n {footer && <div className=\"mt-3 text-center text-sm\">{footer}</div>}\n\n <Separator className=\"my-6\" />\n\n <ul className=\"space-y-3 text-sm\">\n {features.map((feat) => (\n <li key={feat.label} className=\"flex items-center gap-2\">\n {feat.included ? (\n <>\n <Check className=\"size-4 shrink-0 text-primary\" />\n <span>{feat.label}</span>\n </>\n ) : (\n <>\n <Minus className=\"size-4 shrink-0 text-muted-foreground/40\" />\n <span className=\"text-muted-foreground/40\">{feat.label}</span>\n </>\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n\n if (mode === 'playful') {\n return (\n <div className={cn('group/playful relative', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n 'absolute inset-0 rounded-2xl transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]',\n highlighted ? 'bg-primary/20' : 'bg-border',\n )}\n />\n {cardInner}\n </div>\n );\n }\n\n return cardInner;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\ninterface TimeLeft {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nfunction getTimeLeft(deadline: string): TimeLeft | null {\n const diff = new Date(deadline).getTime() - Date.now();\n if (diff <= 0) return null;\n return {\n days: Math.floor(diff / (1000 * 60 * 60 * 24)),\n hours: Math.floor((diff / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((diff / 1000 / 60) % 60),\n seconds: Math.floor((diff / 1000) % 60),\n };\n}\n\nexport interface CountdownTimerProps {\n deadline: string;\n label?: string;\n className?: string;\n /** Compact inline mode — renders as \"29d · 11h · 22m\", no seconds, no label. For use inside badges. */\n compact?: boolean;\n}\n\nexport function CountdownTimer({\n deadline,\n label = 'Founding price closes in',\n className,\n compact = false,\n}: CountdownTimerProps) {\n const [timeLeft, setTimeLeft] = React.useState<TimeLeft | null>(() => getTimeLeft(deadline));\n\n React.useEffect(() => {\n setTimeLeft(getTimeLeft(deadline));\n const id = setInterval(() => setTimeLeft(getTimeLeft(deadline)), 1000);\n return () => clearInterval(id);\n }, [deadline]);\n\n if (!timeLeft) return null;\n\n if (compact) {\n return (\n <span className={cn('font-mono tabular-nums', className)}>\n {timeLeft.days}d · {String(timeLeft.hours).padStart(2, '0')}h · {String(timeLeft.minutes).padStart(2, '0')}m · {String(timeLeft.seconds).padStart(2, '0')}s\n </span>\n );\n }\n\n const units = [\n { value: timeLeft.days, unit: 'd' },\n { value: timeLeft.hours, unit: 'h' },\n { value: timeLeft.minutes, unit: 'm' },\n { value: timeLeft.seconds, unit: 's' },\n ];\n\n return (\n <div className={cn('flex items-center justify-center gap-2 text-sm', className)}>\n <span className=\"text-muted-foreground\">{label}</span>\n <span className=\"flex items-center gap-1 font-mono font-semibold tabular-nums\">\n {units.map(({ value, unit }, i) => (\n <React.Fragment key={unit}>\n <span>\n {String(value).padStart(2, '0')}\n <span className=\"font-normal text-muted-foreground\">{unit}</span>\n </span>\n {i < units.length - 1 && (\n <span className=\"text-muted-foreground/50\">·</span>\n )}\n </React.Fragment>\n ))}\n </span>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, Button, cn, useUIVariant } from '@olwiba/cn';\nimport { PricingCard, type PricingFeature } from '../components/PricingCard';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { CountdownTimer } from '../motion/CountdownTimer';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PricingPlan {\n name: string;\n monthly: number;\n annual: number;\n description: string;\n cta: string;\n highlighted?: boolean;\n disabled?: boolean;\n /** Disables only the CTA button, leaving the rest of the card interactive. */\n ctaDisabled?: boolean;\n features: PricingFeature[];\n /** Overrides computed price display (e.g. \"$?\" for community/reach-out tiers). */\n priceDisplay?: string;\n /** Overrides computed period display. */\n periodDisplay?: string;\n}\n\nexport interface PricingSectionProps {\n title?: string;\n description?: string;\n badge?: React.ReactNode;\n plans: PricingPlan[];\n saveBadge?: string;\n isAuthenticated?: boolean;\n renderLink?: AppShellRenderLink;\n footnote?: string;\n mode?: 'subscription' | 'one-time';\n foundingDeadline?: string;\n /** Rendered below each plan's CTA button (e.g. a \"Get notified\" link). */\n renderPlanFooter?: (plan: PricingPlan) => React.ReactNode;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function PricingSection({\n title = 'Simple, transparent pricing',\n description = 'Start for free. Scale as you grow. No hidden fees.',\n badge = 'Pricing',\n plans,\n saveBadge = 'Save 34%',\n isAuthenticated,\n renderLink = defaultRenderLink,\n footnote,\n mode = 'subscription',\n foundingDeadline,\n renderPlanFooter,\n}: PricingSectionProps) {\n const [annual, setAnnual] = React.useState(false);\n const isOneTime = mode === 'one-time';\n const uiMode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n uiMode === 'smooth' && 'rounded-3xl border',\n uiMode === 'playful' && 'rounded-2xl border-primary/25 border',\n !uiMode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n {/* Header */}\n <div className=\"text-center\">\n {badge && (\n typeof badge === 'string'\n ? <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\n : <div className=\"mb-4\">{badge}</div>\n )}\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n {description}\n </p>\n )}\n\n {/* Billing toggle — subscription mode only */}\n {!isOneTime && (\n <div className=\"mt-6 inline-flex items-center gap-3 rounded-full border bg-muted p-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setAnnual(false)}\n className={cn(\n 'rounded-full px-4 py-1.5 text-sm font-medium transition-colors',\n !annual ? 'bg-background text-foreground shadow-sm' : 'text-muted-foreground hover:text-foreground',\n )}\n >\n Monthly\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setAnnual(true)}\n className={cn(\n 'flex items-center gap-2 rounded-full px-4 py-1.5 text-sm font-medium transition-colors',\n annual ? 'bg-background text-foreground shadow-sm' : 'text-muted-foreground hover:text-foreground',\n )}\n >\n Annual\n {saveBadge && (\n <Badge variant=\"secondary\" className=\"text-xs\">{saveBadge}</Badge>\n )}\n </Button>\n </div>\n )}\n </div>\n\n {/* Plan cards */}\n <StaggerChildren className=\"mt-10 grid gap-4 lg:grid-cols-3\">\n {plans.map((plan) => {\n const rawPrice = isOneTime ? plan.monthly : (annual ? plan.annual : plan.monthly);\n const price = plan.priceDisplay ?? `$${rawPrice}`;\n const period = plan.periodDisplay ?? (isOneTime ? 'one-time' : (rawPrice > 0 ? '/mo' : ''));\n const badge = plan.highlighted && foundingDeadline\n ? (\n <span className=\"inline-flex items-center rounded-full border bg-secondary px-2.5 py-0.5 text-xs font-semibold text-secondary-foreground\">\n <CountdownTimer deadline={foundingDeadline} compact />\n </span>\n )\n : plan.highlighted\n ? 'Founding member'\n : undefined;\n return (\n <PricingCard\n key={plan.name}\n name={plan.name}\n price={price}\n period={period}\n description={plan.description}\n features={plan.features}\n cta={plan.cta}\n highlighted={plan.highlighted}\n disabled={plan.disabled}\n ctaDisabled={plan.ctaDisabled}\n badge={badge}\n footer={renderPlanFooter?.(plan)}\n />\n );\n })}\n </StaggerChildren>\n\n {/* Footnote */}\n {footnote && (\n <p className=\"mt-8 text-center text-sm text-muted-foreground\">\n {footnote}\n </p>\n )}\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Quote, Star } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, cn, useUIVariant } from '@olwiba/cn';\n\nexport interface TestimonialCardProps extends React.HTMLAttributes<HTMLDivElement> {\n quote: string;\n name: string;\n role: string;\n company?: string;\n avatar?: string;\n initials?: string;\n rating?: number;\n}\n\nexport function TestimonialCard({\n quote,\n name,\n role,\n company,\n avatar,\n initials,\n rating,\n className,\n ...props\n}: TestimonialCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'flex flex-col gap-4 border bg-card p-6',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl'\n : 'rounded-2xl',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n <Quote className=\"size-4 text-muted-foreground/40\" />\n {rating != null && (\n <div className=\"flex gap-0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={cn(\n 'size-4',\n i < rating\n ? 'fill-current text-amber-400'\n : 'text-muted-foreground/30',\n )}\n />\n ))}\n </div>\n )}\n <p className=\"flex-1 text-sm leading-relaxed\">{quote}</p>\n <div className=\"flex items-center gap-3\">\n <Avatar className=\"size-9\">\n <AvatarImage src={avatar} alt={name} />\n <AvatarFallback className=\"text-xs\">{initials ?? name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <div>\n <div className=\"text-sm font-medium leading-tight\">{name}</div>\n <div className=\"text-xs text-muted-foreground\">\n {role}{company ? ` · ${company}` : ''}\n </div>\n </div>\n </div>\n </div>\n );\n\n if (mode === 'playful') {\n return (\n <div className={cn('group/playful relative', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-2xl bg-border transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]\"\n />\n {cardInner}\n </div>\n );\n }\n\n return cardInner;\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { TestimonialCard } from '../components/TestimonialCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface TestimonialsSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n testimonials: Array<{\n quote: string;\n name: string;\n role: string;\n company?: string;\n avatar?: string;\n initials?: string;\n rating?: number;\n }>;\n}\n\nexport function TestimonialsSection({\n title = 'Trusted by teams shipping real products',\n description = \"Here's what engineers and product teams say after using Olwiba in production.\",\n badge = 'Testimonials',\n testimonials,\n}: TestimonialsSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 columns-1 gap-4 sm:columns-2 lg:columns-3\">\n {testimonials.map((t) => (\n <div\n key={t.name}\n className=\"mb-4 break-inside-avoid transition-transform hover:-translate-y-0.5\"\n >\n <TestimonialCard\n quote={t.quote}\n name={t.name}\n role={t.role}\n company={t.company}\n avatar={t.avatar}\n initials={t.initials}\n rating={t.rating}\n />\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Github, Linkedin, Twitter } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, Badge } from '@olwiba/cn';\n\nexport interface TeamMember {\n name: string;\n role: string;\n bio: string;\n avatar?: string;\n initials: string;\n social?: {\n twitter?: string | null;\n github?: string | null;\n linkedin?: string | null;\n };\n}\n\nconst defaultTeam: TeamMember[] = [\n {\n name: 'Olivia Reed',\n role: 'Co-Founder & CEO',\n bio: 'Previously led product at two YC companies. Obsessed with design systems and developer experience.',\n avatar: 'https://ui.shadcn.com/avatars/01.png',\n initials: 'OR',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Marcus Webb',\n role: 'Co-Founder & CTO',\n bio: 'Full-stack engineer with 12 years building UI infrastructure. Open source maintainer.',\n avatar: 'https://ui.shadcn.com/avatars/02.png',\n initials: 'MW',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Priya Nair',\n role: 'Head of Design',\n bio: 'Interaction designer turned design systems engineer. Bridges the gap between Figma and production.',\n avatar: 'https://ui.shadcn.com/avatars/03.png',\n initials: 'PN',\n social: { twitter: '#', github: null, linkedin: '#' },\n },\n];\n\nexport interface TeamSectionProps {\n members?: TeamMember[];\n badge?: string;\n title?: string;\n description?: string;\n}\n\nexport function TeamSection({\n members = defaultTeam,\n badge = 'Team',\n title = 'The people behind Olwiba',\n description = 'A small team with deep experience in design systems, open source, and developer tooling.',\n}: TeamSectionProps) {\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <div className=\"text-center\">\n <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n {description}\n </p>\n </div>\n\n <div className=\"mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {members.map((member) => (\n <div key={member.name} className=\"rounded-2xl border bg-muted/40 p-5\">\n <div className=\"flex items-start gap-4\">\n <Avatar className=\"size-12 rounded-xl\">\n <AvatarImage src={member.avatar} alt={member.name} />\n <AvatarFallback className=\"rounded-xl\">{member.initials}</AvatarFallback>\n </Avatar>\n <div className=\"min-w-0\">\n <div className=\"font-semibold leading-tight\">{member.name}</div>\n <div className=\"text-sm text-muted-foreground\">{member.role}</div>\n </div>\n </div>\n <p className=\"mt-3 text-sm leading-relaxed text-muted-foreground\">{member.bio}</p>\n {member.social && (\n <div className=\"mt-4 flex items-center gap-2\">\n {member.social.twitter && (\n <a href={member.social.twitter} aria-label=\"Twitter\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Twitter className=\"size-3.5\" />\n </a>\n )}\n {member.social.github && (\n <a href={member.social.github} aria-label=\"GitHub\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Github className=\"size-3.5\" />\n </a>\n )}\n {member.social.linkedin && (\n <a href={member.social.linkedin} aria-label=\"LinkedIn\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Linkedin className=\"size-3.5\" />\n </a>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger, cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface FaqSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n items: Array<{ question: string; answer: string }>;\n}\n\nexport function FaqSection({\n title = 'Frequently asked questions',\n description = 'Everything you need to know before getting started.',\n badge = 'FAQ',\n items,\n}: FaqSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-3xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <FadeIn direction=\"up\">\n <Accordion type=\"single\" collapsible className=\"mt-10 w-full\">\n {items.map((item, i) => (\n <AccordionItem key={i} value={`item-${i}`}>\n <AccordionTrigger className=\"text-left text-sm font-medium\">\n {item.question}\n </AccordionTrigger>\n <AccordionContent className=\"text-sm text-muted-foreground\">\n {item.answer}\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface CountUpProps extends React.HTMLAttributes<HTMLSpanElement> {\n from?: number;\n to: number;\n duration?: number;\n decimals?: number;\n prefix?: string;\n suffix?: string;\n once?: boolean;\n}\n\nexport function CountUp({\n from = 0,\n to,\n duration = 1500,\n decimals = 0,\n prefix = '',\n suffix = '',\n once = true,\n className,\n ...props\n}: CountUpProps) {\n const ref = React.useRef<HTMLSpanElement>(null);\n const [value, setValue] = React.useState(from);\n const hasStarted = React.useRef(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && (!once || !hasStarted.current)) {\n hasStarted.current = true;\n const start = performance.now();\n\n const tick = (now: number) => {\n const elapsed = now - start;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 3);\n setValue(from + (to - from) * eased);\n if (progress < 1) requestAnimationFrame(tick);\n };\n\n requestAnimationFrame(tick);\n }\n },\n { threshold: 0.5 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [from, to, duration, once]);\n\n return (\n <span ref={ref} className={cn(className)} {...props}>\n {prefix}{value.toFixed(decimals)}{suffix}\n </span>\n );\n}\n","'use client';\n\nimport { Separator, cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { CountUp } from '../motion/CountUp';\n\nexport interface StatsSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n stats: Array<{ value: string; label: string; description?: string }>;\n}\n\nfunction parseStatValue(value: string) {\n const match = value.match(/^(\\d+(?:\\.\\d+)?)(.*)/);\n if (!match) return null;\n const num = parseFloat(match[1]);\n const suffix = match[2] || '';\n const decimals = match[1].includes('.') ? match[1].split('.')[1].length : 0;\n return { num, suffix, decimals };\n}\n\nfunction StatValue({ value }: { value: string }) {\n const parsed = parseStatValue(value);\n if (!parsed) return <>{value}</>;\n return <CountUp to={parsed.num} decimals={parsed.decimals} suffix={parsed.suffix} />;\n}\n\nexport function StatsSection({\n title = 'Built for scale, used in production',\n description,\n badge = 'By the numbers',\n stats,\n}: StatsSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"relative px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_bottom,hsl(var(--primary)/0.08),transparent_60%)]\" />\n <div className=\"relative mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 grid gap-px overflow-hidden rounded-2xl border bg-border sm:grid-cols-2 lg:grid-cols-4\">\n {stats.map((stat) => (\n <div key={stat.label} className=\"flex flex-col gap-2 bg-card px-6 py-8\">\n <div className=\"text-4xl font-bold tracking-tight\">\n <StatValue value={stat.value} />\n </div>\n <div className=\"font-medium\">{stat.label}</div>\n {stat.description && (\n <>\n <Separator />\n <p className=\"text-sm text-muted-foreground\">{stat.description}</p>\n </>\n )}\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, Mail } from 'lucide-react';\nimport { Badge, Button, Input } from '@olwiba/cn';\n\nexport interface NewsletterSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n placeholder?: string;\n submitLabel?: string;\n privacyHref?: string;\n privacyLabel?: string;\n successTitle?: string;\n successDescription?: string;\n onSubscribe?: (email: string) => void | Promise<void>;\n}\n\nconst defaults = {\n badge: 'Newsletter',\n title: 'Stay in the loop',\n description:\n 'New components, release notes, and product tips — straight to your inbox. No spam, unsubscribe any time.',\n placeholder: 'you@company.com',\n submitLabel: 'Subscribe',\n privacyHref: '#',\n privacyLabel: 'Privacy Policy',\n successTitle: \"You're on the list.\",\n successDescription: \"We'll be in touch soon.\",\n};\n\nexport function NewsletterSection({\n badge = defaults.badge,\n title = defaults.title,\n description = defaults.description,\n placeholder = defaults.placeholder,\n submitLabel = defaults.submitLabel,\n privacyHref = defaults.privacyHref,\n privacyLabel = defaults.privacyLabel,\n successTitle = defaults.successTitle,\n successDescription = defaults.successDescription,\n onSubscribe,\n}: NewsletterSectionProps = {}) {\n const [email, setEmail] = React.useState('');\n const [submitted, setSubmitted] = React.useState(false);\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n if (!email) return;\n await onSubscribe?.(email);\n setSubmitted(true);\n }\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"relative px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_top_right,hsl(var(--primary)/0.1),transparent_60%)]\" />\n <div className=\"relative mx-auto max-w-xl text-center\">\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <div className=\"inline-flex h-8 w-8 items-center justify-center rounded-xl bg-primary/10 text-primary\">\n <Mail className=\"size-4\" />\n </div>\n <Badge variant=\"secondary\">\n {badge}\n </Badge>\n </div>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">{title}</h2>\n <p className=\"mx-auto mt-4 max-w-sm text-pretty text-muted-foreground\">{description}</p>\n\n {submitted ? (\n <div className=\"mt-8 rounded-2xl border bg-muted/50 px-6 py-5 text-sm\">\n <span className=\"font-medium\">{successTitle}</span>{' '}\n <span className=\"text-muted-foreground\">{successDescription}</span>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"mt-8 flex flex-col gap-3 sm:flex-row\">\n <input\n type=\"text\"\n name=\"company\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n <Input\n type=\"email\"\n placeholder={placeholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n required\n className=\"flex-1\"\n />\n <Button type=\"submit\">\n {submitLabel}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n </form>\n )}\n\n <p className=\"mt-4 text-xs text-muted-foreground\">\n By subscribing you agree to our{' '}\n <a href={privacyHref} className=\"underline underline-offset-4 hover:text-foreground\">\n {privacyLabel}\n </a>\n .\n </p>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ChevronDown, Mail, MessageSquare, Send, type LucideIcon } from 'lucide-react';\nimport { Badge, Button, Input, Label, Textarea } from '@olwiba/cn';\n\nexport type ContactInfoItem = {\n label: string;\n value: string;\n icon?: LucideIcon;\n};\n\nexport interface ContactSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n contactInfo?: ContactInfoItem[];\n privacyHref?: string;\n successTitle?: string;\n successDescription?: string;\n sendAnotherLabel?: string;\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;\n}\n\nconst PHONE_PREFIXES = [\n { label: 'US +1', value: '+1-US' },\n { label: 'NZ +64', value: '+64-NZ' },\n { label: 'AU +61', value: '+61-AU' },\n { label: 'UK +44', value: '+44-UK' },\n { label: 'CA +1', value: '+1-CA' },\n { label: 'EU', value: '+0-EU' },\n];\n\nconst defaults = {\n badge: 'Contact',\n title: \"Let's talk\",\n description:\n \"Have a question or want to work together? Fill in the form and you'll hear back from the person who built it.\",\n successTitle: 'Message sent',\n successDescription: \"Thanks for reaching out. You'll get a reply within one business day.\",\n sendAnotherLabel: 'Send another',\n};\n\nexport function ContactSection({\n badge = defaults.badge,\n title = defaults.title,\n description = defaults.description,\n contactInfo,\n privacyHref,\n successTitle = defaults.successTitle,\n successDescription = defaults.successDescription,\n sendAnotherLabel = defaults.sendAnotherLabel,\n onSubmit,\n}: ContactSectionProps = {}) {\n const [submitted, setSubmitted] = React.useState(false);\n\n async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {\n e.preventDefault();\n await onSubmit?.(e);\n setSubmitted(true);\n }\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n\n {/* Header */}\n <div className=\"mx-auto max-w-2xl text-center\">\n {badge && (\n <div className=\"mb-4 flex justify-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n </div>\n )}\n <h2 className=\"text-balance text-4xl font-semibold tracking-tight sm:text-5xl\">\n {title}\n </h2>\n <p className=\"mt-4 text-lg text-muted-foreground\">{description}</p>\n\n {contactInfo && contactInfo.length > 0 && (\n <div className=\"mt-8 flex flex-wrap justify-center gap-6\">\n {contactInfo.map(({ icon: Icon = Mail, label, value }) => (\n <div key={label} className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Icon className=\"size-4 shrink-0\" />\n <span>{value}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Body */}\n {submitted ? (\n <div className=\"mx-auto mt-16 max-w-xl text-center\">\n <div className=\"mx-auto flex h-14 w-14 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <MessageSquare className=\"size-6\" />\n </div>\n <h3 className=\"mt-5 text-lg font-semibold\">{successTitle}</h3>\n <p className=\"mt-2 text-sm text-muted-foreground\">{successDescription}</p>\n <Button variant=\"outline\" size=\"sm\" className=\"mt-6\" onClick={() => setSubmitted(false)}>\n {sendAnotherLabel}\n </Button>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"mx-auto mt-16 max-w-xl sm:mt-20\">\n {/* Honeypot */}\n <input\n type=\"text\"\n name=\"_hp\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n\n <div className=\"grid grid-cols-1 gap-x-8 gap-y-6 sm:grid-cols-2\">\n {/* First name */}\n <div>\n <Label htmlFor=\"contact-first\" className=\"block text-sm/6 font-semibold\">\n First name\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-first\"\n name=\"firstName\"\n autoComplete=\"given-name\"\n placeholder=\"First\"\n required\n />\n </div>\n </div>\n\n {/* Last name */}\n <div>\n <Label htmlFor=\"contact-last\" className=\"block text-sm/6 font-semibold\">\n Last name\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-last\"\n name=\"lastName\"\n autoComplete=\"family-name\"\n placeholder=\"Last\"\n required\n />\n </div>\n </div>\n\n {/* Company */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-company\" className=\"block text-sm/6 font-semibold\">\n Company{' '}\n <span className=\"font-normal text-muted-foreground\">(optional)</span>\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-company\"\n name=\"company\"\n autoComplete=\"organization\"\n placeholder=\"Acme Inc.\"\n />\n </div>\n </div>\n\n {/* Email */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-email\" className=\"block text-sm/6 font-semibold\">\n Email\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@company.com\"\n required\n />\n </div>\n </div>\n\n {/* Phone */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-phone\" className=\"block text-sm/6 font-semibold\">\n Phone number{' '}\n <span className=\"font-normal text-muted-foreground\">(optional)</span>\n </Label>\n <div className=\"mt-2.5 flex overflow-hidden rounded-md border border-input bg-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\">\n <div className=\"relative flex shrink-0 items-center border-r border-input\">\n <select\n name=\"countryCode\"\n aria-label=\"Country code\"\n defaultValue=\"+1-US\"\n className=\"h-full appearance-none bg-transparent py-2 pl-3 pr-7 text-sm text-foreground focus:outline-none\"\n >\n {PHONE_PREFIXES.map(({ label, value }) => (\n <option key={value} value={value}>\n {label}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-1.5 size-3.5 shrink-0 text-muted-foreground\" />\n </div>\n <input\n id=\"contact-phone\"\n name=\"phone\"\n type=\"tel\"\n placeholder=\"123-456-7890\"\n className=\"min-w-0 grow bg-transparent px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none\"\n />\n </div>\n </div>\n\n {/* Message */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-message\" className=\"block text-sm/6 font-semibold\">\n Message\n </Label>\n <div className=\"mt-2.5\">\n <Textarea\n id=\"contact-message\"\n name=\"message\"\n rows={4}\n placeholder=\"Tell us what you're working on...\"\n className=\"resize-none\"\n required\n />\n </div>\n </div>\n\n {/* Privacy toggle */}\n {privacyHref && (\n <div className=\"flex gap-x-4 sm:col-span-2\">\n <div className=\"flex h-6 items-center\">\n <div className=\"group relative inline-flex h-5 w-8 shrink-0 cursor-pointer rounded-full border border-input bg-muted p-px transition-colors duration-200 ease-in-out focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 has-[:checked]:border-primary has-[:checked]:bg-primary\">\n <span className=\"size-4 rounded-full bg-background shadow-sm transition-transform duration-200 ease-in-out group-has-[:checked]:translate-x-3\" />\n <input\n id=\"contact-privacy\"\n name=\"privacy\"\n type=\"checkbox\"\n required\n aria-label=\"Agree to privacy policy\"\n className=\"absolute inset-0 size-full cursor-pointer appearance-none focus:outline-none\"\n />\n </div>\n </div>\n <Label\n htmlFor=\"contact-privacy\"\n className=\"cursor-pointer text-sm font-normal leading-snug text-muted-foreground\"\n >\n By selecting this, you agree to our{' '}\n <a\n href={privacyHref}\n className=\"font-medium text-foreground underline-offset-2 hover:underline\"\n >\n privacy policy\n </a>\n .\n </Label>\n </div>\n )}\n </div>\n\n <div className=\"mt-10\">\n <Button type=\"submit\" className=\"w-full\">\n Let's talk\n <Send className=\"ml-2 size-4\" />\n </Button>\n </div>\n </form>\n )}\n\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface ComparisonColumn {\n label: string;\n cost: string;\n costDetail?: string;\n items: string[];\n highlighted?: boolean;\n}\n\nexport interface ComparisonSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n columns: ComparisonColumn[];\n}\n\nexport function ComparisonSection({\n badge = 'The math',\n title = 'The math is simple',\n description,\n columns,\n}: ComparisonSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <StaggerChildren className=\"mt-12 grid gap-4 sm:grid-cols-3\">\n {columns.map((col) => (\n <div\n key={col.label}\n className={cn(\n 'flex h-full flex-col rounded-2xl border p-6',\n col.highlighted\n ? 'border-primary bg-primary/10 ring-1 ring-primary/20'\n : 'border-border bg-muted/40',\n )}\n >\n <div className=\"mb-6\">\n <p\n className={cn(\n 'text-xs font-semibold uppercase tracking-widest',\n col.highlighted ? 'text-primary/80' : 'text-muted-foreground',\n )}\n >\n {col.label}\n </p>\n <p className=\"mt-2 text-2xl font-bold tracking-tight text-foreground\">\n {col.cost}\n </p>\n {col.costDetail && (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {col.costDetail}\n </p>\n )}\n </div>\n\n <ul className=\"flex flex-col gap-3\">\n {col.items.map((item) => (\n <li key={item} className=\"flex items-start gap-2.5\">\n {col.highlighted ? (\n <span className=\"mt-0.5 shrink-0 text-sm leading-none\">⚡</span>\n ) : (\n <span className=\"mt-0.5 shrink-0 text-sm leading-none\">❌</span>\n )}\n <span\n className={cn(\n 'text-sm leading-snug',\n col.highlighted ? 'text-foreground' : 'text-muted-foreground',\n )}\n >\n {item}\n </span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Check, X } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface QualificationItem {\n text: string;\n}\n\nexport interface QualificationColumn {\n heading: string;\n variant: 'positive' | 'negative';\n items: string[];\n}\n\nexport interface QualificationSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n columns: [QualificationColumn, QualificationColumn];\n}\n\nexport function QualificationSection({\n badge = 'Who it is for',\n title = 'Is this for you?',\n description,\n columns,\n}: QualificationSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <FadeIn direction=\"up\" className=\"mt-12 grid gap-6 sm:grid-cols-2\">\n {columns.map((col) => {\n const isPositive = col.variant === 'positive';\n const Icon = isPositive ? Check : X;\n\n return (\n <div\n key={col.heading}\n className={cn(\n 'flex flex-col gap-4 rounded-2xl border p-6',\n isPositive ? 'border-border bg-muted/30' : 'border-border bg-muted/10',\n )}\n >\n <h3 className=\"text-sm font-semibold uppercase tracking-widest text-muted-foreground\">\n {col.heading}\n </h3>\n <ul className=\"flex flex-col gap-3\">\n {col.items.map((item) => (\n <li key={item} className=\"flex items-start gap-3\">\n <span\n className={cn(\n 'mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full',\n isPositive\n ? 'bg-emerald-500/15 text-emerald-600 dark:text-emerald-400'\n : 'bg-rose-500/15 text-rose-600 dark:text-rose-400',\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n <span className=\"text-sm leading-relaxed text-foreground/80\">{item}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Menu } from 'lucide-react';\nimport { Button, Separator, Sheet, SheetContent, SheetTrigger } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface NavbarProps {\n brand: { name: string; logo?: React.ReactNode; href?: string };\n navLinks: Array<{ label: string; href: string }>;\n cta?: {\n primary?: { label: string; href: string };\n secondary?: { label: string; href: string };\n };\n /** Icon-button controls rendered right-of-nav, left-of-CTA. Pass e.g. ModeSwitchMinimal, ThemeSwitchMinimal. */\n controls?: React.ReactNode[];\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Navbar({\n brand,\n navLinks,\n cta,\n controls,\n renderLink = defaultRenderLink,\n}: NavbarProps) {\n const [open, setOpen] = React.useState(false);\n const brandHref = brand.href ?? '/';\n const hasRightContent = controls?.length || cta?.primary || cta?.secondary;\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <nav className=\"grid h-16 grid-cols-[1fr_auto_1fr] items-center px-6\">\n {/* Brand — left column */}\n {renderLink({\n href: brandHref,\n children: (\n <span className=\"flex items-center gap-2 font-semibold\">\n {brand.logo}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n\n {/* Desktop nav links — center column when right content exists, else shift right */}\n <div className={`hidden items-center gap-1 md:flex ${!hasRightContent ? 'col-span-2 justify-end' : ''}`}>\n {navLinks.map((link) => (\n <span key={link.label}>\n {renderLink({\n href: link.href,\n className: 'rounded-md px-3 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground',\n children: link.label,\n })}\n </span>\n ))}\n </div>\n\n {/* Desktop right — controls + CTA */}\n {hasRightContent && (\n <div className=\"hidden items-center justify-end gap-2 md:flex\">\n {controls?.map((control, i) => (\n <React.Fragment key={i}>{control}</React.Fragment>\n ))}\n {(cta?.secondary || cta?.primary) && controls?.length ? (\n <div className=\"mx-1 h-4 w-px bg-border\" />\n ) : null}\n {cta?.secondary &&\n renderLink({\n href: cta.secondary.href,\n children: <Button variant=\"ghost\" size=\"sm\">{cta.secondary.label}</Button>,\n })}\n {cta?.primary &&\n renderLink({\n href: cta.primary.href,\n children: <Button size=\"sm\">{cta.primary.label}</Button>,\n })}\n </div>\n )}\n\n {/* Mobile drawer — trigger on the right, panel slides in from the left */}\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"col-start-3 justify-self-end md:hidden\">\n <Menu className=\"size-5\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"w-72\">\n {/* Brand row alone at the top — leaves the top-right corner to the built-in close */}\n <div className=\"flex items-center pb-4\">\n <span onClick={() => setOpen(false)} className=\"cursor-pointer\">\n {renderLink({\n href: brandHref,\n children: (\n <span className=\"flex items-center gap-2 font-semibold\">\n {brand.logo}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n </span>\n </div>\n {controls?.length ? (\n <div className=\"mb-4 flex w-full items-center justify-between gap-1\">\n {controls.map((control, i) => (\n <React.Fragment key={i}>{control}</React.Fragment>\n ))}\n </div>\n ) : null}\n <Separator />\n <nav className=\"mt-4 flex flex-col gap-1\">\n {navLinks.map((link) => (\n <span key={link.label} onClick={() => setOpen(false)}>\n {renderLink({\n href: link.href,\n className: 'block rounded-md px-3 py-2 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground',\n children: link.label,\n })}\n </span>\n ))}\n </nav>\n <div className=\"mt-6 flex flex-col gap-2\">\n {cta?.secondary &&\n renderLink({\n href: cta.secondary.href,\n children: <Button variant=\"outline\" className=\"w-full\">{cta.secondary.label}</Button>,\n })}\n {cta?.primary &&\n renderLink({\n href: cta.primary.href,\n children: <Button className=\"w-full\">{cta.primary.label}</Button>,\n })}\n </div>\n </SheetContent>\n </Sheet>\n </nav>\n </section>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { StatusIndicator } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface FooterProps {\n brand: { name: string; logo?: ReactNode; href?: string };\n navLinks?: Array<{ label: string; href: string }>;\n socialLinks?: Array<{ label: string; href: string; icon: ReactNode }>;\n legal?: string;\n status?: { label: string; operational?: boolean };\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Footer({\n brand,\n navLinks,\n socialLinks,\n legal,\n status,\n renderLink = defaultRenderLink,\n}: FooterProps) {\n const brandHref = brand.href ?? '/';\n const copyrightText = legal ?? `\\u00A9 ${new Date().getFullYear()} ${brand.name}. All rights reserved.`;\n\n return (\n <footer className=\"overflow-hidden rounded-2xl border bg-card text-foreground\">\n <div className=\"mx-auto max-w-7xl px-6 py-20 sm:py-24 lg:px-8\">\n {/* Brand */}\n <div className=\"flex justify-center\">\n {renderLink({\n href: brandHref,\n className: 'flex items-center gap-2',\n children: (\n <>\n {brand.logo}\n <span className=\"text-lg font-semibold text-foreground\">{brand.name}</span>\n </>\n ),\n })}\n </div>\n\n {/* Nav links */}\n {navLinks && navLinks.length > 0 && (\n <nav className=\"mt-10 flex flex-wrap justify-center gap-x-12 gap-y-3\" aria-label=\"Footer\">\n {navLinks.map(({ label, href }) => (\n <div key={label}>\n {renderLink({\n href,\n className: 'text-sm/6 text-muted-foreground transition-colors hover:text-foreground',\n children: label,\n })}\n </div>\n ))}\n </nav>\n )}\n\n {/* Social icons */}\n {socialLinks && socialLinks.length > 0 && (\n <div className=\"mt-10 flex justify-center gap-x-10\">\n {socialLinks.map(({ label, href, icon }) => (\n <a\n key={label}\n href={href}\n aria-label={label}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n >\n {icon}\n </a>\n ))}\n </div>\n )}\n\n {/* Copyright */}\n <p className=\"mt-10 text-center text-sm/6 text-muted-foreground/70\">\n {copyrightText}\n </p>\n\n {/* Status */}\n {status && (\n <div className=\"mt-4 flex justify-center\">\n <div className=\"inline-flex items-center rounded-full border bg-muted/40 px-3 py-1 text-xs text-muted-foreground\">\n <StatusIndicator\n pulse={status.operational !== false}\n dotClassName={status.operational !== false ? 'text-emerald-500' : 'text-destructive'}\n size=\"sm\"\n >\n {status.label}\n </StatusIndicator>\n </div>\n </div>\n )}\n </div>\n </footer>\n );\n}\n","'use client';\n\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface LogoStripProps {\n logos: Array<{ src: string; darkSrc?: string; alt: string; href?: string }>;\n label?: string;\n speed?: 'slow' | 'normal' | 'fast';\n}\n\nconst speedDuration = {\n slow: '60s',\n normal: '40s',\n fast: '25s',\n} as const;\n\nexport function LogoStrip({\n logos,\n label,\n speed = 'normal',\n}: LogoStripProps) {\n const duration = speedDuration[speed];\n\n return (\n <FadeIn direction=\"up\">\n <section className=\"overflow-hidden py-8\">\n {label && (\n <p className=\"mb-6 text-center text-sm text-muted-foreground\">{label}</p>\n )}\n <div\n className=\"relative\"\n style={{\n maskImage: 'linear-gradient(to right, transparent, black 10%, black 90%, transparent)',\n WebkitMaskImage: 'linear-gradient(to right, transparent, black 10%, black 90%, transparent)',\n }}\n >\n <div\n className=\"flex w-max gap-12\"\n style={{\n animation: `logo-strip-scroll ${duration} linear infinite`,\n }}\n >\n {/* Render logos twice for seamless loop */}\n {[...logos, ...logos].map((logo, i) => {\n const img = logo.darkSrc ? (\n <>\n <img\n src={logo.src}\n alt={logo.alt}\n className=\"h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:hidden\"\n />\n <img\n src={logo.darkSrc}\n alt={logo.alt}\n className=\"hidden h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:block\"\n />\n </>\n ) : (\n <img\n src={logo.src}\n alt={logo.alt}\n className=\"h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0\"\n />\n );\n\n return logo.href ? (\n <a\n key={`${logo.alt}-${i}`}\n href={logo.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex shrink-0 items-center\"\n >\n {img}\n </a>\n ) : (\n <div key={`${logo.alt}-${i}`} className=\"flex shrink-0 items-center\">\n {img}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n\n <style>{`\n @keyframes logo-strip-scroll {\n from { transform: translateX(0); }\n to { transform: translateX(-50%); }\n }\n `}</style>\n </FadeIn>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\n// ─── Grid ─────────────────────────────────────────────────────────────────────\n\ninterface GridUnderlayProps extends React.SVGAttributes<SVGElement> {\n variant: 'dots' | 'lines' | 'cross';\n size?: number;\n className?: string;\n}\n\nfunction GridUnderlay({ variant, size = 24, className, ...props }: GridUnderlayProps) {\n const id = React.useId();\n\n const pattern =\n variant === 'dots' ? (\n <circle cx={size / 2} cy={size / 2} r={1} fill=\"currentColor\" />\n ) : variant === 'lines' ? (\n <path d={`M ${size} 0 L 0 0 0 ${size}`} fill=\"none\" stroke=\"currentColor\" strokeWidth={0.5} />\n ) : (\n <>\n <line x1={size / 2} y1={0} x2={size / 2} y2={size} stroke=\"currentColor\" strokeWidth={0.5} />\n <line x1={0} y1={size / 2} x2={size} y2={size / 2} stroke=\"currentColor\" strokeWidth={0.5} />\n </>\n );\n\n return (\n <svg\n aria-hidden=\"true\"\n className={cn('pointer-events-none absolute inset-0 h-full w-full text-foreground/15', className)}\n {...props}\n >\n <defs>\n <pattern id={id} width={size} height={size} patternUnits=\"userSpaceOnUse\">\n {pattern}\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill={`url(#${id})`} />\n </svg>\n );\n}\n\n// ─── Glow ─────────────────────────────────────────────────────────────────────\n\nconst blurClass = { sm: 'blur-xl', md: 'blur-2xl', lg: 'blur-3xl', xl: 'blur-[80px]' } as const;\n\ninterface GlowUnderlayProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: number;\n color?: string;\n followCursor?: boolean;\n blur?: keyof typeof blurClass;\n}\n\nfunction GlowUnderlay({\n size = 400,\n color = 'color-mix(in oklch, var(--primary) 45%, transparent)',\n followCursor = false,\n blur = 'lg',\n className,\n style,\n ...props\n}: GlowUnderlayProps) {\n const [pos, setPos] = React.useState({ x: '50%', y: '50%' });\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!followCursor) return;\n const handleMouseMove = (e: MouseEvent) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n setPos({ x: `${e.clientX - rect.left}px`, y: `${e.clientY - rect.top}px` });\n };\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [followCursor]);\n\n return (\n <div ref={containerRef} className={cn('pointer-events-none absolute inset-0 overflow-hidden', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn('absolute rounded-full', blurClass[blur])}\n style={{\n width: size,\n height: size,\n background: color,\n left: pos.x,\n top: pos.y,\n transform: 'translate(-50%, -50%)',\n ...style,\n }}\n />\n </div>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\ntype UnderlayVariant = 'dots' | 'lines' | 'cross' | 'glow';\n\ntype UnderlayProps =\n | ({ variant: 'dots' | 'lines' | 'cross' } & Omit<GridUnderlayProps, 'variant'>)\n | ({ variant: 'glow' } & Omit<GlowUnderlayProps, 'variant'>);\n\nexport function Underlay(props: UnderlayProps) {\n if (props.variant === 'glow') {\n return <GlowUnderlay {...(props as GlowUnderlayProps)} />;\n }\n return <GridUnderlay {...(props as GridUnderlayProps)} />;\n}\n\nexport type { UnderlayProps, UnderlayVariant };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\nimport { Loader2 } from 'lucide-react';\n\n// ─── Dim ──────────────────────────────────────────────────────────────────────\n\ninterface DimOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n opacity?: number;\n}\n\nfunction DimOverlay({ opacity = 0.5, className, style, ...props }: DimOverlayProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn('absolute inset-0 bg-background', className)}\n style={{ opacity, ...style }}\n {...props}\n />\n );\n}\n\n// ─── Scrim ────────────────────────────────────────────────────────────────────\n\ntype ScrimDirection = 'top' | 'bottom' | 'left' | 'right';\n\ninterface ScrimOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: ScrimDirection;\n color?: string;\n}\n\nconst scrimGradients: Record<ScrimDirection, string> = {\n bottom: 'to bottom',\n top: 'to top',\n left: 'to left',\n right: 'to right',\n};\n\nfunction ScrimOverlay({ direction = 'bottom', color = 'var(--background)', className, style, ...props }: ScrimOverlayProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn('pointer-events-none absolute inset-x-0 bottom-0 h-1/2', className)}\n style={{\n background: `linear-gradient(${scrimGradients[direction]}, transparent, ${color})`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\n// ─── Loading ──────────────────────────────────────────────────────────────────\n\ninterface LoadingOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n}\n\nfunction LoadingOverlay({ label, className, ...props }: LoadingOverlayProps) {\n return (\n <div\n role=\"status\"\n className={cn('absolute inset-0 flex flex-col items-center justify-center gap-2 bg-background/80 backdrop-blur-sm', className)}\n {...props}\n >\n <Loader2 className=\"size-5 animate-spin text-muted-foreground\" />\n {label && <p className=\"text-xs text-muted-foreground\">{label}</p>}\n </div>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\ntype OverlayVariant = 'dim' | 'scrim' | 'loading';\n\ntype OverlayProps =\n | ({ variant: 'dim' } & DimOverlayProps)\n | ({ variant: 'scrim' } & ScrimOverlayProps)\n | ({ variant: 'loading' } & LoadingOverlayProps);\n\nexport function Overlay(props: OverlayProps) {\n if (props.variant === 'dim') return <DimOverlay {...(props as DimOverlayProps)} />;\n if (props.variant === 'scrim') return <ScrimOverlay {...(props as ScrimOverlayProps)} />;\n return <LoadingOverlay {...(props as LoadingOverlayProps)} />;\n}\n\nexport type { OverlayProps, OverlayVariant };\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface AnimatedPillProps {\n labels: string[];\n interval?: number;\n className?: string;\n}\n\nexport function AnimatedPill({ labels, interval = 3800, className }: AnimatedPillProps) {\n const pillRef = useRef<HTMLSpanElement>(null);\n const textRef = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n const pill = pillRef.current;\n const text = textRef.current;\n if (!pill || !text || labels.length < 2) return;\n\n pill.style.width = pill.offsetWidth + 'px';\n pill.dataset.w = String(pill.offsetWidth);\n\n let idx = 0;\n\n const cycle = () => {\n idx = (idx + 1) % labels.length;\n\n text.style.transition = 'opacity 140ms ease';\n text.style.opacity = '0';\n\n setTimeout(() => {\n text.textContent = labels[idx] ?? '';\n\n const oldW = parseFloat(pill.dataset.w ?? '0');\n pill.style.transition = 'none';\n pill.style.width = 'auto';\n const newW = pill.offsetWidth;\n\n pill.style.width = oldW + 'px';\n void pill.offsetWidth;\n\n pill.style.transition = 'width 280ms cubic-bezier(0.4, 0, 0.2, 1)';\n pill.style.width = newW + 'px';\n pill.dataset.w = String(newW);\n\n setTimeout(() => {\n text.style.transition = 'opacity 140ms ease';\n text.style.opacity = '1';\n }, 260);\n }, 150);\n };\n\n const id = setInterval(cycle, interval);\n return () => clearInterval(id);\n }, [labels, interval]);\n\n if (!labels.length) return null;\n\n return (\n <span\n ref={pillRef}\n className={cn(\n 'inline-flex items-center overflow-hidden whitespace-nowrap rounded-full border bg-secondary px-2.5 py-0.5 text-xs font-semibold text-secondary-foreground',\n className,\n )}\n >\n <span ref={textRef}>{labels[0]}</span>\n </span>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface PageTransitionProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'fade' | 'slide-up' | 'slide-down';\n duration?: number;\n children: React.ReactNode;\n}\n\nexport function PageTransition({\n variant = 'fade',\n duration = 300,\n children,\n className,\n style,\n ...props\n}: PageTransitionProps) {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n const id = requestAnimationFrame(() => setMounted(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const initial: React.CSSProperties =\n variant === 'slide-up'\n ? { opacity: 0, transform: 'translateY(16px)' }\n : variant === 'slide-down'\n ? { opacity: 0, transform: 'translateY(-16px)' }\n : { opacity: 0 };\n\n const entered: React.CSSProperties = { opacity: 1, transform: 'translateY(0)' };\n\n return (\n <div\n className={cn(className)}\n style={{\n transition: `opacity ${duration}ms ease, transform ${duration}ms ease`,\n ...(mounted ? entered : initial),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Search } from 'lucide-react';\nimport {\n Badge,\n Button,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n cn,\n} from '@olwiba/cn';\n\nexport interface SpotlightItem {\n id: string;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n onSelect: () => void;\n}\n\nexport interface SpotlightGroup {\n heading: string;\n items: SpotlightItem[];\n}\n\nexport interface SpotlightProps {\n groups: SpotlightGroup[];\n placeholder?: string;\n trigger?: React.ReactNode;\n triggerClassName?: string;\n shortcut?: string;\n}\n\nexport function Spotlight({\n groups,\n placeholder = 'Search anything...',\n trigger,\n triggerClassName,\n shortcut = '⌘K',\n}: SpotlightProps) {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((v) => !v);\n }\n };\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, []);\n\n return (\n <>\n {trigger ? (\n <div onClick={() => setOpen(true)}>{trigger}</div>\n ) : (\n <Button\n variant=\"outline\"\n onClick={() => setOpen(true)}\n className={cn('w-64 justify-between text-muted-foreground', triggerClassName)}\n >\n <span className=\"flex items-center gap-2\">\n <Search className=\"size-4\" />\n {placeholder}\n </span>\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">{shortcut}</Badge>\n </Button>\n )}\n\n <CommandDialog open={open} onOpenChange={setOpen}>\n <CommandInput placeholder={placeholder} />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n {groups.map((group, i) => (\n <React.Fragment key={group.heading}>\n {i > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading}>\n {group.items.map((item) => (\n <CommandItem\n key={item.id}\n onSelect={() => { item.onSelect(); setOpen(false); }}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.description && (\n <span className=\"ml-2 text-xs text-muted-foreground\">{item.description}</span>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n </>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, cn } from '@olwiba/cn';\n\nexport interface DockItem {\n icon: LucideIcon;\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface DockProps extends React.HTMLAttributes<HTMLDivElement> {\n items: DockItem[];\n iconSize?: number;\n magnification?: number;\n}\n\nconst BASE = 40;\nconst MAGNIFY_RADIUS = 80;\n\nexport function Dock({ items, iconSize = BASE, magnification = 1.7, className, ...props }: DockProps) {\n const [mouseX, setMouseX] = React.useState<number | null>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n function getScale(index: number): number {\n if (mouseX === null || !containerRef.current) return 1;\n const container = containerRef.current;\n const buttons = container.querySelectorAll<HTMLElement>('[data-dock-item]');\n const btn = buttons[index];\n if (!btn) return 1;\n const rect = btn.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const distance = Math.abs(mouseX - centerX);\n if (distance > MAGNIFY_RADIUS) return 1;\n const t = 1 - distance / MAGNIFY_RADIUS;\n return 1 + (magnification - 1) * t;\n }\n\n return (\n <TooltipProvider delayDuration={0}>\n <div\n ref={containerRef}\n onMouseMove={(e) => setMouseX(e.clientX)}\n onMouseLeave={() => setMouseX(null)}\n className={cn(\n 'inline-flex items-end gap-2 rounded-2xl border bg-background/80 px-4 py-3 shadow-lg backdrop-blur-md',\n className,\n )}\n {...props}\n >\n {items.map((item, i) => {\n const scale = getScale(i);\n const size = iconSize * scale;\n\n const button = (\n <Tooltip key={item.label}>\n <TooltipTrigger asChild>\n <button\n data-dock-item\n onClick={item.onClick}\n className=\"flex items-center justify-center rounded-xl bg-muted text-foreground transition-colors hover:bg-accent\"\n style={{\n width: size,\n height: size,\n transition: 'width 100ms ease, height 100ms ease',\n transformOrigin: 'bottom center',\n }}\n aria-label={item.label}\n >\n <item.icon style={{ width: size * 0.5, height: size * 0.5 }} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" sideOffset={8}>\n <p>{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n\n if (item.href) {\n return (\n <a key={item.label} href={item.href}>\n {button}\n </a>\n );\n }\n\n return button;\n })}\n </div>\n </TooltipProvider>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport {\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n ContextMenu as RadixContextMenu,\n} from '@olwiba/cn';\n\nexport interface ContextMenuAction {\n type: 'item';\n label: string;\n shortcut?: string;\n disabled?: boolean;\n onSelect?: () => void;\n}\n\nexport interface ContextMenuSeparatorDef {\n type: 'separator';\n}\n\nexport interface ContextMenuLabelDef {\n type: 'label';\n label: string;\n}\n\nexport interface ContextMenuSubDef {\n type: 'sub';\n label: string;\n items: ContextMenuDef[];\n}\n\nexport type ContextMenuDef = ContextMenuAction | ContextMenuSeparatorDef | ContextMenuLabelDef | ContextMenuSubDef;\n\nexport interface ContextMenuProps {\n items: ContextMenuDef[];\n children: React.ReactNode;\n}\n\nfunction renderItems(items: ContextMenuDef[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') return <ContextMenuSeparator key={i} />;\n if (item.type === 'label') return <ContextMenuLabel key={i}>{item.label}</ContextMenuLabel>;\n if (item.type === 'sub') {\n return (\n <ContextMenuSub key={i}>\n <ContextMenuSubTrigger>{item.label}</ContextMenuSubTrigger>\n <ContextMenuSubContent>{renderItems(item.items)}</ContextMenuSubContent>\n </ContextMenuSub>\n );\n }\n return (\n <ContextMenuItem key={i} disabled={item.disabled} onSelect={item.onSelect}>\n {item.label}\n {item.shortcut && <ContextMenuShortcut>{item.shortcut}</ContextMenuShortcut>}\n </ContextMenuItem>\n );\n });\n}\n\nexport function ContextMenu({ items, children }: ContextMenuProps) {\n return (\n <RadixContextMenu>\n <ContextMenuTrigger asChild>{children}</ContextMenuTrigger>\n <ContextMenuContent>\n {renderItems(items)}\n </ContextMenuContent>\n </RadixContextMenu>\n );\n}\n\nexport {\n ContextMenuCheckboxItem,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n};\n","'use client';\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '@olwiba/cn';\nimport type { UseConfirmReturn } from '../hooks/use-confirm';\n\nexport interface ConfirmDialogProps extends Pick<UseConfirmReturn, 'isOpen' | 'options' | 'handleConfirm' | 'handleCancel'> {\n destructive?: boolean;\n}\n\nexport function ConfirmDialog({ isOpen, options, handleConfirm, handleCancel, destructive = false }: ConfirmDialogProps) {\n return (\n <AlertDialog open={isOpen} onOpenChange={(open) => { if (!open) handleCancel(); }}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{options.title ?? 'Are you sure?'}</AlertDialogTitle>\n {options.description && (\n <AlertDialogDescription>{options.description}</AlertDialogDescription>\n )}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={handleCancel}>\n {options.cancelLabel ?? 'Cancel'}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n className={destructive ? 'bg-destructive text-destructive-foreground hover:bg-destructive/90' : undefined}\n >\n {options.confirmLabel ?? 'Confirm'}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\nfunction AppScreenRoot({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex h-full flex-col', className)}>\n {children}\n </div>\n );\n}\n\nfunction AppScreenHeader({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex items-center gap-2 border-b border-border px-4 py-3 shrink-0', className)}>\n {children}\n </div>\n );\n}\n\nfunction AppScreenBody({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex-1 overflow-auto px-4 py-3', className)}>\n {children}\n </div>\n );\n}\n\nexport const AppScreen = Object.assign(AppScreenRoot, {\n Header: AppScreenHeader,\n Body: AppScreenBody,\n});\n\nexport type { };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\n blur?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nconst blurClass = {\n sm: 'backdrop-blur-sm',\n md: 'backdrop-blur-md',\n lg: 'backdrop-blur-lg',\n};\n\nexport function GlassCard({ blur = 'md', className, children, ...props }: GlassCardProps) {\n return (\n <div\n className={cn(\n 'rounded-2xl border border-white/20 bg-background/50 shadow-sm',\n blurClass[blur],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\n\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n label: string;\n delta?: string;\n trend?: 'up' | 'down' | 'neutral';\n description?: string;\n}\n\nexport function StatCard({ value, label, delta, trend = 'neutral', description, className, ...props }: StatCardProps) {\n return (\n <div\n className={cn('rounded-2xl border bg-card p-5', className)}\n {...props}\n >\n <div className=\"text-sm text-muted-foreground\">{label}</div>\n <div className=\"mt-2 flex items-end justify-between gap-3\">\n <div className=\"text-3xl font-bold tracking-tight\">{value}</div>\n {delta && (\n <div\n className={cn(\n 'flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium',\n trend === 'up' && 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',\n trend === 'down' && 'bg-red-500/10 text-red-600 dark:text-red-400',\n trend === 'neutral' && 'bg-muted text-muted-foreground',\n )}\n >\n {trend === 'up' && <TrendingUp className=\"size-3\" />}\n {trend === 'down' && <TrendingDown className=\"size-3\" />}\n {delta}\n </div>\n )}\n </div>\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface ImageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n src: string;\n alt?: string;\n overlay?: 'none' | 'subtle' | 'strong';\n aspectRatio?: 'video' | 'square' | 'portrait' | 'auto';\n children?: React.ReactNode;\n}\n\nconst overlayClass = {\n none: '',\n subtle: 'bg-gradient-to-t from-black/60 via-black/10 to-transparent',\n strong: 'bg-gradient-to-t from-black/80 via-black/30 to-black/10',\n};\n\nconst aspectClass = {\n video: 'aspect-video',\n square: 'aspect-square',\n portrait: 'aspect-[3/4]',\n auto: '',\n};\n\nexport function ImageCard({\n src,\n alt = '',\n overlay = 'subtle',\n aspectRatio = 'video',\n children,\n className,\n ...props\n}: ImageCardProps) {\n return (\n <div\n className={cn(\n 'group relative overflow-hidden rounded-2xl bg-muted',\n aspectClass[aspectRatio],\n className,\n )}\n {...props}\n >\n <img\n src={src}\n alt={alt}\n className=\"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n {overlay !== 'none' && (\n <div className={cn('absolute inset-0', overlayClass[overlay])} />\n )}\n {children && (\n <div className=\"absolute inset-0 flex flex-col justify-end p-5 text-white\">\n {children}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface FlowConnectorProps {\n /** Line axis. Default: 'vertical'. */\n direction?: 'vertical' | 'horizontal';\n /**\n * CSS color string for the line and arrowhead.\n * Falls back to currentColor at reduced opacity when omitted.\n */\n color?: string;\n /** Show an open-chevron arrowhead at the destination end. Default: false. */\n arrow?: boolean;\n /** Show a traveling dot animation along the connector. Default: false. */\n animate?: boolean;\n /** Duration of the traveling dot animation. Default: '1.4s'. */\n animateDur?: string;\n /** CSS delay before the traveling dot animation starts. Default: '0s'. */\n animateDelay?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst DASH_ON = '5px';\nconst DASH_OFF = '4px';\n\n/**\n * Dashed connecting line between diagram nodes.\n * Control size via className (e.g. `h-10` for vertical, `w-16` for horizontal).\n * Pass `style` for fade/entrance animations — the wrapper inherits it.\n */\nexport function FlowConnector({\n direction = 'vertical',\n color,\n arrow = false,\n animate = false,\n animateDur = '1.4s',\n animateDelay = '0s',\n className,\n style,\n}: FlowConnectorProps) {\n const stroke = color ?? 'currentColor';\n const opacity = color ? 0.75 : 0.4;\n\n if (direction === 'vertical') {\n return (\n <div\n className={cn('relative flex flex-col items-center', className)}\n style={style}\n aria-hidden\n >\n {animate && (\n <style>{`@keyframes fc-dot-v{0%{top:-4px;opacity:0}8%{opacity:1}88%{opacity:1}100%{top:calc(100% + 4px);opacity:0}}`}</style>\n )}\n <div\n className=\"flex-1\"\n style={{\n width: 2,\n opacity,\n background: `repeating-linear-gradient(to bottom, ${stroke} 0, ${stroke} ${DASH_ON}, transparent ${DASH_ON}, transparent calc(${DASH_ON} + ${DASH_OFF}))`,\n }}\n />\n {animate && (\n <div\n style={{\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n width: 5,\n height: 5,\n borderRadius: '50%',\n backgroundColor: stroke,\n animation: `fc-dot-v ${animateDur} ease-in-out ${animateDelay} infinite both`,\n }}\n />\n )}\n {arrow && (\n <svg\n width=\"12\"\n height=\"7\"\n viewBox=\"0 0 12 7\"\n style={{ display: 'block', opacity }}\n aria-hidden\n >\n <polyline\n points=\"1,1 6,6 11,1\"\n fill=\"none\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn('flex items-center', className)}\n style={style}\n aria-hidden\n >\n <div\n className=\"flex-1\"\n style={{\n height: 2,\n opacity,\n background: `repeating-linear-gradient(to right, ${stroke} 0, ${stroke} ${DASH_ON}, transparent ${DASH_ON}, transparent calc(${DASH_ON} + ${DASH_OFF}))`,\n }}\n />\n {arrow && (\n <svg\n width=\"7\"\n height=\"12\"\n viewBox=\"0 0 7 12\"\n style={{ display: 'block', opacity }}\n aria-hidden\n >\n <polyline\n points=\"1,1 6,6 1,11\"\n fill=\"none\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface FlowBracketProps {\n /**\n * Vertical anchor for the top connection as a percentage of the wrapper height (0–100).\n * Defaults to 8 (near the top of the first child).\n */\n anchorTop?: number;\n /** Per-side override for the top anchor of the left bracket. Falls back to anchorTop. */\n anchorTopLeft?: number;\n /** Per-side override for the top anchor of the right bracket. Falls back to anchorTop. */\n anchorTopRight?: number;\n /**\n * Vertical anchor for the bottom connection as a percentage of the wrapper height (0–100).\n * Defaults to 92 (near the bottom of the last child).\n */\n anchorBottom?: number;\n /**\n * How far outside the wrapper the bracket extends, in SVG units (viewBox width = 1000).\n * Defaults to 22.\n */\n extent?: number;\n /** Show open-chevron arrowhead at the destination end. Default: true. */\n arrow?: boolean;\n /** CSS color for both bracket lines and animated dots. Defaults to muted slate. */\n color?: string;\n /** Override color for the left bracket only. */\n colorLeft?: string;\n /** Override color for the right bracket only. */\n colorRight?: string;\n /** Show left bracket. Default: true. */\n left?: boolean;\n /** Show right bracket. Default: true. */\n right?: boolean;\n /**\n * Animate a dot traveling the L-path from the bottom anchor up to the top anchor\n * (sync → genesis/docs direction).\n * Dots are placed after {children} in DOM so positive-z-index card stacking contexts\n * naturally render above them.\n */\n animate?: boolean;\n /** Duration of one full dot journey. Default: '4s'. */\n animateDur?: string;\n /** Reverse the right bracket path direction so its arrowhead points DOWN (into sync). Default: false. */\n reverseRight?: boolean;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Wraps children in a relative container and draws square bracket lines on the\n * left and/or right outside edges — connecting the top of the first child down\n * to the bottom of the last child (e.g. docs → SYNC direction).\n *\n * Arrowheads are rendered as absolutely-positioned SVGs (not SVG markers) so\n * they render at a consistent pixel size regardless of the bracket SVG's aspect\n * ratio (which spans the full section height with preserveAspectRatio=\"none\").\n */\nexport function FlowBracket({\n anchorTop = 8,\n anchorTopLeft,\n anchorTopRight,\n anchorBottom = 92,\n extent = 22,\n arrow = true,\n color = 'rgba(148,163,184,0.4)',\n colorLeft,\n colorRight,\n left = true,\n right = true,\n animate = false,\n animateDur = '4s',\n reverseRight = false,\n style,\n className,\n children,\n}: FlowBracketProps) {\n const L = -extent;\n const R = 1000 + extent;\n\n const cl = colorLeft ?? color;\n const cr = colorRight ?? color;\n const aTL = anchorTopLeft ?? anchorTop;\n const aTR = anchorTopRight ?? anchorTop;\n\n // Left bracket: bottom → top (arrowhead at top, pointing right into genesis)\n const leftD = `M 0,${anchorBottom} L ${L},${anchorBottom} L ${L},${aTL} L 0,${aTL}`;\n // Right bracket: reversed = top → bottom (arrowhead at bottom, pointing left into sync)\n const rightD = reverseRight\n ? `M 1000,${aTR} L ${R},${aTR} L ${R},${anchorBottom} L 1000,${anchorBottom}`\n : `M 1000,${anchorBottom} L ${R},${anchorBottom} L ${R},${aTR} L 1000,${aTR}`;\n\n // CSS dot: extent as % of container width\n const ep = `${(extent / 10).toFixed(1)}%`;\n const dotKeyframes = animate ? `\n@keyframes fb-dl{\n 0%{top:${anchorBottom}%;left:0;opacity:0}\n 6%{opacity:1}\n 20%{top:${anchorBottom}%;left:-${ep}}\n 80%{top:${aTL}%;left:-${ep};opacity:1}\n 94%{top:${aTL}%;left:0;opacity:0}\n 100%{top:${aTL}%;left:0;opacity:0}\n}\n@keyframes fb-dr{\n 0%{top:${anchorBottom}%;left:100%;opacity:0}\n 6%{opacity:1}\n 20%{top:${anchorBottom}%;left:calc(100% + ${ep})}\n 80%{top:${aTR}%;left:calc(100% + ${ep});opacity:1}\n 94%{top:${aTR}%;left:100%;opacity:0}\n 100%{top:${aTR}%;left:100%;opacity:0}\n}\n@keyframes fb-drr{\n 0%{top:${aTR}%;left:100%;opacity:0}\n 6%{opacity:1}\n 20%{top:${aTR}%;left:calc(100% + ${ep})}\n 80%{top:${anchorBottom}%;left:calc(100% + ${ep});opacity:1}\n 94%{top:${anchorBottom}%;left:100%;opacity:0}\n 100%{top:${anchorBottom}%;left:100%;opacity:0}\n}` : '';\n\n const dotBase: React.CSSProperties = {\n position: 'absolute',\n width: 5,\n height: 5,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n pointerEvents: 'none',\n opacity: 0,\n };\n\n // Shared arrowhead polyline props — same chevron shape as ecosystem connector markers\n const chevronProps = {\n fill: 'none',\n strokeWidth: '1.5',\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n };\n\n // Arrowhead SVG style — positioned in CSS space so it renders at a fixed pixel size\n // regardless of the bracket SVG's non-uniform scale (preserveAspectRatio=\"none\")\n const arrowBase: React.CSSProperties = {\n position: 'absolute',\n width: 10,\n height: 8,\n overflow: 'visible',\n pointerEvents: 'none',\n transform: 'translate(-50%, -50%)',\n };\n\n return (\n <div className={className} style={{ position: 'relative', ...style }}>\n {animate && <style>{dotKeyframes}</style>}\n <svg\n viewBox=\"0 0 1000 100\"\n preserveAspectRatio=\"none\"\n aria-hidden\n className=\"pointer-events-none absolute inset-0\"\n style={{ width: '100%', height: '100%', overflow: 'visible' }}\n >\n {left && (\n <path d={leftD} fill=\"none\" style={{ stroke: cl }} strokeWidth={1.5} strokeDasharray=\"5,4\"\n vectorEffect=\"non-scaling-stroke\" />\n )}\n {right && (\n <path d={rightD} fill=\"none\" style={{ stroke: cr }} strokeWidth={1.5} strokeDasharray=\"5,4\"\n vectorEffect=\"non-scaling-stroke\" />\n )}\n </svg>\n\n {/* Left bracket arrowhead — tip points right (→) into the genesis/docs tier */}\n {arrow && left && (\n <svg\n aria-hidden\n viewBox=\"0 0 10 8\"\n style={{ ...arrowBase, top: `${aTL}%`, left: 0 }}\n >\n <polyline points=\"1,1 8,4 1,7\" style={{ stroke: cl }} {...chevronProps} />\n </svg>\n )}\n\n {/* Right bracket arrowhead — tip points left (←) into the destination tier */}\n {arrow && right && (\n <svg\n aria-hidden\n viewBox=\"0 0 10 8\"\n style={{\n ...arrowBase,\n top: reverseRight ? `${anchorBottom}%` : `${aTR}%`,\n left: '100%',\n }}\n >\n <polyline points=\"9,1 2,4 9,7\" style={{ stroke: cr }} {...chevronProps} />\n </svg>\n )}\n\n {children}\n\n {/* Dots placed after children so card stacking contexts (z-index ≥ 1) render above */}\n {animate && left && (\n <div\n aria-hidden\n style={{ ...dotBase, backgroundColor: cl, animation: `fb-dl ${animateDur} ease-in-out 0s infinite` }}\n />\n )}\n {animate && right && (\n <div\n aria-hidden\n style={{ ...dotBase, backgroundColor: cr, animation: `${reverseRight ? 'fb-drr' : 'fb-dr'} ${animateDur} ease-in-out 1.8s infinite` }}\n />\n )}\n </div>\n );\n}\n","import { Spinner } from '@olwiba/cn';\n\ninterface FullPageSpinnerProps {\n message?: string;\n}\n\nexport function FullPageSpinner({ message }: FullPageSpinnerProps) {\n return (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-4\">\n <Spinner className=\"size-8\" />\n {message && <p className=\"text-muted-foreground text-sm\">{message}</p>}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PageHeaderBreadcrumb {\n label: string;\n href?: string;\n}\n\nexport interface PageHeaderBackButton {\n label?: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n breadcrumbs?: PageHeaderBreadcrumb[];\n backButton?: PageHeaderBackButton;\n renderLink?: AppShellRenderLink;\n className?: string;\n children?: React.ReactNode;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function PageHeader({\n title,\n description,\n breadcrumbs,\n backButton,\n renderLink = defaultRenderLink,\n className,\n children,\n}: PageHeaderProps) {\n return (\n <div className={cn('flex flex-col gap-1 pb-6', className)}>\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav aria-label=\"Breadcrumb\" className=\"mb-2 flex items-center gap-1 text-sm text-muted-foreground\">\n {breadcrumbs.map((crumb, i) => {\n const isLast = i === breadcrumbs.length - 1;\n return (\n <React.Fragment key={i}>\n {i > 0 && <ChevronRight className=\"size-3.5 shrink-0\" />}\n {isLast || !crumb.href ? (\n <span className={cn(isLast && 'text-foreground font-medium')}>{crumb.label}</span>\n ) : (\n renderLink({\n href: crumb.href,\n children: crumb.label,\n className: 'hover:text-foreground transition-colors',\n })\n )}\n </React.Fragment>\n );\n })}\n </nav>\n )}\n\n {backButton && (\n <div className=\"mb-2\">\n {backButton.href ? (\n renderLink({\n href: backButton.href,\n children: (\n <>\n <ChevronLeft className=\"size-4\" />\n <span>{backButton.label ?? 'Back'}</span>\n </>\n ),\n className: 'inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors',\n })\n ) : (\n <button\n type=\"button\"\n onClick={backButton.onClick}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ChevronLeft className=\"size-4\" />\n <span>{backButton.label ?? 'Back'}</span>\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-start justify-between gap-4\">\n <h1 className=\"text-2xl font-semibold tracking-tight\">{title}</h1>\n {children && <div className=\"flex shrink-0 items-center gap-2\">{children}</div>}\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Spinner } from '@olwiba/cn';\n\ninterface SuspensedProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function Suspensed({ children, fallback }: SuspensedProps) {\n return (\n <React.Suspense fallback={fallback ?? <Spinner />}>\n {children}\n </React.Suspense>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Moon, Sun } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\n\nfunction getInitialTheme(): 'light' | 'dark' {\n if (typeof document === 'undefined') return 'dark';\n const stored = localStorage.getItem('theme') as 'light' | 'dark' | null;\n return stored ?? (document.documentElement.classList.contains('dark') ? 'dark' : 'light');\n}\n\nexport function ThemeSwitchMinimal() {\n const [theme, setThemeState] = React.useState<'light' | 'dark'>(getInitialTheme);\n\n const toggle = () => {\n const next = theme === 'dark' ? 'light' : 'dark';\n setThemeState(next);\n localStorage.setItem('theme', next);\n document.documentElement.classList.toggle('dark', next === 'dark');\n };\n\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={toggle} className=\"size-8\" aria-label=\"Toggle theme\">\n <span\n key={theme}\n className=\"inline-flex size-4 items-center justify-center animate-in fade-in zoom-in-75 spin-in-90 duration-200 motion-reduce:animate-none\"\n >\n {theme === 'dark' ? <Sun className=\"size-4\" /> : <Moon className=\"size-4\" />}\n </span>\n </Button>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { LayoutGrid, Sparkles, Layers } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\nimport { useOlwibaUI, type UIMode } from '../context/OlwibaUIContext';\n\nconst MODES: UIMode[] = ['default', 'playful', 'smooth'];\n\nconst MODE_ICONS: Record<UIMode, React.ReactNode> = {\n default: <LayoutGrid className=\"size-4\" />,\n playful: <Sparkles className=\"size-4\" />,\n smooth: <Layers className=\"size-4\" />,\n};\n\nconst MODE_LABELS: Record<UIMode, string> = {\n default: 'Default mode',\n playful: 'Playful mode',\n smooth: 'Smooth mode',\n};\n\nexport function ModeSwitchMinimal() {\n const { mode, setMode } = useOlwibaUI();\n\n const cycle = () => {\n const idx = MODES.indexOf(mode);\n setMode(MODES[(idx + 1) % MODES.length]);\n };\n\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={cycle} className=\"size-8\" aria-label={MODE_LABELS[mode]}>\n <span\n key={mode}\n className=\"inline-flex size-4 items-center justify-center animate-in fade-in zoom-in-75 duration-200 motion-reduce:animate-none\"\n >\n {MODE_ICONS[mode]}\n </span>\n </Button>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Palette } from 'lucide-react';\nimport { Button, Popover, PopoverContent, PopoverTrigger } from '@olwiba/cn';\n\ninterface BrandColor {\n name: string;\n label: string;\n css: string;\n}\n\nconst BRAND_COLORS: BrandColor[] = [\n {\n name: 'zinc',\n label: 'Zinc',\n css: `\n :root { --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.708 0 0); }\n .dark { --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --ring: oklch(0.556 0 0); }\n `,\n },\n {\n name: 'blue',\n label: 'Blue',\n css: `\n :root { --primary: oklch(0.546 0.245 262.881); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.546 0.245 262.881); }\n .dark { --primary: oklch(0.623 0.214 259.815); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.623 0.214 259.815); }\n `,\n },\n {\n name: 'emerald',\n label: 'Emerald',\n css: `\n :root { --primary: oklch(0.596 0.145 163.225); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.596 0.145 163.225); }\n .dark { --primary: oklch(0.765 0.177 163.223); --primary-foreground: oklch(0.145 0 0); --ring: oklch(0.765 0.177 163.223); }\n `,\n },\n {\n name: 'purple',\n label: 'Purple',\n css: `\n :root { --primary: oklch(0.558 0.288 302.321); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.558 0.288 302.321); }\n .dark { --primary: oklch(0.714 0.203 305.504); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.714 0.203 305.504); }\n `,\n },\n {\n name: 'rose',\n label: 'Rose',\n css: `\n :root { --primary: oklch(0.645 0.246 16.439); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.645 0.246 16.439); }\n .dark { --primary: oklch(0.717 0.194 17.428); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.717 0.194 17.428); }\n `,\n },\n {\n name: 'orange',\n label: 'Orange',\n css: `\n :root { --primary: oklch(0.705 0.213 47.604); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.705 0.213 47.604); }\n .dark { --primary: oklch(0.792 0.184 70.08); --primary-foreground: oklch(0.145 0 0); --ring: oklch(0.792 0.184 70.08); }\n `,\n },\n {\n name: 'slate',\n label: 'Slate',\n css: `\n :root { --primary: oklch(0.446 0.043 257.281); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.446 0.043 257.281); }\n .dark { --primary: oklch(0.704 0.04 256.788); --primary-foreground: oklch(0.129 0.042 264.695); --ring: oklch(0.704 0.04 256.788); }\n `,\n },\n];\n\n// Preview hex values matched to each preset (used for swatch circles only)\nconst PREVIEW_HEX: Record<string, string> = {\n zinc: '#27272a',\n blue: '#3b82f6',\n emerald: '#10b981',\n purple: '#a855f7',\n rose: '#f43f5e',\n orange: '#f97316',\n slate: '#64748b',\n};\n\nconst STORAGE_KEY = 'brand-color';\nconst STYLE_ID = 'brand-color-override';\n\nfunction applyColor(color: BrandColor) {\n let el = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!el) {\n el = document.createElement('style');\n el.id = STYLE_ID;\n document.head.appendChild(el);\n }\n el.textContent = color.css;\n localStorage.setItem(STORAGE_KEY, color.name);\n}\n\nfunction getInitialColorName(): string {\n if (typeof localStorage === 'undefined') return 'emerald';\n return localStorage.getItem(STORAGE_KEY) ?? 'emerald';\n}\n\nexport function BrandColorSwitchMinimal() {\n const [active, setActive] = React.useState<string>(getInitialColorName);\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n const saved = localStorage.getItem(STORAGE_KEY) ?? 'emerald';\n const color = BRAND_COLORS.find((c) => c.name === saved);\n if (color) applyColor(color);\n }, []);\n\n function select(color: BrandColor) {\n applyColor(color);\n setActive(color.name);\n setOpen(false);\n }\n\n const activeHex = PREVIEW_HEX[active] ?? '#27272a';\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8\"\n aria-label=\"Change brand color\"\n >\n <span className=\"relative inline-flex size-4 items-center justify-center\">\n <Palette className=\"size-4\" />\n <span\n className={`absolute -bottom-0.5 -right-0.5 size-1.5 rounded-full ring-1 ring-background${\n active === 'zinc' ? ' dark:ring-white/25' : ''\n }`}\n style={{ background: activeHex }}\n />\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"end\">\n <p className=\"mb-2.5 text-xs font-medium text-muted-foreground\">Brand color</p>\n <div className=\"grid grid-cols-4 gap-1.5\">\n {BRAND_COLORS.map((color) => (\n <button\n key={color.name}\n type=\"button\"\n onClick={() => select(color)}\n title={color.label}\n className=\"group flex flex-col items-center gap-1\"\n >\n <span\n // Zinc's swatch is near-black — give it a border in dark mode so it\n // doesn't vanish into the popover background (transparent in light)\n className={`flex size-7 items-center justify-center rounded-full ring-offset-background transition-all group-hover:scale-110${\n color.name === 'zinc' ? ' border border-transparent dark:border-white/25' : ''\n }`}\n style={{\n background: PREVIEW_HEX[color.name],\n boxShadow:\n active === color.name\n ? `0 0 0 2px var(--background), 0 0 0 4px ${PREVIEW_HEX[color.name]}`\n : undefined,\n }}\n >\n {active === color.name && (\n <svg className=\"size-3 text-white\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\">\n <path d=\"M20 6L9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </span>\n <span className=\"text-[10px] text-muted-foreground\">{color.label}</span>\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\ninterface ThemeColorUpdaterProps {\n colorTheme?: string;\n}\n\n/**\n * Applies a data-theme attribute to the document root when a color theme is selected.\n * Use CSS selectors like `[data-theme=\"blue\"] { --primary: ... }` to apply theme colors.\n */\nexport function ThemeColorUpdater({ colorTheme }: ThemeColorUpdaterProps) {\n React.useEffect(() => {\n if (colorTheme) {\n document.documentElement.setAttribute('data-theme', colorTheme);\n } else {\n document.documentElement.removeAttribute('data-theme');\n }\n }, [colorTheme]);\n\n return null;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\ninterface VersionBannerProps {\n version: string;\n message?: string;\n className?: string;\n onDismiss?: () => void;\n}\n\nexport function VersionBanner({ version, message, className, onDismiss }: VersionBannerProps) {\n const [dismissed, setDismissed] = React.useState(false);\n\n if (dismissed) return null;\n\n return (\n <div className={cn('flex items-center justify-between gap-4 bg-primary/10 px-4 py-2 text-sm', className)}>\n <div className=\"flex items-center gap-2\">\n <span className=\"rounded bg-primary/20 px-1.5 py-0.5 font-mono text-xs font-semibold text-primary\">\n v{version}\n </span>\n {message && <span className=\"text-muted-foreground\">{message}</span>}\n </div>\n {onDismiss && (\n <button\n onClick={() => { setDismissed(true); onDismiss(); }}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-4\" />\n </button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { cn } from '../lib/utils';\n\nexport interface DevBannerProps {\n environment?: string;\n className?: string;\n}\n\nexport function DevBanner({ environment = 'development', className }: DevBannerProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-2 bg-amber-500/15 px-4 py-1 text-xs font-medium text-amber-700 dark:text-amber-400',\n className,\n )}\n >\n <span className=\"size-1.5 rounded-full bg-amber-500\" />\n <span>{environment}</span>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface Hotkey {\n key: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n alt?: boolean;\n handler: () => void;\n description?: string;\n}\n\ninterface RegisterHotkeysProps {\n hotkeys: Hotkey[];\n}\n\nexport function RegisterHotkeys({ hotkeys }: RegisterHotkeysProps) {\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const hotkey of hotkeys) {\n const matches =\n event.key.toLowerCase() === hotkey.key.toLowerCase() &&\n !!event.ctrlKey === !!hotkey.ctrl &&\n !!event.metaKey === !!hotkey.meta &&\n !!event.shiftKey === !!hotkey.shift &&\n !!event.altKey === !!hotkey.alt;\n\n if (matches) {\n event.preventDefault();\n hotkey.handler();\n break;\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkeys]);\n\n return null;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { AlertTriangle } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\n\ninterface RootErrorFallbackProps {\n error: Error;\n reset: () => void;\n}\n\nexport function RootErrorFallback({ error, reset }: RootErrorFallbackProps) {\n return (\n <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 p-8 text-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <AlertTriangle className=\"size-12 text-destructive\" />\n <h2 className=\"text-xl font-semibold\">Something went wrong</h2>\n <p className=\"max-w-md text-sm text-muted-foreground\">\n {error.message || 'An unexpected error occurred.'}\n </p>\n </div>\n <Button onClick={reset} variant=\"outline\">\n Try again\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PostCardProps {\n title: string;\n description?: string;\n date: string;\n slug: string;\n image?: string;\n tags?: string[];\n renderLink?: AppShellRenderLink;\n}\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n}\n\nexport function PostCard({ title, description, date, slug, image, tags, renderLink }: PostCardProps) {\n const href = `/blog/${slug}`;\n\n const LinkWrapper = ({ children, className }: { children: React.ReactNode; className?: string }) =>\n renderLink ? renderLink({ href, children, className }) : <a href={href} className={className}>{children}</a>;\n\n return (\n <article className=\"group flex flex-col gap-3\">\n {image && (\n <LinkWrapper className=\"block overflow-hidden rounded-xl\">\n <img\n src={image}\n alt={title}\n className=\"aspect-video w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n </LinkWrapper>\n )}\n <div className=\"flex flex-col gap-2\">\n {tags && tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {tags.map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n <h2 className=\"text-lg font-semibold leading-snug tracking-tight\">\n <LinkWrapper className=\"hover:text-primary transition-colors\">\n {title}\n </LinkWrapper>\n </h2>\n {description && (\n <p className=\"line-clamp-2 text-sm text-muted-foreground\">{description}</p>\n )}\n <time dateTime={date} className=\"text-xs text-muted-foreground\">\n {formatDate(date)}\n </time>\n </div>\n </article>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { PostCard, type PostCardProps } from './PostCard';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PostListProps {\n posts: PostCardProps[];\n renderLink?: AppShellRenderLink;\n emptyMessage?: string;\n}\n\nexport function PostList({ posts, renderLink, emptyMessage = 'No posts published yet.' }: PostListProps) {\n if (posts.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground italic\">{emptyMessage}</p>\n );\n }\n\n return (\n <div className=\"grid gap-8 sm:grid-cols-2\">\n {posts.map((post) => (\n <PostCard key={post.slug} {...post} renderLink={renderLink} />\n ))}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { ArrowRight } from 'lucide-react';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport type ChangelogReleaseType = 'release' | 'fix' | 'enhancement';\n\nexport interface ChangelogHighlight {\n title: string;\n description: string;\n}\n\nexport interface ChangelogCardProps {\n title: string;\n summary: string;\n date: string;\n slug: string;\n version?: string;\n releaseType?: ChangelogReleaseType;\n highlights?: ChangelogHighlight[];\n hrefPrefix?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst releaseTypeLabel: Record<ChangelogReleaseType, string> = {\n release: 'Major Release',\n fix: 'Fix',\n enhancement: 'Enhancement',\n};\n\nconst releaseTypeVariant: Record<ChangelogReleaseType, 'default' | 'secondary' | 'outline'> = {\n release: 'default',\n fix: 'outline',\n enhancement: 'secondary',\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n}\n\nexport function ChangelogCard({\n title,\n summary,\n date,\n slug,\n version,\n releaseType,\n highlights,\n hrefPrefix = '/changelog',\n renderLink,\n}: ChangelogCardProps) {\n const href = `${hrefPrefix}/${slug}`;\n\n const LinkWrapper = ({\n children,\n className,\n }: {\n children: React.ReactNode;\n className?: string;\n }) =>\n renderLink ? (\n renderLink({ href, children, className })\n ) : (\n <a href={href} className={className}>\n {children}\n </a>\n );\n\n const hasHighlights = highlights && highlights.length > 0;\n\n return (\n <article\n className={cn(\n 'flex flex-col gap-5 rounded-2xl border border-border bg-card p-6 sm:p-8',\n !hasHighlights && 'border-b border-border/60 rounded-none bg-transparent p-0 pb-8 last:pb-0 last:border-0',\n )}\n >\n {/* Header row */}\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <time className=\"text-sm text-muted-foreground\" dateTime={date}>\n {formatDate(date)}\n </time>\n {version && (\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">\n {version}\n </Badge>\n )}\n {releaseType && (\n <Badge variant={releaseTypeVariant[releaseType]} className=\"text-xs\">\n {releaseTypeLabel[releaseType]}\n </Badge>\n )}\n </div>\n <LinkWrapper className=\"inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline\">\n Read update\n <ArrowRight className=\"size-3.5\" />\n </LinkWrapper>\n </div>\n\n {/* Title + summary */}\n <div>\n <h2 className=\"text-lg font-semibold leading-snug tracking-tight\">\n <LinkWrapper className=\"transition-colors hover:text-primary\">{title}</LinkWrapper>\n </h2>\n <p className=\"mt-2 text-sm leading-relaxed text-muted-foreground\">{summary}</p>\n </div>\n\n {/* Highlights grid */}\n {hasHighlights && (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {highlights.map((h) => (\n <div\n key={h.title}\n className=\"rounded-xl border border-border/70 bg-background p-4\"\n >\n <p className=\"text-sm font-semibold leading-snug\">{h.title}</p>\n <p className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">{h.description}</p>\n </div>\n ))}\n </div>\n )}\n </article>\n );\n}\n","'use client';\n\nimport type { AppShellRenderLink } from '../app/AppShell';\nimport { ChangelogCard, type ChangelogCardProps } from './ChangelogCard';\n\nexport interface ChangelogListProps {\n entries: ChangelogCardProps[];\n renderLink?: AppShellRenderLink;\n emptyMessage?: string;\n hrefPrefix?: string;\n}\n\nexport function ChangelogList({\n entries,\n renderLink,\n emptyMessage = 'No changelog entries yet.',\n hrefPrefix,\n}: ChangelogListProps) {\n if (entries.length === 0) {\n return <p className=\"text-sm italic text-muted-foreground\">{emptyMessage}</p>;\n }\n\n return (\n <div className=\"flex flex-col gap-8\">\n {entries.map((entry) => (\n <ChangelogCard\n key={entry.slug}\n {...entry}\n hrefPrefix={hrefPrefix}\n renderLink={renderLink}\n />\n ))}\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport function useMounted() {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return mounted;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface ConfirmOptions {\n title?: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n}\n\nexport interface UseConfirmReturn {\n confirm: (options?: ConfirmOptions) => Promise<boolean>;\n isOpen: boolean;\n options: ConfirmOptions;\n handleConfirm: () => void;\n handleCancel: () => void;\n}\n\n/**\n * Headless confirmation hook. Returns state and handlers for building a confirm dialog.\n *\n * @example\n * const { confirm, isOpen, options, handleConfirm, handleCancel } = useConfirm();\n *\n * // Trigger confirmation\n * const ok = await confirm({ title: 'Delete item?', description: 'This cannot be undone.' });\n *\n * // Wire up your dialog\n * <AlertDialog open={isOpen}>\n * <AlertDialogContent>\n * <AlertDialogTitle>{options.title}</AlertDialogTitle>\n * <AlertDialogFooter>\n * <AlertDialogCancel onClick={handleCancel} />\n * <AlertDialogAction onClick={handleConfirm} />\n * </AlertDialogFooter>\n * </AlertDialogContent>\n * </AlertDialog>\n */\nexport function useConfirm(): UseConfirmReturn {\n const [isOpen, setIsOpen] = React.useState(false);\n const [options, setOptions] = React.useState<ConfirmOptions>({});\n const resolveRef = React.useRef<((value: boolean) => void) | null>(null);\n\n const confirm = React.useCallback((opts: ConfirmOptions = {}): Promise<boolean> => {\n setOptions(opts);\n setIsOpen(true);\n return new Promise<boolean>((resolve) => {\n resolveRef.current = resolve;\n });\n }, []);\n\n const handleConfirm = React.useCallback(() => {\n resolveRef.current?.(true);\n setIsOpen(false);\n }, []);\n\n const handleCancel = React.useCallback(() => {\n resolveRef.current?.(false);\n setIsOpen(false);\n }, []);\n\n return { confirm, isOpen, options, handleConfirm, handleCancel };\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface UseControlledOpenReturn {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\n/**\n * Simple open/close state hook for modals, drawers, dropdowns, and any toggleable UI.\n *\n * @example\n * const { isOpen, open, close } = useControlledOpen();\n * return (\n * <>\n * <Button onClick={open}>Open</Button>\n * <Dialog open={isOpen} onOpenChange={setIsOpen}>...</Dialog>\n * </>\n * );\n */\nexport function useControlledOpen(defaultOpen = false): UseControlledOpenReturn {\n const [isOpen, setIsOpen] = React.useState(defaultOpen);\n\n const open = React.useCallback(() => setIsOpen(true), []);\n const close = React.useCallback(() => setIsOpen(false), []);\n const toggle = React.useCallback(() => setIsOpen((prev) => !prev), []);\n\n return { isOpen, open, close, toggle, setIsOpen };\n}\n","'use client';\n\nimport * as React from 'react';\n\n/**\n * Returns true when the page has scrolled past a given Y threshold in pixels.\n * Useful for showing/hiding sticky headers, back-to-top buttons, etc.\n *\n * @example\n * const scrolledPast = useScrolledPast(100);\n * return <header className={scrolledPast ? 'shadow-md' : ''}>...</header>;\n */\nexport function useScrolledPast(threshold: number): boolean {\n const [scrolledPast, setScrolledPast] = React.useState(false);\n\n React.useEffect(() => {\n const handleScroll = () => {\n setScrolledPast(window.scrollY > threshold);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, [threshold]);\n\n return scrolledPast;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useCopyToClipboard(): [boolean, (text: string) => void] {\n const [copied, setCopied] = React.useState(false);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const copy = React.useCallback((text: string) => {\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setCopied(false), 2000);\n });\n }, []);\n\n React.useEffect(() => () => clearTimeout(timeoutRef.current), []);\n\n return [copied, copy];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debounced, setDebounced] = React.useState(value);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debounced;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useIntersectionObserver(\n options?: IntersectionObserverInit,\n): [React.RefObject<Element | null>, boolean] {\n const ref = React.useRef<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(([entry]) => {\n setIsIntersecting(entry.isIntersecting);\n }, options);\n\n observer.observe(el);\n return () => observer.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return [ref, isIntersecting];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {\n const [storedValue, setStoredValue] = React.useState<T>(() => {\n if (typeof window === 'undefined') return initialValue;\n try {\n const item = window.localStorage.getItem(key);\n return item ? (JSON.parse(item) as T) : initialValue;\n } catch {\n return initialValue;\n }\n });\n\n const setValue = React.useCallback(\n (value: T) => {\n try {\n setStoredValue(value);\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n } catch {\n // Silently ignore — private browsing may block localStorage writes\n }\n },\n [key],\n );\n\n return [storedValue, setValue];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = React.useState(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mql = window.matchMedia(query);\n setMatches(mql.matches);\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches);\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, [query]);\n\n return matches;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface UsePaginationReturn {\n page: number;\n pageSize: number;\n totalPages: number;\n offset: number;\n hasPrev: boolean;\n hasNext: boolean;\n goTo: (page: number) => void;\n next: () => void;\n prev: () => void;\n}\n\nexport function usePagination(total: number, pageSize: number): UsePaginationReturn {\n const [page, setPage] = React.useState(1);\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n const offset = (page - 1) * pageSize;\n\n const goTo = React.useCallback(\n (p: number) => setPage(Math.min(Math.max(1, p), totalPages)),\n [totalPages],\n );\n\n const next = React.useCallback(() => goTo(page + 1), [page, goTo]);\n const prev = React.useCallback(() => goTo(page - 1), [page, goTo]);\n\n return { page, pageSize, totalPages, offset, hasPrev: page > 1, hasNext: page < totalPages, goTo, next, prev };\n}\n"]}
1
+ {"version":3,"sources":["../src/context/OlwibaUIContext.tsx","../src/primitives/Button.tsx","../src/primitives/Card.tsx","../src/primitives/Badge.tsx","../src/primitives/Input.tsx","../src/primitives/Textarea.tsx","../src/primitives/Checkbox.tsx","../src/primitives/Switch.tsx","../src/layout/Grid.tsx","../src/layout/Stack.tsx","../src/layout/Section.tsx","../src/layout/AppContent.tsx","../src/layout/AppGrid.tsx","../src/layout/PublicPageFrame.tsx","../src/app/AppShell.tsx","../src/app/AuthSection.tsx","../src/app/EmptyState.tsx","../src/app/ErrorPage.tsx","../src/app/UpgradePrompt.tsx","../src/motion/FadeIn.tsx","../src/marketing/SectionTitle.tsx","../src/marketing/section-spacing.ts","../src/components/PhoneFrame.tsx","../src/marketing/HeroSection.tsx","../src/components/FeatureCard.tsx","../src/motion/StaggerChildren.tsx","../src/marketing/FeaturesSection.tsx","../src/marketing/GroupedFeaturesSection.tsx","../src/marketing/StepsSection.tsx","../src/marketing/TechStackSection.tsx","../src/marketing/CarouselSection.tsx","../src/marketing/FeatureMarqueeSection.tsx","../src/marketing/CtaSection.tsx","../src/marketing/CtaCardSection.tsx","../src/components/PricingCard.tsx","../src/motion/CountdownTimer.tsx","../src/marketing/PricingSection.tsx","../src/components/TestimonialCard.tsx","../src/marketing/TestimonialsSection.tsx","../src/marketing/TeamSection.tsx","../src/marketing/FaqSection.tsx","../src/motion/CountUp.tsx","../src/marketing/StatsSection.tsx","../src/marketing/NewsletterSection.tsx","../src/marketing/ContactSection.tsx","../src/marketing/ComparisonSection.tsx","../src/marketing/QualificationSection.tsx","../src/marketing/Navbar.tsx","../src/marketing/Footer.tsx","../src/marketing/LogoStrip.tsx","../src/overlays/Underlay.tsx","../src/overlays/Overlay.tsx","../src/motion/AnimatedPill.tsx","../src/motion/PageTransition.tsx","../src/components/Spotlight.tsx","../src/components/Dock.tsx","../src/components/ContextMenu.tsx","../src/components/ConfirmDialog.tsx","../src/components/AppScreen.tsx","../src/components/GlassCard.tsx","../src/components/StatCard.tsx","../src/components/ImageCard.tsx","../src/components/FlowConnector.tsx","../src/components/FlowBracket.tsx","../src/components/Spinner.tsx","../src/components/PageHeader.tsx","../src/components/Suspensed.tsx","../src/components/ThemeSwitchMinimal.tsx","../src/components/ModeSwitchMinimal.tsx","../src/components/BrandColorSwitchMinimal.tsx","../src/components/ThemeColorUpdater.tsx","../src/components/VersionBanner.tsx","../src/components/DevBanner.tsx","../src/components/RegisterHotkeys.tsx","../src/components/RootErrorFallback.tsx","../src/blog/PostCard.tsx","../src/blog/PostList.tsx","../src/blog/ChangelogCard.tsx","../src/blog/ChangelogList.tsx","../src/hooks/use-mounted.ts","../src/hooks/use-confirm.ts","../src/hooks/use-controlled-open.ts","../src/hooks/use-scrolled-past.ts","../src/hooks/use-copy-to-clipboard.ts","../src/hooks/use-debounce.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-local-storage.ts","../src/hooks/use-media-query.ts","../src/hooks/use-pagination.ts"],"names":["React","React2","jsx","CNButton","React3","CNCard","CNBadge","React4","CNInput","React5","CNTextarea","React6","CNCheckbox","React7","CNSwitch","gapMap","spanMap","spacingMap","maxWidthMap","jsxs","defaultRenderLink","cn","Badge","CardHeader","CardTitle","CardDescription","CardContent","Fragment","form","Button","React8","Avatar","AvatarImage","AvatarFallback","ArrowRight","translateMap","React9","useUIVariant","React10","Sparkles","React11","Separator","React12","React13","badge","React14","React15","Input","defaults","React16","Mail","Label","Textarea","Check","X","React17","speedDuration","React18","useRef","useEffect","React19","React20","React21","RadixContextMenu","blurClass","React22","ChevronRight","ChevronLeft","React23","Spinner","React24","React25","React26","React27","React28","formatDate","useState","React30","React31","React32","React33","React34","React35","React36","React37"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useIsMobile, UIVariantProvider, type UIVariant } from '@olwiba/cn';\n\nexport type UIMode = 'default' | 'playful' | 'smooth';\n\ninterface OlwibaUIContextValue {\n isMobile: boolean;\n mode: UIMode;\n setMode: (mode: UIMode) => void;\n}\n\nconst OlwibaUIContext = React.createContext<OlwibaUIContextValue>({\n isMobile: false,\n mode: 'default',\n setMode: () => {},\n});\n\nexport interface OlwibaUIProviderProps {\n children: React.ReactNode;\n /**\n * Override the mobile detection. If omitted, uses useIsMobile() from @olwiba/cn\n * which detects based on a 768px viewport breakpoint.\n */\n isMobile?: boolean;\n /**\n * Global component mode. Primitives imported from @olwiba/ui will automatically\n * apply this mode unless overridden at the component level.\n *\n * - `'default'` — standard square shadcn/Radix appearance\n * - `'playful'` — slight rotation + offset drop shadow backdrop\n * - `'smooth'` — softer, larger border-radius across all components\n */\n mode?: UIMode;\n}\n\nexport function OlwibaUIProvider({ children, isMobile: isMobileProp, mode: initialMode = 'default' }: OlwibaUIProviderProps) {\n const detectedMobile = useIsMobile();\n const isMobile = isMobileProp ?? detectedMobile;\n const [mode, setMode] = React.useState<UIMode>(initialMode);\n\n const variant = mode !== 'default' ? (mode as UIVariant) : undefined;\n\n return (\n <OlwibaUIContext.Provider value={{ isMobile, mode, setMode }}>\n <UIVariantProvider mode={variant}>\n {children}\n </UIVariantProvider>\n </OlwibaUIContext.Provider>\n );\n}\n\nexport function useOlwibaUI() {\n return React.useContext(OlwibaUIContext);\n}\n\n/** Returns just the current UI mode from context. */\nexport function useUIMode(): UIMode {\n return React.useContext(OlwibaUIContext).mode;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Button as CNButton, type ButtonProps as CNButtonProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type ButtonProps = CNButtonProps;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNButton mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nButton.displayName = 'Button';\n","'use client';\n\nimport * as React from 'react';\nimport {\n Card as CNCard, type CardProps as CNCardProps,\n CardHeader, CardTitle, CardDescription, CardContent, CardFooter,\n} from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type CardProps = CNCardProps;\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNCard mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nCard.displayName = 'Card';\n\n// Sub-components are pass-throughs — no mode logic needed.\nexport { CardHeader, CardTitle, CardDescription, CardContent, CardFooter };\n","'use client';\n\nimport * as React from 'react';\nimport { Badge as CNBadge, type BadgeProps as CNBadgeProps } from '@olwiba/cn';\n\n// Badge no longer supports mode — variant/size/disabled only.\nexport type BadgeProps = CNBadgeProps;\n\nexport function Badge(props: BadgeProps) {\n return <CNBadge {...props} />;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Input as CNInput, type InputProps as CNInputProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type InputProps = CNInputProps;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNInput mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nInput.displayName = 'Input';\n","'use client';\n\nimport * as React from 'react';\nimport { Textarea as CNTextarea, type TextareaProps as CNTextareaProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type TextareaProps = CNTextareaProps;\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNTextarea mode={resolvedMode} {...props} ref={ref} />;\n }\n);\nTextarea.displayName = 'Textarea';\n","'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CNCheckbox, type CheckboxProps as CNCheckboxProps } from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\nexport type CheckboxProps = CNCheckboxProps;\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CNCheckbox>,\n CheckboxProps\n>(({ mode, ...props }, ref) => {\n const ctxMode = useUIMode();\n const resolvedMode = mode ?? (ctxMode !== 'default' ? (ctxMode as \"playful\" | \"smooth\") : undefined);\n return <CNCheckbox mode={resolvedMode} {...props} ref={ref} />;\n});\nCheckbox.displayName = 'Checkbox';\n","'use client';\n\nimport * as React from 'react';\nimport { Switch as CNSwitch, type SwitchProps as CNSwitchProps } from '@olwiba/cn';\n\nexport type SwitchProps = CNSwitchProps & {\n mode?: 'default' | 'playful' | 'smooth';\n};\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof CNSwitch>,\n SwitchProps\n>(({ mode: _mode, ...props }, ref) => {\n return <CNSwitch {...props} ref={ref} />;\n});\nSwitch.displayName = 'Switch';\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst colsMap: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 12: 'grid-cols-12',\n}\n\nconst gapMap = {\n none: 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n}\n\nconst spanMap: Record<number, string> = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n}\n\nconst rowSpanMap: Record<number, string> = {\n 1: 'row-span-1',\n 2: 'row-span-2',\n 3: 'row-span-3',\n 4: 'row-span-4',\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 12\n gap?: keyof typeof gapMap\n}\n\nexport function Grid({ columns = 3, gap = 'md', className, children, ...props }: GridProps) {\n return (\n <div className={cn('grid', colsMap[columns], gapMap[gap], className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport interface GridItemProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n rowSpan?: 1 | 2 | 3 | 4\n}\n\nexport function GridItem({ span = 1, rowSpan, className, children, ...props }: GridItemProps) {\n return (\n <div\n className={cn(spanMap[span], rowSpan != null && rowSpanMap[rowSpan], className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst gapMap = {\n none: 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n}\n\nconst alignMap = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n}\n\nconst justifyMap = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n}\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'col' | 'row'\n gap?: keyof typeof gapMap\n align?: keyof typeof alignMap\n justify?: keyof typeof justifyMap\n wrap?: boolean\n}\n\nexport function Stack({\n direction = 'col',\n gap = 'md',\n align = 'stretch',\n justify = 'start',\n wrap = false,\n className,\n children,\n ...props\n}: StackProps) {\n return (\n <div\n className={cn(\n 'flex',\n direction === 'col' ? 'flex-col' : 'flex-row',\n gapMap[gap],\n alignMap[align],\n justifyMap[justify],\n wrap && 'flex-wrap',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst paddingMap = {\n none: '',\n sm: 'py-4',\n md: 'py-8',\n lg: 'py-16',\n}\n\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\n title?: string\n description?: string\n padding?: keyof typeof paddingMap\n}\n\nexport function Section({ title, description, padding = 'md', className, children, ...props }: SectionProps) {\n return (\n <section className={cn('w-full', paddingMap[padding], className)} {...props}>\n {(title || description) && (\n <div className=\"mb-6\">\n {title && <h2 className=\"text-xl font-semibold text-foreground\">{title}</h2>}\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </div>\n )}\n {children}\n </section>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst spacingMap = {\n sm: 'space-y-4',\n md: 'space-y-6',\n lg: 'space-y-8',\n}\n\nconst maxWidthMap = {\n none: '',\n 'screen-lg': 'mx-auto max-w-screen-lg',\n 'screen-xl': 'mx-auto max-w-screen-xl',\n 'screen-2xl': 'mx-auto max-w-screen-2xl',\n}\n\nexport interface AppContentProps extends React.HTMLAttributes<HTMLDivElement> {\n spacing?: keyof typeof spacingMap\n maxWidth?: keyof typeof maxWidthMap\n}\n\nexport function AppContent({\n spacing = 'md',\n maxWidth = 'none',\n className,\n children,\n ...props\n}: AppContentProps) {\n return (\n <div className={cn('p-6', maxWidthMap[maxWidth], spacingMap[spacing], className)} {...props}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst columnsMap = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 xl:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 xl:grid-cols-4',\n}\n\nconst gapMap = {\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n}\n\nconst spanMap = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'xl:col-span-3',\n 4: 'xl:col-span-4',\n full: 'col-span-full',\n}\n\nexport interface AppGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: keyof typeof columnsMap\n gap?: keyof typeof gapMap\n}\n\nexport function AppGrid({ columns = 3, gap = 'md', className, children, ...props }: AppGridProps) {\n return (\n <div className={cn('grid', columnsMap[columns], gapMap[gap], className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport interface AppGridCellProps extends React.HTMLAttributes<HTMLDivElement> {\n span?: keyof typeof spanMap\n}\n\nexport function AppGridCell({ span = 1, className, children, ...props }: AppGridCellProps) {\n return (\n <div className={cn(spanMap[span], className)} {...props}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { cn } from '../lib/utils'\n\nconst surfaceMap = {\n default: 'bg-background',\n muted: 'bg-muted/50',\n}\n\nconst spacingMap = {\n sm: 'gap-4 p-4',\n md: 'gap-5 p-4 sm:gap-6 sm:p-6',\n lg: 'gap-6 p-4 sm:gap-8 sm:p-6',\n}\n\nconst maxWidthMap = {\n none: '',\n 'screen-xl': 'mx-auto max-w-screen-xl',\n 'screen-2xl': 'mx-auto max-w-screen-2xl',\n}\n\nexport interface PublicPageFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n surface?: keyof typeof surfaceMap\n spacing?: keyof typeof spacingMap\n maxWidth?: keyof typeof maxWidthMap\n}\n\nexport function PublicPageFrame({\n surface = 'muted',\n spacing = 'md',\n maxWidth = 'none',\n className,\n children,\n ...props\n}: PublicPageFrameProps) {\n return (\n <div className={cn('min-h-screen', surfaceMap[surface], className)} {...props}>\n <div className={cn('flex flex-col', spacingMap[spacing], maxWidthMap[maxWidth])}>\n {children}\n </div>\n </div>\n )\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n BellIcon,\n CreditCardIcon,\n LogOutIcon,\n MoreVerticalIcon,\n PlusCircleIcon,\n} from 'lucide-react';\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Separator,\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarTrigger,\n useSidebar,\n} from '@olwiba/cn';\nimport { useUIMode } from '../context/OlwibaUIContext';\n\n// ─── Public types ─────────────────────────────────────────────────────────────\n\nexport interface AppNavItem {\n icon: LucideIcon;\n label: string;\n href: string;\n isActive?: boolean;\n}\n\nexport interface AppShellAction {\n icon?: LucideIcon;\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface AppShellUser {\n email: string;\n name?: string;\n avatar?: string;\n /** Displayed as a sub-label (e.g. plan tier). */\n plan?: string;\n onSignOut?: () => void;\n onBilling?: () => void;\n onNotifications?: () => void;\n}\n\nexport interface AppShellBrand {\n name: ReactNode;\n logo?: ReactNode;\n href?: string;\n}\n\n/**\n * Render a navigation link. Override to integrate your router's Link component.\n * @example renderLink={({ href, children }) => <Link to={href}>{children}</Link>}\n */\nexport type AppShellRenderLink = (props: {\n href: string;\n children: ReactNode;\n className?: string;\n}) => ReactNode;\n\nexport interface AppShellProps {\n brand?: AppShellBrand;\n navItems?: AppNavItem[];\n /** Primary CTA rendered above nav (e.g. \"New project\", \"Quick create\") */\n action?: AppShellAction;\n user?: AppShellUser;\n /** Text shown in the top header bar */\n pageTitle?: string;\n /** Slot rendered at the start of the top header bar, after the sidebar trigger. */\n headerStart?: ReactNode;\n /** Slot rendered at the end of the top header bar. */\n headerEnd?: ReactNode;\n /** Override link rendering for SPA navigation. Defaults to a native <a>. */\n renderLink?: AppShellRenderLink;\n children?: ReactNode;\n /**\n * Sidebar collapse behaviour.\n * - `\"icon\"` — collapses to a narrow icon rail (default, recommended for desktop)\n * - `\"offcanvas\"` — slides off-screen as a drawer overlay\n * - `\"none\"` — always fully visible\n */\n collapsible?: 'icon' | 'offcanvas' | 'none';\n /**\n * Layout scope.\n * - `\"viewport\"` (default) — fills the full browser viewport; use for top-level app shells.\n * - `\"contained\"` — fills its parent container; use in docs sandboxes, modals, or embedded previews.\n */\n sidebarPosition?: 'viewport' | 'contained';\n /** Which side the sidebar sits on. @default \"left\" */\n side?: 'left' | 'right';\n}\n\n// ─── Internal sub-components ──────────────────────────────────────────────────\n\nfunction NavUser({ user }: { user: AppShellUser }) {\n const { isMobile } = useSidebar();\n const uiMode = useUIMode();\n const avatarMode = uiMode !== 'default' ? (uiMode as 'playful' | 'smooth') : undefined;\n const initials = (user.name ?? user.email).slice(0, 2).toUpperCase();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar mode={avatarMode} size=\"sm\" className=\"grayscale\">\n {user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n <AvatarFallback>{initials}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name ?? user.email}</span>\n <span className=\"truncate text-xs text-muted-foreground\">\n {user.plan ? `${user.plan} plan` : user.email}\n </span>\n </div>\n <MoreVerticalIcon className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar mode={avatarMode} size=\"sm\">\n {user.avatar && <AvatarImage src={user.avatar} alt={user.name} />}\n <AvatarFallback>{initials}</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name ?? user.email}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n {(user.onBilling || user.onNotifications) && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {user.onBilling && (\n <DropdownMenuItem onClick={user.onBilling}>\n <CreditCardIcon />\n Billing\n </DropdownMenuItem>\n )}\n {user.onNotifications && (\n <DropdownMenuItem onClick={user.onNotifications}>\n <BellIcon />\n Notifications\n </DropdownMenuItem>\n )}\n </DropdownMenuGroup>\n </>\n )}\n {user.onSignOut && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={user.onSignOut}>\n <LogOutIcon />\n Sign out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n\nfunction ShellSidebar({\n brand,\n navItems,\n action,\n user,\n renderLink,\n collapsible,\n side,\n sidebarPosition,\n}: {\n brand: AppShellBrand;\n navItems: AppNavItem[];\n action?: AppShellAction;\n user: AppShellUser;\n renderLink: AppShellRenderLink;\n collapsible: 'icon' | 'offcanvas' | 'none';\n side: 'left' | 'right';\n sidebarPosition: 'viewport' | 'contained';\n}) {\n const fallbackLogo = typeof brand.name === 'string' ? brand.name.slice(0, 1).toUpperCase() : null;\n\n return (\n <Sidebar side={side} collapsible={collapsible} sidebarPosition={sidebarPosition}>\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton asChild tooltip={typeof brand.name === 'string' ? brand.name : undefined} className=\"data-[slot=sidebar-menu-button]:!p-1.5\">\n {renderLink({\n href: brand.href ?? '#',\n children: (\n <>\n {brand.logo ? (\n <span className=\"flex size-8 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n ) : (\n <span className=\"flex size-4 shrink-0 items-center justify-center text-sm font-semibold\">\n {fallbackLogo}\n </span>\n )}\n <span className=\"min-w-0 truncate text-base font-semibold group-data-[collapsible=icon]:hidden\">\n {brand.name}\n </span>\n </>\n ),\n })}\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n\n <SidebarContent>\n <SidebarGroup>\n <SidebarGroupContent className=\"flex flex-col gap-2\">\n {action && (\n <SidebarMenu>\n <SidebarMenuItem>\n {action.href ? (\n <SidebarMenuButton\n asChild\n tooltip={action.label}\n className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n >\n {renderLink({\n href: action.href,\n children: (\n <>\n {action.icon && <action.icon />}\n <span>{action.label}</span>\n </>\n ),\n })}\n </SidebarMenuButton>\n ) : (\n <SidebarMenuButton\n tooltip={action.label}\n onClick={action.onClick}\n className=\"min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground\"\n >\n {action.icon && <action.icon />}\n <span>{action.label}</span>\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n </SidebarMenu>\n )}\n\n <SidebarMenu>\n {navItems.map((item) => (\n <SidebarMenuItem key={item.label}>\n <SidebarMenuButton asChild tooltip={item.label} isActive={item.isActive}>\n {renderLink({\n href: item.href,\n children: (\n <>\n <item.icon />\n <span>{item.label}</span>\n </>\n ),\n })}\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n </SidebarContent>\n\n <SidebarFooter>\n <NavUser user={user} />\n </SidebarFooter>\n </Sidebar>\n );\n}\n\nfunction ShellHeader({\n pageTitle,\n headerStart,\n headerEnd,\n}: {\n pageTitle: string;\n headerStart?: ReactNode;\n headerEnd?: ReactNode;\n}) {\n return (\n <header className=\"flex h-12 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12\">\n <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n <SidebarTrigger className=\"-ml-1\" />\n {headerStart && (\n <div className=\"flex items-center gap-1\">\n {headerStart}\n </div>\n )}\n <Separator orientation=\"vertical\" className=\"mx-2 data-[orientation=vertical]:h-4\" />\n <h1 className=\"text-base font-medium\">{pageTitle}</h1>\n {headerEnd && (\n <div className=\"ml-auto flex items-center gap-1\">\n {headerEnd}\n </div>\n )}\n </div>\n </header>\n );\n}\n\n// ─── Default placeholder values (keeps the shell renderable without required props) ─\n\nconst defaultBrand: AppShellBrand = {\n name: 'App',\n href: '#',\n};\n\nconst defaultUser: AppShellUser = {\n name: 'User',\n email: 'user@example.com',\n};\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\n// ─── Main export ──────────────────────────────────────────────────────────────\n\nexport function AppShell({\n brand = defaultBrand,\n navItems = [],\n action,\n user = defaultUser,\n pageTitle = 'Dashboard',\n headerStart,\n headerEnd,\n renderLink = defaultRenderLink,\n collapsible = 'icon',\n sidebarPosition = 'viewport',\n side = 'left',\n children,\n}: AppShellProps = {}) {\n const isContained = sidebarPosition === 'contained';\n\n const inner = (\n <SidebarProvider\n layout={isContained ? 'embedded' : 'viewport'}\n className={isContained ? 'overflow-hidden' : 'h-svh overflow-hidden'}\n >\n <ShellSidebar\n brand={brand}\n navItems={navItems}\n action={action}\n user={user}\n renderLink={renderLink}\n collapsible={collapsible}\n side={side}\n sidebarPosition={sidebarPosition}\n />\n <SidebarInset className={isContained ? undefined : 'overflow-y-auto'}>\n <ShellHeader pageTitle={pageTitle} headerStart={headerStart} headerEnd={headerEnd} />\n {children}\n </SidebarInset>\n </SidebarProvider>\n );\n\n if (isContained) {\n return (\n <div className=\"relative flex h-full min-h-0 w-full max-w-full flex-col overflow-hidden\">\n {inner}\n </div>\n );\n }\n\n return inner;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Building2, ShieldCheck, Sparkles } from 'lucide-react';\nimport { Badge, CardContent, CardDescription, CardHeader, CardTitle, Label, cn } from '@olwiba/cn';\nimport { Button } from '../primitives/Button';\nimport { Card } from '../primitives/Card';\nimport { Input } from '../primitives/Input';\nimport type { AppShellRenderLink } from './AppShell';\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\n// ─── Centered layout ──────────────────────────────────────────────────────────\n\nfunction CenteredAuth({ children, brand, className }: { children: React.ReactNode; brand?: React.ReactNode; className?: string }) {\n return (\n <section className={cn('flex min-h-screen flex-col justify-center bg-background py-12 px-4 sm:px-6 lg:px-8', className)}>\n {brand && (\n <div className=\"mx-auto w-full max-w-md text-center mb-8\">\n {brand}\n </div>\n )}\n <div className=\"mx-auto w-full max-w-md\">\n {children}\n </div>\n </section>\n );\n}\n\n// ─── Split layout ─────────────────────────────────────────────────────────────\n\nfunction SplitAuth({ children, panel }: { children: React.ReactNode; panel?: React.ReactNode }) {\n const defaultPanel = (\n <div className=\"flex flex-col gap-6\">\n <Badge variant=\"secondary\" className=\"w-fit\">Welcome</Badge>\n <div className=\"space-y-3\">\n <h2 className=\"text-3xl font-semibold tracking-tight\">Build better, ship faster</h2>\n <p className=\"max-w-md text-muted-foreground\">\n Sign in to continue building with ready-made components and layouts.\n </p>\n </div>\n <div className=\"space-y-3 text-sm text-muted-foreground\">\n <div className=\"flex items-center gap-2\"><ShieldCheck className=\"size-4\" /> Type-safe components</div>\n <div className=\"flex items-center gap-2\"><Sparkles className=\"size-4\" /> Polished defaults</div>\n <div className=\"flex items-center gap-2\"><Building2 className=\"size-4\" /> Plug-and-play shells</div>\n </div>\n </div>\n );\n\n return (\n <section className=\"grid h-full min-h-[560px] overflow-hidden rounded-2xl border bg-card lg:grid-cols-2\">\n <div className=\"relative hidden p-8 pb-16 lg:flex lg:flex-col lg:justify-center\">\n <div className=\"absolute inset-0 bg-gradient-to-br from-primary/20 via-transparent to-muted\" />\n <div className=\"relative z-10\">{panel ?? defaultPanel}</div>\n </div>\n <div className=\"flex items-center justify-center p-6 lg:p-10\">\n {children}\n </div>\n </section>\n );\n}\n\n// ─── Shared form slot ─────────────────────────────────────────────────────────\n\nexport interface AuthFormProps {\n /** Controls form title, fields, and footer text. @default 'signin' */\n mode?: 'signin' | 'signup';\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n onSso?: () => void;\n /** (signin) Link to the sign-up page */\n signUpHref?: string;\n /** (signup) Link back to the sign-in page */\n signInHref?: string;\n forgotPasswordHref?: string;\n /** Brand node — in centered layout renders above the card; in split layout renders inside the card */\n brand?: React.ReactNode;\n /** Error message displayed below the form fields */\n error?: string;\n /** Disables the submit button and shows a loading label */\n loading?: boolean;\n /** Render prop for links — use to inject framework-native link components (e.g. TanStack Router Link) */\n renderLink?: AppShellRenderLink;\n /** Optional content rendered below the form — use for social auth buttons or other additions */\n footer?: React.ReactNode;\n /** Pre-fill the email field (e.g. from demo credential links). Triggers a brief border highlight animation. */\n defaultEmail?: string;\n /** Pre-fill the password field (e.g. from demo credential links). Triggers a brief border highlight animation. */\n defaultPassword?: string;\n}\n\nfunction DefaultForm({\n mode = 'signin',\n onSubmit,\n onSso,\n signUpHref = '#',\n signInHref = '#',\n forgotPasswordHref = '#',\n brand,\n error,\n loading,\n renderLink = defaultRenderLink,\n footer,\n defaultEmail,\n defaultPassword,\n}: AuthFormProps) {\n const isSignUp = mode === 'signup';\n const hasPrefill = !!(defaultEmail || defaultPassword);\n const prefillStyle = (active: boolean): React.CSSProperties | undefined =>\n active ? { animation: 'auth-prefill 1.6s ease-out 0.35s 1 both' } : undefined;\n\n return (\n <Card className=\"w-full\">\n {hasPrefill && (\n // Theme tokens hold full color values (oklch), so opacity must come from color-mix, not hsl(var()/a)\n <style>{`@keyframes auth-prefill{0%{box-shadow:0 0 0 0 transparent}40%{box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 45%,transparent),0 0 16px 2px color-mix(in oklab,var(--primary) 35%,transparent)}100%{box-shadow:0 0 0 0 transparent}}`}</style>\n )}\n <CardHeader>\n {brand && <div className=\"mb-2\">{brand}</div>}\n <CardTitle>{isSignUp ? 'Create an account' : 'Sign in'}</CardTitle>\n <CardDescription>\n {isSignUp\n ? 'Enter your details to create your account.'\n : 'Enter your email and password to continue.'}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <form onSubmit={onSubmit} className=\"space-y-4\">\n {isSignUp && (\n <div className=\"space-y-2\">\n <Label htmlFor=\"auth-name\">Name</Label>\n <Input id=\"auth-name\" name=\"name\" type=\"text\" placeholder=\"Your name\" autoComplete=\"name\" />\n </div>\n )}\n <div className=\"space-y-2\">\n <Label htmlFor=\"auth-email\">Email address</Label>\n <Input\n id=\"auth-email\"\n name=\"email\"\n type=\"email\"\n placeholder=\"name@company.com\"\n autoComplete=\"email\"\n defaultValue={defaultEmail}\n style={prefillStyle(!!defaultEmail)}\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label htmlFor=\"auth-password\">Password</Label>\n {!isSignUp && forgotPasswordHref && renderLink({\n href: forgotPasswordHref,\n className: 'text-xs text-muted-foreground underline underline-offset-4 hover:text-foreground',\n children: 'Forgot password?',\n })}\n </div>\n <Input\n id=\"auth-password\"\n name=\"password\"\n type=\"password\"\n placeholder=\"••••••••\"\n autoComplete={isSignUp ? 'new-password' : 'current-password'}\n defaultValue={defaultPassword}\n style={prefillStyle(!!defaultPassword)}\n />\n </div>\n {error && (\n <p className=\"text-sm font-medium text-destructive\">{error}</p>\n )}\n <div className=\"flex flex-col gap-2\">\n <Button type=\"submit\" className=\"w-full\" disabled={loading}>\n {loading ? 'Please wait…' : isSignUp ? 'Create account' : 'Sign in'}\n </Button>\n {onSso && (\n <Button type=\"button\" variant=\"outline\" className=\"w-full\" onClick={onSso} disabled={loading}>\n Use SSO\n </Button>\n )}\n </div>\n </form>\n <p className=\"text-center text-xs text-muted-foreground\">\n {isSignUp ? (\n <>\n Already have an account?{' '}\n {renderLink({ href: signInHref, className: 'text-foreground underline underline-offset-4', children: 'Sign in' })}\n </>\n ) : (\n signUpHref && (\n <>\n New here?{' '}\n {renderLink({ href: signUpHref, className: 'text-foreground underline underline-offset-4', children: 'Create an account' })}\n </>\n )\n )}\n </p>\n {footer && <div>{footer}</div>}\n </CardContent>\n </Card>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\nexport interface AuthSectionProps extends AuthFormProps {\n /** Visual layout of the auth screen. @default 'centered' */\n layout?: 'centered' | 'split';\n /** Custom form/card content. Defaults to the built-in form. */\n children?: React.ReactNode;\n /** (split layout only) Custom content for the left decorative panel */\n panel?: React.ReactNode;\n className?: string;\n}\n\nexport function AuthSection({\n layout = 'centered',\n children,\n panel,\n className,\n ...formProps\n}: AuthSectionProps) {\n if (layout === 'split') {\n const form = children ?? <DefaultForm {...formProps} />;\n return (\n <div className={cn('h-full', className)}>\n <SplitAuth panel={panel}>{form}</SplitAuth>\n </div>\n );\n }\n\n // Centered: brand renders above the card, not inside it\n const { brand, ...restFormProps } = formProps;\n const form = children ?? <DefaultForm {...restFormProps} />;\n return (\n <CenteredAuth brand={brand} className={className}>\n {form}\n </CenteredAuth>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: LucideIcon;\n title: string;\n description?: string;\n action?: React.ReactNode;\n}\n\nexport function EmptyState({ icon: Icon, title, description, action, className, ...props }: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center gap-3 py-12 text-center', className)}\n {...props}\n >\n {Icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-2xl border bg-muted\">\n <Icon className=\"size-6 text-muted-foreground\" />\n </div>\n )}\n <div className=\"space-y-1\">\n <h3 className=\"font-semibold\">{title}</h3>\n {description && (\n <p className=\"max-w-xs text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n {action}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { ArrowLeft, ArrowUpRight } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\nimport { Button } from '../primitives/Button';\nimport type { AppShellRenderLink } from './AppShell';\n\nexport interface ErrorPageLink {\n label: string;\n href: string;\n description?: string;\n icon?: ReactNode;\n}\n\nexport interface ErrorPageProps {\n statusCode?: string;\n title?: string;\n description?: string;\n action?: { label: string; href: string };\n backAction?: { label: string; href?: string; onClick?: () => void };\n /** Optional \"maybe you were looking for\" links rendered below the actions. */\n links?: ErrorPageLink[];\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function ErrorPage({\n statusCode = '404',\n title = 'Page not found',\n description = \"The page you're looking for doesn't exist or has been moved. Check the URL or head back home.\",\n action = { label: 'Take me home', href: '/' },\n backAction = { label: 'Go back' },\n links,\n renderLink = defaultRenderLink,\n}: ErrorPageProps) {\n const hasLinks = links && links.length > 0;\n\n return (\n <section className=\"relative overflow-hidden rounded-2xl border bg-card\">\n {/* Dot grid, faded toward the edges */}\n <div\n aria-hidden\n className=\"absolute inset-0 bg-[radial-gradient(hsl(var(--border))_1px,transparent_1px)] [background-size:24px_24px] [mask-image:radial-gradient(ellipse_at_center,black_30%,transparent_75%)]\"\n />\n {/* Soft brand glow behind the numerals */}\n <div\n aria-hidden\n className=\"absolute left-1/2 top-24 h-64 w-[36rem] max-w-full -translate-x-1/2 rounded-full bg-primary/10 blur-3xl\"\n />\n\n <div\n className={cn(\n 'relative mx-auto flex max-w-3xl flex-col items-center px-6 pt-20 text-center sm:pt-24',\n hasLinks ? 'pb-16' : 'pb-24 sm:pb-28',\n )}\n >\n <span className=\"inline-flex items-center gap-2 rounded-full border bg-background/80 px-3 py-1 font-mono text-xs text-muted-foreground backdrop-blur\">\n <span className=\"relative flex size-1.5\">\n <span className=\"absolute inline-flex h-full w-full animate-ping rounded-full bg-primary opacity-60\" />\n <span className=\"relative inline-flex size-1.5 rounded-full bg-primary\" />\n </span>\n HTTP {statusCode}\n </span>\n\n <div\n aria-hidden\n className=\"pointer-events-none -mb-8 mt-2 select-none bg-gradient-to-b from-foreground/15 via-foreground/[0.06] to-transparent bg-clip-text text-[9rem] font-black leading-none tracking-tighter text-transparent sm:-mb-12 sm:text-[13rem]\"\n >\n {statusCode}\n </div>\n\n <h1 className=\"text-balance text-2xl font-semibold tracking-tight sm:text-3xl\">{title}</h1>\n <p className=\"mx-auto mt-3 max-w-md text-pretty text-sm leading-6 text-muted-foreground\">\n {description}\n </p>\n\n <div className=\"mt-8 flex flex-wrap items-center justify-center gap-3\">\n {backAction &&\n (backAction.href ? (\n renderLink({\n href: backAction.href,\n children: (\n <Button variant=\"outline\">\n <ArrowLeft className=\"mr-2 size-4\" />\n {backAction.label}\n </Button>\n ),\n })\n ) : (\n <Button variant=\"outline\" onClick={backAction.onClick}>\n <ArrowLeft className=\"mr-2 size-4\" />\n {backAction.label}\n </Button>\n ))}\n {action &&\n renderLink({\n href: action.href,\n children: <Button>{action.label}</Button>,\n })}\n </div>\n\n {hasLinks && (\n <div className=\"mt-14 w-full\">\n <p className=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\">\n Maybe you were looking for\n </p>\n <div className=\"mt-4 grid gap-3 text-left sm:grid-cols-2 lg:grid-cols-3\">\n {links.map((link) =>\n renderLink({\n href: link.href,\n className:\n 'group flex items-start gap-3 rounded-xl border bg-background/60 p-4 backdrop-blur transition-colors hover:border-primary/40 hover:bg-accent',\n children: (\n <>\n {link.icon && (\n <span className=\"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border bg-muted text-muted-foreground\">\n {link.icon}\n </span>\n )}\n <span className=\"min-w-0 grow\">\n <span className=\"flex items-center gap-1 text-sm font-medium\">\n {link.label}\n <ArrowUpRight className=\"size-3.5 text-muted-foreground transition-transform group-hover:-translate-y-0.5 group-hover:translate-x-0.5 group-hover:text-foreground\" />\n </span>\n {link.description && (\n <span className=\"mt-0.5 block text-xs leading-5 text-muted-foreground\">\n {link.description}\n </span>\n )}\n </span>\n </>\n ),\n }),\n )}\n </div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { X } from 'lucide-react';\nimport {\n Button,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n cn,\n} from '@olwiba/cn';\n\nexport interface UpgradeComparisonRow {\n key?: React.Key;\n label: React.ReactNode;\n currentValue: React.ReactNode;\n upgradedValue: React.ReactNode;\n}\n\nexport interface UpgradePromptProps {\n /** Layout variant. `banner` is an inline strip; `comparison` is a full feature-table block. */\n variant: 'banner' | 'comparison';\n /** Primary heading shown in both variants. */\n title: React.ReactNode;\n /** Supporting copy shown below the title. */\n description: React.ReactNode;\n /** Label for the primary upgrade CTA. Include pricing here if relevant. */\n primaryActionLabel: React.ReactNode;\n /** Called when the primary upgrade CTA is clicked. */\n onPrimaryAction: () => void;\n /** Optional secondary action label, typically for \"maybe later\" or dismiss behavior. */\n secondaryActionLabel?: React.ReactNode;\n /** Called when the optional secondary action is clicked. */\n onSecondaryAction?: () => void;\n /** Small eyebrow label shown above the title in the comparison variant. */\n eyebrow?: React.ReactNode;\n /** Feature comparison rows for the comparison variant. */\n rows?: UpgradeComparisonRow[];\n /** Column header for the current plan. Defaults to \"Current\". */\n currentPlanLabel?: React.ReactNode;\n /** Column header for the upgraded plan. Defaults to \"Upgrade\". */\n upgradedPlanLabel?: React.ReactNode;\n /** Small body text shown below the comparison table, before the action buttons. */\n footer?: React.ReactNode;\n /** Optional close icon action for the comparison variant. */\n onClose?: () => void;\n /** Accessible label for the comparison close icon. Defaults to \"Close\". */\n closeLabel?: string;\n className?: string;\n}\n\nexport function UpgradePrompt({\n variant,\n title,\n description,\n primaryActionLabel,\n onPrimaryAction,\n secondaryActionLabel,\n onSecondaryAction,\n eyebrow,\n rows,\n currentPlanLabel = 'Current',\n upgradedPlanLabel = 'Upgrade',\n footer,\n onClose,\n closeLabel = 'Close',\n className,\n}: UpgradePromptProps) {\n const hasSecondaryAction = Boolean(secondaryActionLabel && onSecondaryAction);\n\n if (variant === 'banner') {\n return (\n <section\n className={cn(\n 'rounded-xl border border-dashed bg-card/40 p-5 sm:p-6',\n className,\n )}\n >\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-xl font-semibold\">{title}</h3>\n <p className=\"mt-2 max-w-xl text-sm leading-6 text-muted-foreground\">\n {description}\n </p>\n </div>\n\n <div className=\"flex flex-wrap gap-2\">\n {hasSecondaryAction ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onSecondaryAction}\n className=\"border\"\n >\n {secondaryActionLabel}\n </Button>\n ) : null}\n <Button type=\"button\" onClick={onPrimaryAction}>\n {primaryActionLabel}\n </Button>\n </div>\n </div>\n </section>\n );\n }\n\n return (\n <section\n className={cn(\n 'w-full max-w-3xl rounded-2xl border bg-card p-6 shadow-sm sm:p-7',\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n {eyebrow ? (\n <div className=\"font-mono text-[11px] uppercase tracking-[0.08em] text-primary\">\n {eyebrow}\n </div>\n ) : null}\n <h3\n className={cn(\n 'text-2xl font-semibold sm:text-[1.75rem]',\n eyebrow ? 'mt-3' : '',\n )}\n >\n {title}\n </h3>\n <p className=\"mt-3 max-w-2xl text-sm leading-6 text-muted-foreground sm:text-base\">\n {description}\n </p>\n </div>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex size-9 shrink-0 items-center justify-center rounded-lg border transition-colors hover:bg-muted\"\n aria-label={closeLabel}\n >\n <X className=\"size-4\" />\n </button>\n ) : null}\n </div>\n\n {rows && rows.length > 0 ? (\n <div className=\"mt-6 overflow-hidden rounded-xl border bg-muted/30\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead />\n <TableHead className=\"font-mono text-xs uppercase tracking-wider text-muted-foreground\">\n {currentPlanLabel}\n </TableHead>\n <TableHead className=\"font-mono text-xs uppercase tracking-wider text-primary\">\n {upgradedPlanLabel}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {rows.map((row, index) => (\n <TableRow key={row.key ?? index}>\n <TableCell className=\"font-medium\">{row.label}</TableCell>\n <TableCell className=\"font-mono text-muted-foreground\">\n {row.currentValue}\n </TableCell>\n <TableCell className=\"font-mono\">{row.upgradedValue}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n ) : null}\n\n <div\n className={cn(\n 'mt-6 flex flex-col gap-3 sm:flex-row sm:items-center',\n footer || hasSecondaryAction ? 'sm:justify-between' : 'sm:justify-end',\n )}\n >\n {footer ? <p className=\"text-sm text-muted-foreground\">{footer}</p> : null}\n <div className=\"flex flex-wrap gap-2\">\n {hasSecondaryAction ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onSecondaryAction}\n className=\"border\"\n >\n {secondaryActionLabel}\n </Button>\n ) : null}\n <Button type=\"button\" onClick={onPrimaryAction}>\n {primaryActionLabel}\n </Button>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface FadeInProps extends React.HTMLAttributes<HTMLDivElement> {\n delay?: number;\n duration?: number;\n direction?: 'up' | 'down' | 'left' | 'right' | 'none';\n once?: boolean;\n children: React.ReactNode;\n}\n\nconst translateMap = {\n up: 'translate-y-6',\n down: '-translate-y-6',\n left: 'translate-x-6',\n right: '-translate-x-6',\n none: '',\n};\n\nexport function FadeIn({\n delay = 0,\n duration = 600,\n direction = 'up',\n once = true,\n children,\n className,\n style,\n ...props\n}: FadeInProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n if (once) observer.disconnect();\n } else if (!once) {\n setVisible(false);\n }\n },\n { threshold: 0.1 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [once]);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'transition-all',\n visible ? 'opacity-100 translate-x-0 translate-y-0' : `opacity-0 ${translateMap[direction]}`,\n className,\n )}\n style={{ transitionDuration: `${duration}ms`, transitionDelay: `${delay}ms`, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface SectionTitleProps {\n title: string;\n description?: string;\n badge?: string;\n className?: string;\n}\n\nexport function SectionTitle({ title, description, badge, className }: SectionTitleProps) {\n return (\n <FadeIn direction=\"up\">\n <div className={cn('text-center', className)}>\n {badge && <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>}\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-2xl text-pretty text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n </FadeIn>\n );\n}\n","export const marketingSectionSpacing = {\n standard: 'px-6 py-14 sm:px-10 sm:py-20',\n hero: 'px-6 pb-14 pt-10 sm:px-10 sm:py-20',\n} as const;\n\nexport type MarketingSectionSpacing = keyof typeof marketingSectionSpacing;\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\nconst sizes = {\n sm: { outer: 'w-44', height: 'h-80', notch: 'w-16 h-4', border: 'rounded-[2rem]', screen: 'rounded-[1.75rem]' },\n md: { outer: 'w-56', height: 'h-[26rem]', notch: 'w-20 h-5', border: 'rounded-[2.5rem]', screen: 'rounded-[2.25rem]' },\n lg: { outer: 'w-72', height: 'h-[34rem]', notch: 'w-24 h-6', border: 'rounded-[3rem]', screen: 'rounded-[2.75rem]' },\n} as const;\n\nexport interface PhoneFrameProps {\n children?: React.ReactNode;\n size?: keyof typeof sizes;\n className?: string;\n float?: boolean;\n}\n\nexport function PhoneFrame({ children, size = 'md', className, float = true }: PhoneFrameProps) {\n const s = sizes[size];\n return (\n <>\n {float && (\n <style>{`\n @keyframes olwiba-phone-float {\n 0%, 100% { transform: translateY(0px); }\n 50% { transform: translateY(-10px); }\n }\n .olwiba-phone-float { animation: olwiba-phone-float 5s ease-in-out infinite; }\n `}</style>\n )}\n <div\n className={cn(\n 'relative mx-auto',\n s.outer,\n float && 'olwiba-phone-float',\n className,\n )}\n >\n {/* Device body */}\n <div\n className={cn(\n 'relative flex w-full flex-col overflow-hidden border-[3px] border-foreground/15 bg-muted shadow-2xl',\n s.border,\n s.height,\n )}\n >\n {/* Status bar / notch area */}\n <div className=\"relative flex justify-center pt-3 pb-1 shrink-0\">\n <div className={cn('rounded-full bg-foreground/10', s.notch)} />\n </div>\n\n {/* Screen */}\n <div className={cn('mx-1.5 mb-1.5 flex-1 overflow-hidden bg-background', s.screen)}>\n {children}\n </div>\n </div>\n\n {/* Side buttons */}\n <div className=\"absolute right-[-5px] top-24 h-12 w-[3px] rounded-l-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-20 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-32 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n <div className=\"absolute left-[-5px] top-44 h-8 w-[3px] rounded-r-sm bg-foreground/15\" />\n </div>\n </>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, Badge, Button } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\nimport { PhoneFrame } from '../components/PhoneFrame';\nimport type { AppShellRenderLink } from '../app/AppShell';\nimport { marketingSectionSpacing } from './section-spacing';\n\nexport interface HeroSectionProps {\n heading: string;\n badge?: string;\n description: string;\n primaryCta: { label: string; href: string };\n secondaryCta?: { label: string; href: string };\n heroImage?: React.ReactNode;\n media?: 'image' | 'phone' | 'none';\n phoneSize?: 'sm' | 'md' | 'lg';\n avatarUrls?: string[];\n socialProofText?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function HeroSection({\n heading,\n badge,\n description,\n primaryCta,\n secondaryCta,\n heroImage,\n media = 'image',\n phoneSize = 'lg',\n avatarUrls,\n socialProofText,\n renderLink = defaultRenderLink,\n}: HeroSectionProps) {\n return (\n <section className=\"overflow-hidden\">\n <div className={marketingSectionSpacing.hero}>\n <div className=\"mx-auto grid max-w-6xl items-center gap-10 lg:grid-cols-2 lg:gap-16\">\n {/* Left - text content */}\n <FadeIn direction=\"left\">\n <div className=\"flex flex-col gap-6\">\n {badge && (\n <div>\n <Badge variant=\"secondary\">{badge}</Badge>\n </div>\n )}\n <h1 className=\"text-balance text-4xl font-semibold tracking-tight sm:text-5xl lg:text-6xl\">\n {heading}\n </h1>\n <p className=\"max-w-lg text-pretty text-lg text-muted-foreground\">\n {description}\n </p>\n <div className=\"flex flex-wrap items-center gap-3\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <Button size=\"lg\">\n {primaryCta.label}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n ),\n })}\n {secondaryCta &&\n renderLink({\n href: secondaryCta.href,\n children: (\n <Button size=\"lg\" variant=\"outline\">\n {secondaryCta.label}\n </Button>\n ),\n })}\n </div>\n </div>\n </FadeIn>\n\n {/* Right - media */}\n {media !== 'none' && (\n <FadeIn direction=\"right\" delay={200}>\n {media === 'phone' ? (\n <div className=\"flex justify-center\">\n <PhoneFrame size={phoneSize}>\n {heroImage}\n </PhoneFrame>\n </div>\n ) : (\n <div className=\"overflow-hidden rounded-2xl\">\n {heroImage}\n </div>\n )}\n </FadeIn>\n )}\n </div>\n\n {/* Avatar social proof row */}\n {(avatarUrls?.length || socialProofText) && (\n <FadeIn direction=\"up\" delay={400}>\n <div className=\"mx-auto mt-12 flex max-w-6xl items-center gap-4\">\n {avatarUrls && avatarUrls.length > 0 && (\n <div className=\"flex -space-x-3\">\n {avatarUrls.map((url, i) => (\n <Avatar key={i} className=\"size-9 border-2 border-background\">\n <AvatarImage src={url} alt=\"\" />\n <AvatarFallback className=\"text-xs\">\n {String.fromCharCode(65 + (i % 26))}\n </AvatarFallback>\n </Avatar>\n ))}\n </div>\n )}\n {socialProofText && (\n <p className=\"text-sm font-medium text-muted-foreground\">\n {socialProofText}\n </p>\n )}\n </div>\n </FadeIn>\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { ArrowRight } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\n\nexport interface FeatureCardProps extends React.HTMLAttributes<HTMLDivElement> {\n icon: LucideIcon;\n title: string;\n description: string;\n href?: string;\n}\n\nexport function FeatureCard({ icon: Icon, title, description, href, className, ...props }: FeatureCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'group relative flex h-full flex-col gap-4 border bg-card p-6 transition-all duration-200',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl hover:-translate-y-0.5 hover:shadow-md'\n : 'rounded-2xl hover:-translate-y-0.5 hover:shadow-md',\n href && 'cursor-pointer',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n <div\n className={cn(\n 'flex h-10 w-10 items-center justify-center bg-primary/10 text-primary transition-colors group-hover:bg-primary group-hover:text-primary-foreground',\n mode === 'smooth' ? 'rounded-2xl' : 'rounded-xl',\n )}\n >\n <Icon className=\"size-5\" />\n </div>\n <div className=\"space-y-1.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <h3 className=\"font-semibold leading-tight\">{title}</h3>\n {href && (\n <ArrowRight className=\"size-4 shrink-0 text-muted-foreground opacity-0 transition-all group-hover:translate-x-0.5 group-hover:opacity-100\" />\n )}\n </div>\n <p className=\"text-sm leading-relaxed text-muted-foreground\">{description}</p>\n </div>\n </div>\n );\n\n const content =\n mode === 'playful' ? (\n <div className={cn('group/playful relative h-full', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-2xl bg-border transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]\"\n />\n {cardInner}\n </div>\n ) : (\n cardInner\n );\n\n if (href) {\n return <a href={href} className=\"block h-full\">{content}</a>;\n }\n\n return content;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface StaggerChildrenProps extends React.HTMLAttributes<HTMLDivElement> {\n stagger?: number;\n delay?: number;\n duration?: number;\n direction?: 'up' | 'down' | 'left' | 'right' | 'none';\n once?: boolean;\n children: React.ReactNode;\n}\n\nconst translateMap = {\n up: [0, 20],\n down: [0, -20],\n left: [20, 0],\n right: [-20, 0],\n none: [0, 0],\n};\n\nexport function StaggerChildren({\n stagger = 80,\n delay = 0,\n duration = 500,\n direction = 'up',\n once = true,\n children,\n className,\n ...props\n}: StaggerChildrenProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n if (once) observer.disconnect();\n } else if (!once) {\n setVisible(false);\n }\n },\n { threshold: 0.1 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [once]);\n\n const [tx, ty] = translateMap[direction];\n\n return (\n <div ref={ref} className={cn(className)} {...props}>\n {React.Children.map(children, (child, i) => (\n <div\n className=\"h-full\"\n style={{\n transition: `opacity ${duration}ms ease, transform ${duration}ms ease`,\n transitionDelay: `${delay + i * stagger}ms`,\n opacity: visible ? 1 : 0,\n transform: visible ? 'translate(0,0)' : `translate(${tx}px,${ty}px)`,\n }}\n >\n {child}\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface FeaturesSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\nexport function FeaturesSection({\n title = 'Everything you need to ship fast',\n description = 'A complete system of components, blocks, and hooks designed to work together - and get out of your way.',\n badge = 'Features',\n features,\n}: FeaturesSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 grid gap-8 sm:grid-cols-2 lg:grid-cols-3\">\n {features.map((feature) => (\n <FeatureCard\n key={feature.title}\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface GroupedFeatureGroup {\n label: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\nexport interface GroupedFeaturesSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n groups: GroupedFeatureGroup[];\n}\n\nexport function GroupedFeaturesSection({\n badge = 'Features',\n title = 'Everything you need to ship',\n description,\n groups,\n}: GroupedFeaturesSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <div className=\"mt-14 space-y-14\">\n {groups.map((group, i) => (\n <div key={group.label}>\n <FadeIn direction=\"up\" delay={i * 60}>\n <div className=\"mb-6 flex items-center gap-3\">\n <span className=\"text-sm font-semibold tracking-wide text-muted-foreground uppercase\">\n {group.label}\n </span>\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n </FadeIn>\n <StaggerChildren className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {group.features.map((feature) => (\n <FeatureCard\n key={feature.title}\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n ))}\n </StaggerChildren>\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface StepItem {\n emoji?: string;\n title: string;\n description: string;\n}\n\nexport interface StepsSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n steps: StepItem[];\n}\n\nexport function StepsSection({\n badge = 'How it works',\n title = 'From zero to shipped',\n description,\n steps,\n}: StepsSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <div className=\"mt-12\">\n {/* Desktop: horizontal row */}\n <div className=\"hidden sm:grid\" style={{ gridTemplateColumns: `repeat(${steps.length}, 1fr)` }}>\n {steps.map((step, i) => (\n <FadeIn key={step.title} direction=\"up\" delay={i * 80}>\n <div className=\"relative flex flex-col items-center text-center px-4\">\n {/* Dashed connector to next step */}\n {i < steps.length - 1 && (\n <div\n aria-hidden=\"true\"\n className=\"absolute top-6 left-1/2 w-full border-t border-dashed border-border\"\n />\n )}\n {/* Emoji badge (or fallback number) */}\n <div className=\"relative z-10 mb-3 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-2xl\">\n {step.emoji ?? (\n <span className=\"text-sm font-semibold text-primary\">{i + 1}</span>\n )}\n </div>\n <h3 className=\"font-semibold text-foreground\">{step.title}</h3>\n <p className=\"mt-2 text-sm leading-relaxed text-muted-foreground\">{step.description}</p>\n </div>\n </FadeIn>\n ))}\n </div>\n\n {/* Mobile: vertical timeline */}\n <div className=\"flex flex-col gap-0 sm:hidden\">\n {steps.map((step, i) => (\n <FadeIn key={step.title} direction=\"up\" delay={i * 80}>\n <div className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Vertical connector */}\n {i < steps.length - 1 && (\n <div\n aria-hidden=\"true\"\n className=\"absolute left-[23px] top-14 bottom-0 w-px border-l border-dashed border-border\"\n />\n )}\n {/* Emoji badge (or fallback number) */}\n <div className=\"relative z-10 flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-muted text-2xl\">\n {step.emoji ?? (\n <span className=\"text-sm font-semibold text-primary\">{i + 1}</span>\n )}\n </div>\n <div className=\"pt-3\">\n <h3 className=\"font-semibold text-foreground\">{step.title}</h3>\n <p className=\"mt-1.5 text-sm leading-relaxed text-muted-foreground\">{step.description}</p>\n </div>\n </div>\n </FadeIn>\n ))}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface TechStackItem {\n icon: LucideIcon;\n name: string;\n description: string;\n href?: string;\n}\n\nexport interface TechStackSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n items: TechStackItem[];\n}\n\nexport function TechStackSection({\n badge = 'Built on',\n title = 'The stack',\n description,\n items,\n}: TechStackSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <StaggerChildren className=\"mt-12 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {items.map((item) => {\n const Icon = item.icon;\n const card = (\n <div\n className={cn(\n 'group flex flex-col gap-3 border bg-background p-5 transition-all duration-200',\n mode === 'smooth'\n ? 'rounded-2xl hover:-translate-y-0.5 hover:shadow-md'\n : 'rounded-xl hover:-translate-y-0.5 hover:shadow-md',\n )}\n >\n <div\n className={cn(\n 'flex h-9 w-9 items-center justify-center bg-muted text-muted-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary',\n mode === 'smooth' ? 'rounded-xl' : 'rounded-lg',\n )}\n >\n <Icon className=\"size-4\" />\n </div>\n <div>\n <p className=\"text-sm font-semibold leading-tight\">{item.name}</p>\n <p className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">{item.description}</p>\n </div>\n </div>\n );\n\n if (item.href) {\n return (\n <a key={item.name} href={item.href} className=\"block\">\n {card}\n </a>\n );\n }\n return <div key={item.name}>{card}</div>;\n })}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { FeatureCard } from '../components/FeatureCard';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface CarouselSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n features: Array<{ icon: LucideIcon; title: string; description: string; href?: string }>;\n}\n\n/**\n * Horizontally scrolling card carousel for feature-style content.\n * Scroll-snap based with prev/next controls — no carousel dependency.\n */\nexport function CarouselSection({\n title = 'Explore the platform',\n description,\n badge = 'Features',\n features,\n}: CarouselSectionProps) {\n const mode = useUIVariant();\n const trackRef = React.useRef<HTMLDivElement>(null);\n const [canPrev, setCanPrev] = React.useState(false);\n const [canNext, setCanNext] = React.useState(true);\n\n const updateScrollState = React.useCallback(() => {\n const track = trackRef.current;\n if (!track) return;\n setCanPrev(track.scrollLeft > 8);\n setCanNext(track.scrollLeft < track.scrollWidth - track.clientWidth - 8);\n }, []);\n\n React.useEffect(() => {\n const track = trackRef.current;\n if (!track) return;\n updateScrollState();\n track.addEventListener('scroll', updateScrollState, { passive: true });\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(track);\n return () => {\n track.removeEventListener('scroll', updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState]);\n\n const scrollByCard = (direction: 1 | -1) => {\n const track = trackRef.current;\n if (!track) return;\n const card = track.querySelector<HTMLElement>('[data-carousel-item]');\n const step = card ? card.offsetWidth + 24 : track.clientWidth * 0.8;\n track.scrollBy({ left: direction * step, behavior: 'smooth' });\n };\n\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n const controlClasses = cn(\n 'flex size-9 items-center justify-center border bg-background text-foreground transition-colors',\n 'hover:bg-muted disabled:opacity-40 disabled:hover:bg-background',\n mode === 'smooth' ? 'rounded-2xl' : 'rounded-xl',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <FadeIn direction=\"up\">\n <div className=\"mt-10 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n aria-label=\"Previous\"\n className={controlClasses}\n onClick={() => scrollByCard(-1)}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next\"\n className={controlClasses}\n onClick={() => scrollByCard(1)}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </button>\n </div>\n\n <div\n ref={trackRef}\n className=\"mt-4 flex snap-x snap-mandatory gap-6 overflow-x-auto pb-4 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n >\n {features.map((feature) => (\n <div\n key={feature.title}\n data-carousel-item\n className=\"w-[280px] shrink-0 snap-start sm:w-[320px]\"\n >\n <FeatureCard\n icon={feature.icon}\n title={feature.title}\n description={feature.description}\n href={feature.href}\n />\n </div>\n ))}\n </div>\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface FeatureMarqueeItem {\n icon: LucideIcon;\n title: string;\n}\n\nexport interface FeatureMarqueeRow {\n items: FeatureMarqueeItem[];\n direction?: 'left' | 'right';\n}\n\nexport interface FeatureMarqueeSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n rows: FeatureMarqueeRow[];\n speed?: 'slow' | 'normal' | 'fast';\n pauseOnHover?: boolean;\n}\n\nconst speedDuration = {\n slow: '280s',\n normal: '180s',\n fast: '100s',\n} as const;\n\nexport function FeatureMarqueeSection({\n badge,\n title,\n description,\n rows,\n speed = 'normal',\n pauseOnHover = true,\n}: FeatureMarqueeSectionProps) {\n const mode = useUIVariant();\n const duration = speedDuration[speed];\n\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"py-14 sm:py-20\">\n {(title || badge || description) && (\n <FadeIn direction=\"up\">\n <div className=\"mx-auto mb-10 max-w-4xl px-6 sm:px-10\">\n <SectionTitle title={title ?? ''} description={description} badge={badge} />\n </div>\n </FadeIn>\n )}\n\n <div className=\"space-y-3\">\n {rows.map((row, i) => {\n const direction = row.direction ?? (i % 2 === 0 ? 'left' : 'right');\n const reversed = direction === 'right';\n // Repeat enough that one set exceeds 4K viewport (~3840px).\n const set = Array.from({ length: 4 }, () => row.items).flat();\n const items = [...set, ...set];\n\n return (\n <div\n key={i}\n className=\"group relative overflow-hidden\"\n style={{\n maskImage:\n 'linear-gradient(to right, transparent, black 8%, black 92%, transparent)',\n WebkitMaskImage:\n 'linear-gradient(to right, transparent, black 8%, black 92%, transparent)',\n }}\n >\n <div\n className={cn(\n 'flex w-max gap-3 py-0.5',\n pauseOnHover && 'group-hover:[animation-play-state:paused]',\n )}\n style={{\n animation: `${reversed ? 'feature-marquee-right' : 'feature-marquee-left'} ${duration} linear infinite`,\n }}\n >\n {items.map((item, j) => {\n const Icon = item.icon;\n return (\n <div\n key={`${item.title}-${j}`}\n className=\"flex shrink-0 items-center gap-2 rounded-full border bg-background px-4 py-2 text-sm shadow-sm\"\n >\n <Icon className=\"size-3.5 shrink-0 text-primary\" />\n <span className=\"whitespace-nowrap text-foreground\">{item.title}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n\n <style>{`\n @keyframes feature-marquee-left {\n from { transform: translateX(0); }\n to { transform: translateX(-50%); }\n }\n @keyframes feature-marquee-right {\n from { transform: translateX(-50%); }\n to { transform: translateX(0); }\n }\n `}</style>\n </section>\n );\n}\n","'use client';\n\nimport { ArrowRight, Sparkles } from 'lucide-react';\nimport { Button, cn, useUIVariant } from '@olwiba/cn';\nimport { FadeIn } from '../motion/FadeIn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface CtaSectionProps {\n heading: string;\n description: string;\n primaryCta: { label: string; href: string };\n secondaryCta?: { label: string; href: string };\n footnote?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function CtaSection({\n heading,\n description,\n primaryCta,\n secondaryCta,\n footnote,\n renderLink = defaultRenderLink,\n}: CtaSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"relative px-6 py-16 sm:px-10 sm:py-24\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_center,hsl(var(--primary)/0.15),transparent_70%)]\" />\n <FadeIn direction=\"up\">\n <div className=\"relative mx-auto max-w-2xl text-center\">\n <div className={cn('mb-4 inline-flex h-10 w-10 items-center justify-center bg-primary/10 text-primary', mode === 'smooth' ? 'rounded-3xl' : 'rounded-2xl')}>\n <Sparkles className=\"size-5\" />\n </div>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {heading}\n </h2>\n <p className=\"mx-auto mt-4 max-w-lg text-pretty text-muted-foreground\">\n {description}\n </p>\n <div className=\"mt-8 flex flex-wrap items-center justify-center gap-3\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <Button size=\"lg\">\n {primaryCta.label}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n ),\n })}\n {secondaryCta &&\n renderLink({\n href: secondaryCta.href,\n children: (\n <Button size=\"lg\" variant=\"outline\">\n {secondaryCta.label}\n </Button>\n ),\n })}\n </div>\n {footnote && (\n <p className=\"mt-4 text-sm text-muted-foreground\">\n {footnote}\n </p>\n )}\n </div>\n </FadeIn>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, Rocket } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface CtaCardSectionProps {\n heading: string;\n description?: string;\n primaryCta: { label: string; href: string };\n footnote?: string;\n icon?: React.ReactNode;\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function CtaCardSection({\n heading,\n description,\n primaryCta,\n footnote,\n icon,\n renderLink = defaultRenderLink,\n}: CtaCardSectionProps) {\n const ref = React.useRef<HTMLElement>(null);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true);\n observer.disconnect();\n }\n },\n { threshold: 0.15 },\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n return (\n <section\n ref={ref}\n className={cn(\n 'relative overflow-hidden rounded-3xl border border-gray-200 shadow-sm dark:border-border',\n 'bg-[#E0DFDB] dark:bg-card',\n 'transition-[opacity,transform] duration-700 ease-out',\n visible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-6',\n )}\n >\n {/* Decorative icon */}\n <div\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center\"\n style={{\n opacity: visible ? 0.12 : 0,\n transform: visible ? 'scale(1) rotate(0deg)' : 'scale(0.9) rotate(-5deg)',\n transition: 'opacity 700ms ease 200ms, transform 700ms ease 200ms',\n }}\n >\n {icon ?? <Rocket className=\"size-72 text-foreground dark:text-foreground\" strokeWidth={0.75} />}\n </div>\n\n {/* Content */}\n <div className=\"relative z-10 px-6 py-20 text-center sm:px-10 sm:py-28\">\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {heading}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-lg text-pretty text-muted-foreground\">{description}</p>\n )}\n <div className=\"mt-8\">\n {renderLink({\n href: primaryCta.href,\n children: (\n <span className=\"inline-flex items-center gap-2 rounded-full bg-foreground px-6 py-3 text-sm font-medium text-background transition-opacity hover:opacity-80\">\n {primaryCta.label}\n <ArrowRight className=\"size-4\" />\n </span>\n ),\n })}\n </div>\n {footnote && (\n <p className=\"mt-5 text-sm text-muted-foreground\">{footnote}</p>\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { Badge, Button, cn, Separator, useUIVariant } from '@olwiba/cn';\n\nexport interface PricingFeature {\n label: string;\n included: boolean;\n}\n\nexport interface PricingCardProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n price: string;\n period?: string;\n description: string;\n features: PricingFeature[];\n cta: string;\n highlighted?: boolean;\n disabled?: boolean;\n /** Disables only the CTA button, leaving the rest of the card interactive. */\n ctaDisabled?: boolean;\n badge?: React.ReactNode;\n /** Rendered directly below the CTA button (e.g. a \"Get notified\" link). */\n footer?: React.ReactNode;\n onSelect?: () => void;\n}\n\nexport function PricingCard({\n name,\n price,\n period = '/mo',\n description,\n features,\n cta,\n highlighted = false,\n disabled = false,\n ctaDisabled = false,\n badge,\n footer,\n onSelect,\n className,\n ...props\n}: PricingCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'relative flex flex-col border p-6 transition-opacity',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl'\n : 'rounded-2xl',\n highlighted ? 'border-primary bg-primary/5 shadow-sm' : 'bg-card',\n disabled && 'pointer-events-none opacity-40 select-none',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n {badge && (\n <div className=\"absolute -top-3 left-1/2 -translate-x-1/2\">\n {typeof badge === 'string' ? <Badge>{badge}</Badge> : badge}\n </div>\n )}\n\n <div className=\"space-y-1\">\n <div className=\"text-sm font-medium text-muted-foreground\">{name}</div>\n <div className=\"flex items-end gap-1\">\n <span className=\"text-4xl font-bold tracking-tight\">{price}</span>\n <span className=\"mb-1 text-sm text-muted-foreground\">{period}</span>\n </div>\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n </div>\n\n <Button\n variant={highlighted ? 'default' : 'outline'}\n className=\"mt-6 w-full\"\n onClick={onSelect}\n disabled={disabled || ctaDisabled}\n >\n {cta}\n </Button>\n\n {footer && <div className=\"mt-3 text-center text-sm\">{footer}</div>}\n\n <Separator className=\"my-6\" />\n\n <ul className=\"space-y-3 text-sm\">\n {features.map((feat) => (\n <li key={feat.label} className=\"flex items-center gap-2\">\n {feat.included ? (\n <>\n <Check className=\"size-4 shrink-0 text-primary\" />\n <span>{feat.label}</span>\n </>\n ) : (\n <>\n <Minus className=\"size-4 shrink-0 text-muted-foreground/40\" />\n <span className=\"text-muted-foreground/40\">{feat.label}</span>\n </>\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n\n if (mode === 'playful') {\n return (\n <div className={cn('group/playful relative', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n 'absolute inset-0 rounded-2xl transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]',\n highlighted ? 'bg-primary/20' : 'bg-border',\n )}\n />\n {cardInner}\n </div>\n );\n }\n\n return cardInner;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\ninterface TimeLeft {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n}\n\nfunction getTimeLeft(deadline: string): TimeLeft | null {\n const diff = new Date(deadline).getTime() - Date.now();\n if (diff <= 0) return null;\n return {\n days: Math.floor(diff / (1000 * 60 * 60 * 24)),\n hours: Math.floor((diff / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((diff / 1000 / 60) % 60),\n seconds: Math.floor((diff / 1000) % 60),\n };\n}\n\nexport interface CountdownTimerProps {\n deadline: string;\n label?: string;\n className?: string;\n /** Compact inline mode — renders as \"29d · 11h · 22m\", no seconds, no label. For use inside badges. */\n compact?: boolean;\n}\n\nexport function CountdownTimer({\n deadline,\n label = 'Founding price closes in',\n className,\n compact = false,\n}: CountdownTimerProps) {\n const [timeLeft, setTimeLeft] = React.useState<TimeLeft | null>(() => getTimeLeft(deadline));\n\n React.useEffect(() => {\n setTimeLeft(getTimeLeft(deadline));\n const id = setInterval(() => setTimeLeft(getTimeLeft(deadline)), 1000);\n return () => clearInterval(id);\n }, [deadline]);\n\n if (!timeLeft) return null;\n\n if (compact) {\n return (\n <span className={cn('font-mono tabular-nums', className)}>\n {timeLeft.days}d · {String(timeLeft.hours).padStart(2, '0')}h · {String(timeLeft.minutes).padStart(2, '0')}m · {String(timeLeft.seconds).padStart(2, '0')}s\n </span>\n );\n }\n\n const units = [\n { value: timeLeft.days, unit: 'd' },\n { value: timeLeft.hours, unit: 'h' },\n { value: timeLeft.minutes, unit: 'm' },\n { value: timeLeft.seconds, unit: 's' },\n ];\n\n return (\n <div className={cn('flex items-center justify-center gap-2 text-sm', className)}>\n <span className=\"text-muted-foreground\">{label}</span>\n <span className=\"flex items-center gap-1 font-mono font-semibold tabular-nums\">\n {units.map(({ value, unit }, i) => (\n <React.Fragment key={unit}>\n <span>\n {String(value).padStart(2, '0')}\n <span className=\"font-normal text-muted-foreground\">{unit}</span>\n </span>\n {i < units.length - 1 && (\n <span className=\"text-muted-foreground/50\">·</span>\n )}\n </React.Fragment>\n ))}\n </span>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, Button, cn, useUIVariant } from '@olwiba/cn';\nimport { PricingCard, type PricingFeature } from '../components/PricingCard';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { CountdownTimer } from '../motion/CountdownTimer';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PricingPlan {\n name: string;\n monthly: number;\n annual: number;\n description: string;\n cta: string;\n highlighted?: boolean;\n disabled?: boolean;\n /** Disables only the CTA button, leaving the rest of the card interactive. */\n ctaDisabled?: boolean;\n features: PricingFeature[];\n /** Overrides computed price display (e.g. \"$?\" for community/reach-out tiers). */\n priceDisplay?: string;\n /** Overrides computed period display. */\n periodDisplay?: string;\n}\n\nexport interface PricingSectionProps {\n title?: string;\n description?: string;\n badge?: React.ReactNode;\n plans: PricingPlan[];\n saveBadge?: string;\n isAuthenticated?: boolean;\n renderLink?: AppShellRenderLink;\n footnote?: string;\n mode?: 'subscription' | 'one-time';\n foundingDeadline?: string;\n /** Rendered below each plan's CTA button (e.g. a \"Get notified\" link). */\n renderPlanFooter?: (plan: PricingPlan) => React.ReactNode;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function PricingSection({\n title = 'Simple, transparent pricing',\n description = 'Start for free. Scale as you grow. No hidden fees.',\n badge = 'Pricing',\n plans,\n saveBadge = 'Save 34%',\n isAuthenticated,\n renderLink = defaultRenderLink,\n footnote,\n mode = 'subscription',\n foundingDeadline,\n renderPlanFooter,\n}: PricingSectionProps) {\n const [annual, setAnnual] = React.useState(false);\n const isOneTime = mode === 'one-time';\n const uiMode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n uiMode === 'smooth' && 'rounded-3xl border',\n uiMode === 'playful' && 'rounded-2xl border-primary/25 border',\n !uiMode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n {/* Header */}\n <div className=\"text-center\">\n {badge && (\n typeof badge === 'string'\n ? <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\n : <div className=\"mb-4\">{badge}</div>\n )}\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n {description && (\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n {description}\n </p>\n )}\n\n {/* Billing toggle — subscription mode only */}\n {!isOneTime && (\n <div className=\"mt-6 inline-flex items-center gap-3 rounded-full border bg-muted p-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setAnnual(false)}\n className={cn(\n 'rounded-full px-4 py-1.5 text-sm font-medium transition-colors',\n !annual ? 'bg-background text-foreground shadow-sm' : 'text-muted-foreground hover:text-foreground',\n )}\n >\n Monthly\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setAnnual(true)}\n className={cn(\n 'flex items-center gap-2 rounded-full px-4 py-1.5 text-sm font-medium transition-colors',\n annual ? 'bg-background text-foreground shadow-sm' : 'text-muted-foreground hover:text-foreground',\n )}\n >\n Annual\n {saveBadge && (\n <Badge variant=\"secondary\" className=\"text-xs\">{saveBadge}</Badge>\n )}\n </Button>\n </div>\n )}\n </div>\n\n {/* Plan cards */}\n <StaggerChildren className=\"mt-10 grid gap-4 lg:grid-cols-3\">\n {plans.map((plan) => {\n const rawPrice = isOneTime ? plan.monthly : (annual ? plan.annual : plan.monthly);\n const price = plan.priceDisplay ?? `$${rawPrice}`;\n const period = plan.periodDisplay ?? (isOneTime ? 'one-time' : (rawPrice > 0 ? '/mo' : ''));\n const badge = plan.highlighted && foundingDeadline\n ? (\n <span className=\"inline-flex items-center rounded-full border bg-secondary px-2.5 py-0.5 text-xs font-semibold text-secondary-foreground\">\n <CountdownTimer deadline={foundingDeadline} compact />\n </span>\n )\n : plan.highlighted\n ? 'Founding member'\n : undefined;\n return (\n <PricingCard\n key={plan.name}\n name={plan.name}\n price={price}\n period={period}\n description={plan.description}\n features={plan.features}\n cta={plan.cta}\n highlighted={plan.highlighted}\n disabled={plan.disabled}\n ctaDisabled={plan.ctaDisabled}\n badge={badge}\n footer={renderPlanFooter?.(plan)}\n />\n );\n })}\n </StaggerChildren>\n\n {/* Footnote */}\n {footnote && (\n <p className=\"mt-8 text-center text-sm text-muted-foreground\">\n {footnote}\n </p>\n )}\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Quote, Star } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, cn, useUIVariant } from '@olwiba/cn';\n\nexport interface TestimonialCardProps extends React.HTMLAttributes<HTMLDivElement> {\n quote: string;\n name: string;\n role: string;\n company?: string;\n avatar?: string;\n initials?: string;\n rating?: number;\n}\n\nexport function TestimonialCard({\n quote,\n name,\n role,\n company,\n avatar,\n initials,\n rating,\n className,\n ...props\n}: TestimonialCardProps) {\n const mode = useUIVariant();\n\n const cardInner = (\n <div\n className={cn(\n 'flex flex-col gap-4 border bg-card p-6',\n mode === 'playful'\n ? 'rounded-2xl rotate-[0.3deg]'\n : mode === 'smooth'\n ? 'rounded-3xl'\n : 'rounded-2xl',\n mode !== 'playful' && className,\n )}\n {...(mode !== 'playful' ? props : {})}\n >\n <Quote className=\"size-4 text-muted-foreground/40\" />\n {rating != null && (\n <div className=\"flex gap-0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={cn(\n 'size-4',\n i < rating\n ? 'fill-current text-amber-400'\n : 'text-muted-foreground/30',\n )}\n />\n ))}\n </div>\n )}\n <p className=\"flex-1 text-sm leading-relaxed\">{quote}</p>\n <div className=\"flex items-center gap-3\">\n <Avatar className=\"size-9\">\n <AvatarImage src={avatar} alt={name} />\n <AvatarFallback className=\"text-xs\">{initials ?? name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <div>\n <div className=\"text-sm font-medium leading-tight\">{name}</div>\n <div className=\"text-xs text-muted-foreground\">\n {role}{company ? ` · ${company}` : ''}\n </div>\n </div>\n </div>\n </div>\n );\n\n if (mode === 'playful') {\n return (\n <div className={cn('group/playful relative', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-2xl bg-border transition-transform duration-200 translate-x-[5px] translate-y-[5px] -rotate-[0.5deg] group-hover/playful:-rotate-[1.5deg] group-hover/playful:translate-x-[6px] group-hover/playful:translate-y-[6px]\"\n />\n {cardInner}\n </div>\n );\n }\n\n return cardInner;\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { TestimonialCard } from '../components/TestimonialCard';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface TestimonialsSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n testimonials: Array<{\n quote: string;\n name: string;\n role: string;\n company?: string;\n avatar?: string;\n initials?: string;\n rating?: number;\n }>;\n}\n\nexport function TestimonialsSection({\n title = 'Trusted by teams shipping real products',\n description = \"Here's what engineers and product teams say after using Olwiba in production.\",\n badge = 'Testimonials',\n testimonials,\n}: TestimonialsSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 columns-1 gap-4 sm:columns-2 lg:columns-3\">\n {testimonials.map((t) => (\n <div\n key={t.name}\n className=\"mb-4 break-inside-avoid transition-transform hover:-translate-y-0.5\"\n >\n <TestimonialCard\n quote={t.quote}\n name={t.name}\n role={t.role}\n company={t.company}\n avatar={t.avatar}\n initials={t.initials}\n rating={t.rating}\n />\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Github, Linkedin, Twitter } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage, Badge } from '@olwiba/cn';\n\nexport interface TeamMember {\n name: string;\n role: string;\n bio: string;\n avatar?: string;\n initials: string;\n social?: {\n twitter?: string | null;\n github?: string | null;\n linkedin?: string | null;\n };\n}\n\nconst defaultTeam: TeamMember[] = [\n {\n name: 'Olivia Reed',\n role: 'Co-Founder & CEO',\n bio: 'Previously led product at two YC companies. Obsessed with design systems and developer experience.',\n avatar: 'https://ui.shadcn.com/avatars/01.png',\n initials: 'OR',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Marcus Webb',\n role: 'Co-Founder & CTO',\n bio: 'Full-stack engineer with 12 years building UI infrastructure. Open source maintainer.',\n avatar: 'https://ui.shadcn.com/avatars/02.png',\n initials: 'MW',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Priya Nair',\n role: 'Head of Design',\n bio: 'Interaction designer turned design systems engineer. Bridges the gap between Figma and production.',\n avatar: 'https://ui.shadcn.com/avatars/03.png',\n initials: 'PN',\n social: { twitter: '#', github: null, linkedin: '#' },\n },\n];\n\nexport interface TeamSectionProps {\n members?: TeamMember[];\n badge?: string;\n title?: string;\n description?: string;\n}\n\nexport function TeamSection({\n members = defaultTeam,\n badge = 'Team',\n title = 'The people behind Olwiba',\n description = 'A small team with deep experience in design systems, open source, and developer tooling.',\n}: TeamSectionProps) {\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-5xl\">\n <div className=\"text-center\">\n <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n {title}\n </h2>\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n {description}\n </p>\n </div>\n\n <div className=\"mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {members.map((member) => (\n <div key={member.name} className=\"rounded-2xl border bg-muted/40 p-5\">\n <div className=\"flex items-start gap-4\">\n <Avatar className=\"size-12 rounded-xl\">\n <AvatarImage src={member.avatar} alt={member.name} />\n <AvatarFallback className=\"rounded-xl\">{member.initials}</AvatarFallback>\n </Avatar>\n <div className=\"min-w-0\">\n <div className=\"font-semibold leading-tight\">{member.name}</div>\n <div className=\"text-sm text-muted-foreground\">{member.role}</div>\n </div>\n </div>\n <p className=\"mt-3 text-sm leading-relaxed text-muted-foreground\">{member.bio}</p>\n {member.social && (\n <div className=\"mt-4 flex items-center gap-2\">\n {member.social.twitter && (\n <a href={member.social.twitter} aria-label=\"Twitter\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Twitter className=\"size-3.5\" />\n </a>\n )}\n {member.social.github && (\n <a href={member.social.github} aria-label=\"GitHub\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Github className=\"size-3.5\" />\n </a>\n )}\n {member.social.linkedin && (\n <a href={member.social.linkedin} aria-label=\"LinkedIn\" className=\"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\">\n <Linkedin className=\"size-3.5\" />\n </a>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger, cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface FaqSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n items: Array<{ question: string; answer: string }>;\n}\n\nexport function FaqSection({\n title = 'Frequently asked questions',\n description = 'Everything you need to know before getting started.',\n badge = 'FAQ',\n items,\n}: FaqSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-3xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <FadeIn direction=\"up\">\n <Accordion type=\"single\" collapsible className=\"mt-10 w-full\">\n {items.map((item, i) => (\n <AccordionItem key={i} value={`item-${i}`}>\n <AccordionTrigger className=\"text-left text-sm font-medium\">\n {item.question}\n </AccordionTrigger>\n <AccordionContent className=\"text-sm text-muted-foreground\">\n {item.answer}\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface CountUpProps extends React.HTMLAttributes<HTMLSpanElement> {\n from?: number;\n to: number;\n duration?: number;\n decimals?: number;\n prefix?: string;\n suffix?: string;\n once?: boolean;\n}\n\nexport function CountUp({\n from = 0,\n to,\n duration = 1500,\n decimals = 0,\n prefix = '',\n suffix = '',\n once = true,\n className,\n ...props\n}: CountUpProps) {\n const ref = React.useRef<HTMLSpanElement>(null);\n const [value, setValue] = React.useState(from);\n const hasStarted = React.useRef(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && (!once || !hasStarted.current)) {\n hasStarted.current = true;\n const start = performance.now();\n\n const tick = (now: number) => {\n const elapsed = now - start;\n const progress = Math.min(elapsed / duration, 1);\n const eased = 1 - Math.pow(1 - progress, 3);\n setValue(from + (to - from) * eased);\n if (progress < 1) requestAnimationFrame(tick);\n };\n\n requestAnimationFrame(tick);\n }\n },\n { threshold: 0.5 },\n );\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [from, to, duration, once]);\n\n return (\n <span ref={ref} className={cn(className)} {...props}>\n {prefix}{value.toFixed(decimals)}{suffix}\n </span>\n );\n}\n","'use client';\n\nimport { Separator, cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\nimport { CountUp } from '../motion/CountUp';\n\nexport interface StatsSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n stats: Array<{ value: string; label: string; description?: string }>;\n}\n\nfunction parseStatValue(value: string) {\n const match = value.match(/^(\\d+(?:\\.\\d+)?)(.*)/);\n if (!match) return null;\n const num = parseFloat(match[1]);\n const suffix = match[2] || '';\n const decimals = match[1].includes('.') ? match[1].split('.')[1].length : 0;\n return { num, suffix, decimals };\n}\n\nfunction StatValue({ value }: { value: string }) {\n const parsed = parseStatValue(value);\n if (!parsed) return <>{value}</>;\n return <CountUp to={parsed.num} decimals={parsed.decimals} suffix={parsed.suffix} />;\n}\n\nexport function StatsSection({\n title = 'Built for scale, used in production',\n description,\n badge = 'By the numbers',\n stats,\n}: StatsSectionProps) {\n const mode = useUIVariant()\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n )\n return (\n <section className={sectionClasses}>\n <div className=\"relative px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_bottom,hsl(var(--primary)/0.08),transparent_60%)]\" />\n <div className=\"relative mx-auto max-w-4xl\">\n <SectionTitle title={title} description={description} badge={badge} />\n\n <StaggerChildren className=\"mt-12 grid gap-px overflow-hidden rounded-2xl border bg-border sm:grid-cols-2 lg:grid-cols-4\">\n {stats.map((stat) => (\n <div key={stat.label} className=\"flex flex-col gap-2 bg-card px-6 py-8\">\n <div className=\"text-4xl font-bold tracking-tight\">\n <StatValue value={stat.value} />\n </div>\n <div className=\"font-medium\">{stat.label}</div>\n {stat.description && (\n <>\n <Separator />\n <p className=\"text-sm text-muted-foreground\">{stat.description}</p>\n </>\n )}\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, Mail } from 'lucide-react';\nimport { Badge, Button, Input } from '@olwiba/cn';\n\nexport interface NewsletterSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n placeholder?: string;\n submitLabel?: string;\n privacyHref?: string;\n privacyLabel?: string;\n successTitle?: string;\n successDescription?: string;\n onSubscribe?: (email: string) => void | Promise<void>;\n}\n\nconst defaults = {\n badge: 'Newsletter',\n title: 'Stay in the loop',\n description:\n 'New components, release notes, and product tips — straight to your inbox. No spam, unsubscribe any time.',\n placeholder: 'you@company.com',\n submitLabel: 'Subscribe',\n privacyHref: '#',\n privacyLabel: 'Privacy Policy',\n successTitle: \"You're on the list.\",\n successDescription: \"We'll be in touch soon.\",\n};\n\nexport function NewsletterSection({\n badge = defaults.badge,\n title = defaults.title,\n description = defaults.description,\n placeholder = defaults.placeholder,\n submitLabel = defaults.submitLabel,\n privacyHref = defaults.privacyHref,\n privacyLabel = defaults.privacyLabel,\n successTitle = defaults.successTitle,\n successDescription = defaults.successDescription,\n onSubscribe,\n}: NewsletterSectionProps = {}) {\n const [email, setEmail] = React.useState('');\n const [submitted, setSubmitted] = React.useState(false);\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n if (!email) return;\n await onSubscribe?.(email);\n setSubmitted(true);\n }\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"relative px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_at_top_right,hsl(var(--primary)/0.1),transparent_60%)]\" />\n <div className=\"relative mx-auto max-w-xl text-center\">\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <div className=\"inline-flex h-8 w-8 items-center justify-center rounded-xl bg-primary/10 text-primary\">\n <Mail className=\"size-4\" />\n </div>\n <Badge variant=\"secondary\">\n {badge}\n </Badge>\n </div>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">{title}</h2>\n <p className=\"mx-auto mt-4 max-w-sm text-pretty text-muted-foreground\">{description}</p>\n\n {submitted ? (\n <div className=\"mt-8 rounded-2xl border bg-muted/50 px-6 py-5 text-sm\">\n <span className=\"font-medium\">{successTitle}</span>{' '}\n <span className=\"text-muted-foreground\">{successDescription}</span>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"mt-8 flex flex-col gap-3 sm:flex-row\">\n <input\n type=\"text\"\n name=\"company\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n <Input\n type=\"email\"\n placeholder={placeholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n required\n className=\"flex-1\"\n />\n <Button type=\"submit\">\n {submitLabel}\n <ArrowRight className=\"ml-2 size-4\" />\n </Button>\n </form>\n )}\n\n <p className=\"mt-4 text-xs text-muted-foreground\">\n By subscribing you agree to our{' '}\n <a href={privacyHref} className=\"underline underline-offset-4 hover:text-foreground\">\n {privacyLabel}\n </a>\n .\n </p>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ChevronDown, Mail, MessageSquare, Send, type LucideIcon } from 'lucide-react';\nimport { Badge, Button, Input, Label, Textarea } from '@olwiba/cn';\n\nexport type ContactInfoItem = {\n label: string;\n value: string;\n icon?: LucideIcon;\n};\n\nexport interface ContactSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n contactInfo?: ContactInfoItem[];\n privacyHref?: string;\n successTitle?: string;\n successDescription?: string;\n sendAnotherLabel?: string;\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;\n}\n\nconst PHONE_PREFIXES = [\n { label: 'US +1', value: '+1-US' },\n { label: 'NZ +64', value: '+64-NZ' },\n { label: 'AU +61', value: '+61-AU' },\n { label: 'UK +44', value: '+44-UK' },\n { label: 'CA +1', value: '+1-CA' },\n { label: 'EU', value: '+0-EU' },\n];\n\nconst defaults = {\n badge: 'Contact',\n title: \"Let's talk\",\n description:\n \"Have a question or want to work together? Fill in the form and you'll hear back from the person who built it.\",\n successTitle: 'Message sent',\n successDescription: \"Thanks for reaching out. You'll get a reply within one business day.\",\n sendAnotherLabel: 'Send another',\n};\n\nexport function ContactSection({\n badge = defaults.badge,\n title = defaults.title,\n description = defaults.description,\n contactInfo,\n privacyHref,\n successTitle = defaults.successTitle,\n successDescription = defaults.successDescription,\n sendAnotherLabel = defaults.sendAnotherLabel,\n onSubmit,\n}: ContactSectionProps = {}) {\n const [submitted, setSubmitted] = React.useState(false);\n\n async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {\n e.preventDefault();\n await onSubmit?.(e);\n setSubmitted(true);\n }\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n\n {/* Header */}\n <div className=\"mx-auto max-w-2xl text-center\">\n {badge && (\n <div className=\"mb-4 flex justify-center\">\n <Badge variant=\"secondary\">{badge}</Badge>\n </div>\n )}\n <h2 className=\"text-balance text-4xl font-semibold tracking-tight sm:text-5xl\">\n {title}\n </h2>\n <p className=\"mt-4 text-lg text-muted-foreground\">{description}</p>\n\n {contactInfo && contactInfo.length > 0 && (\n <div className=\"mt-8 flex flex-wrap justify-center gap-6\">\n {contactInfo.map(({ icon: Icon = Mail, label, value }) => (\n <div key={label} className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Icon className=\"size-4 shrink-0\" />\n <span>{value}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Body */}\n {submitted ? (\n <div className=\"mx-auto mt-16 max-w-xl text-center\">\n <div className=\"mx-auto flex h-14 w-14 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <MessageSquare className=\"size-6\" />\n </div>\n <h3 className=\"mt-5 text-lg font-semibold\">{successTitle}</h3>\n <p className=\"mt-2 text-sm text-muted-foreground\">{successDescription}</p>\n <Button variant=\"outline\" size=\"sm\" className=\"mt-6\" onClick={() => setSubmitted(false)}>\n {sendAnotherLabel}\n </Button>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"mx-auto mt-16 max-w-xl sm:mt-20\">\n {/* Honeypot */}\n <input\n type=\"text\"\n name=\"_hp\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n\n <div className=\"grid grid-cols-1 gap-x-8 gap-y-6 sm:grid-cols-2\">\n {/* First name */}\n <div>\n <Label htmlFor=\"contact-first\" className=\"block text-sm/6 font-semibold\">\n First name\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-first\"\n name=\"firstName\"\n autoComplete=\"given-name\"\n placeholder=\"First\"\n required\n />\n </div>\n </div>\n\n {/* Last name */}\n <div>\n <Label htmlFor=\"contact-last\" className=\"block text-sm/6 font-semibold\">\n Last name\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-last\"\n name=\"lastName\"\n autoComplete=\"family-name\"\n placeholder=\"Last\"\n required\n />\n </div>\n </div>\n\n {/* Company */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-company\" className=\"block text-sm/6 font-semibold\">\n Company{' '}\n <span className=\"font-normal text-muted-foreground\">(optional)</span>\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-company\"\n name=\"company\"\n autoComplete=\"organization\"\n placeholder=\"Acme Inc.\"\n />\n </div>\n </div>\n\n {/* Email */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-email\" className=\"block text-sm/6 font-semibold\">\n Email\n </Label>\n <div className=\"mt-2.5\">\n <Input\n id=\"contact-email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@company.com\"\n required\n />\n </div>\n </div>\n\n {/* Phone */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-phone\" className=\"block text-sm/6 font-semibold\">\n Phone number{' '}\n <span className=\"font-normal text-muted-foreground\">(optional)</span>\n </Label>\n <div className=\"mt-2.5 flex overflow-hidden rounded-md border border-input bg-background focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\">\n <div className=\"relative flex shrink-0 items-center border-r border-input\">\n <select\n name=\"countryCode\"\n aria-label=\"Country code\"\n defaultValue=\"+1-US\"\n className=\"h-full appearance-none bg-transparent py-2 pl-3 pr-7 text-sm text-foreground focus:outline-none\"\n >\n {PHONE_PREFIXES.map(({ label, value }) => (\n <option key={value} value={value}>\n {label}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-1.5 size-3.5 shrink-0 text-muted-foreground\" />\n </div>\n <input\n id=\"contact-phone\"\n name=\"phone\"\n type=\"tel\"\n placeholder=\"123-456-7890\"\n className=\"min-w-0 grow bg-transparent px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none\"\n />\n </div>\n </div>\n\n {/* Message */}\n <div className=\"sm:col-span-2\">\n <Label htmlFor=\"contact-message\" className=\"block text-sm/6 font-semibold\">\n Message\n </Label>\n <div className=\"mt-2.5\">\n <Textarea\n id=\"contact-message\"\n name=\"message\"\n rows={4}\n placeholder=\"Tell us what you're working on...\"\n className=\"resize-none\"\n required\n />\n </div>\n </div>\n\n {/* Privacy toggle */}\n {privacyHref && (\n <div className=\"flex gap-x-4 sm:col-span-2\">\n <div className=\"flex h-6 items-center\">\n <div className=\"group relative inline-flex h-5 w-8 shrink-0 cursor-pointer rounded-full border border-input bg-muted p-px transition-colors duration-200 ease-in-out focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 has-[:checked]:border-primary has-[:checked]:bg-primary\">\n <span className=\"size-4 rounded-full bg-background shadow-sm transition-transform duration-200 ease-in-out group-has-[:checked]:translate-x-3\" />\n <input\n id=\"contact-privacy\"\n name=\"privacy\"\n type=\"checkbox\"\n required\n aria-label=\"Agree to privacy policy\"\n className=\"absolute inset-0 size-full cursor-pointer appearance-none focus:outline-none\"\n />\n </div>\n </div>\n <Label\n htmlFor=\"contact-privacy\"\n className=\"cursor-pointer text-sm font-normal leading-snug text-muted-foreground\"\n >\n By selecting this, you agree to our{' '}\n <a\n href={privacyHref}\n className=\"font-medium text-foreground underline-offset-2 hover:underline\"\n >\n privacy policy\n </a>\n .\n </Label>\n </div>\n )}\n </div>\n\n <div className=\"mt-10\">\n <Button type=\"submit\" className=\"w-full\">\n Let's talk\n <Send className=\"ml-2 size-4\" />\n </Button>\n </div>\n </form>\n )}\n\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { StaggerChildren } from '../motion/StaggerChildren';\n\nexport interface ComparisonColumn {\n label: string;\n cost: string;\n costDetail?: string;\n items: string[];\n highlighted?: boolean;\n}\n\nexport interface ComparisonSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n columns: ComparisonColumn[];\n}\n\nexport function ComparisonSection({\n badge = 'The math',\n title = 'The math is simple',\n description,\n columns,\n}: ComparisonSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <StaggerChildren className=\"mt-12 grid gap-4 sm:grid-cols-3\">\n {columns.map((col) => (\n <div\n key={col.label}\n className={cn(\n 'flex h-full flex-col rounded-2xl border p-6',\n col.highlighted\n ? 'border-primary bg-primary/10 ring-1 ring-primary/20'\n : 'border-border bg-muted/40',\n )}\n >\n <div className=\"mb-6\">\n <p\n className={cn(\n 'text-xs font-semibold uppercase tracking-widest',\n col.highlighted ? 'text-primary/80' : 'text-muted-foreground',\n )}\n >\n {col.label}\n </p>\n <p className=\"mt-2 text-2xl font-bold tracking-tight text-foreground\">\n {col.cost}\n </p>\n {col.costDetail && (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {col.costDetail}\n </p>\n )}\n </div>\n\n <ul className=\"flex flex-col gap-3\">\n {col.items.map((item) => (\n <li key={item} className=\"flex items-start gap-2.5\">\n {col.highlighted ? (\n <span className=\"mt-0.5 shrink-0 text-sm leading-none\">⚡</span>\n ) : (\n <span className=\"mt-0.5 shrink-0 text-sm leading-none\">❌</span>\n )}\n <span\n className={cn(\n 'text-sm leading-snug',\n col.highlighted ? 'text-foreground' : 'text-muted-foreground',\n )}\n >\n {item}\n </span>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </StaggerChildren>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Check, X } from 'lucide-react';\nimport { cn, useUIVariant } from '@olwiba/cn';\nimport { SectionTitle } from './SectionTitle';\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface QualificationItem {\n text: string;\n}\n\nexport interface QualificationColumn {\n heading: string;\n variant: 'positive' | 'negative';\n items: string[];\n}\n\nexport interface QualificationSectionProps {\n badge?: string;\n title?: string;\n description?: string;\n columns: [QualificationColumn, QualificationColumn];\n}\n\nexport function QualificationSection({\n badge = 'Who it is for',\n title = 'Is this for you?',\n description,\n columns,\n}: QualificationSectionProps) {\n const mode = useUIVariant();\n const sectionClasses = cn(\n 'overflow-hidden bg-card',\n mode === 'smooth' && 'rounded-3xl border',\n mode === 'playful' && 'rounded-2xl border-primary/25 border',\n !mode && 'rounded-2xl border',\n );\n\n return (\n <section className={sectionClasses}>\n <div className=\"px-6 py-14 sm:px-10 sm:py-20\">\n <div className=\"mx-auto max-w-4xl\">\n <SectionTitle badge={badge} title={title} description={description} />\n\n <FadeIn direction=\"up\" className=\"mt-12 grid gap-6 sm:grid-cols-2\">\n {columns.map((col) => {\n const isPositive = col.variant === 'positive';\n const Icon = isPositive ? Check : X;\n\n return (\n <div\n key={col.heading}\n className={cn(\n 'flex flex-col gap-4 rounded-2xl border p-6',\n isPositive ? 'border-border bg-muted/30' : 'border-border bg-muted/10',\n )}\n >\n <h3 className=\"text-sm font-semibold uppercase tracking-widest text-muted-foreground\">\n {col.heading}\n </h3>\n <ul className=\"flex flex-col gap-3\">\n {col.items.map((item) => (\n <li key={item} className=\"flex items-start gap-3\">\n <span\n className={cn(\n 'mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full',\n isPositive\n ? 'bg-emerald-500/15 text-emerald-600 dark:text-emerald-400'\n : 'bg-rose-500/15 text-rose-600 dark:text-rose-400',\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n <span className=\"text-sm leading-relaxed text-foreground/80\">{item}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n })}\n </FadeIn>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Menu } from 'lucide-react';\nimport { Button, Separator, Sheet, SheetContent, SheetTrigger } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface NavbarProps {\n brand: { name: string; logo?: React.ReactNode; href?: string };\n navLinks: Array<{ label: string; href: string }>;\n cta?: {\n primary?: { label: string; href: string };\n secondary?: { label: string; href: string };\n };\n /** Icon-button controls rendered right-of-nav, left-of-CTA. Pass e.g. ModeSwitchMinimal, ThemeSwitchMinimal. */\n controls?: React.ReactNode[];\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Navbar({\n brand,\n navLinks,\n cta,\n controls,\n renderLink = defaultRenderLink,\n}: NavbarProps) {\n const [open, setOpen] = React.useState(false);\n const brandHref = brand.href ?? '/';\n const hasRightContent = controls?.length || cta?.primary || cta?.secondary;\n\n return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\n <nav className=\"grid h-16 grid-cols-[1fr_auto_1fr] items-center px-6\">\n {/* Brand — left column */}\n {renderLink({\n href: brandHref,\n children: (\n <span className=\"flex items-center gap-2 font-semibold\">\n {brand.logo}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n\n {/* Desktop nav links — center column when right content exists, else shift right */}\n <div className={`hidden items-center gap-1 md:flex ${!hasRightContent ? 'col-span-2 justify-end' : ''}`}>\n {navLinks.map((link) => (\n <span key={link.label}>\n {renderLink({\n href: link.href,\n className: 'rounded-md px-3 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground',\n children: link.label,\n })}\n </span>\n ))}\n </div>\n\n {/* Desktop right — controls + CTA */}\n {hasRightContent && (\n <div className=\"hidden items-center justify-end gap-2 md:flex\">\n {controls?.map((control, i) => (\n <React.Fragment key={i}>{control}</React.Fragment>\n ))}\n {(cta?.secondary || cta?.primary) && controls?.length ? (\n <div className=\"mx-1 h-4 w-px bg-border\" />\n ) : null}\n {cta?.secondary &&\n renderLink({\n href: cta.secondary.href,\n children: <Button variant=\"ghost\" size=\"sm\">{cta.secondary.label}</Button>,\n })}\n {cta?.primary &&\n renderLink({\n href: cta.primary.href,\n children: <Button size=\"sm\">{cta.primary.label}</Button>,\n })}\n </div>\n )}\n\n {/* Mobile drawer — trigger on the right, panel slides in from the left */}\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"col-start-3 justify-self-end md:hidden\">\n <Menu className=\"size-5\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"w-72\">\n {/* Brand row alone at the top — leaves the top-right corner to the built-in close */}\n <div className=\"flex items-center pb-4\">\n <span onClick={() => setOpen(false)} className=\"cursor-pointer\">\n {renderLink({\n href: brandHref,\n children: (\n <span className=\"flex items-center gap-2 font-semibold\">\n {brand.logo}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n </span>\n </div>\n {controls?.length ? (\n <div className=\"mb-4 flex w-full items-center justify-between gap-1\">\n {controls.map((control, i) => (\n <React.Fragment key={i}>{control}</React.Fragment>\n ))}\n </div>\n ) : null}\n <Separator />\n <nav className=\"mt-4 flex flex-col gap-1\">\n {navLinks.map((link) => (\n <span key={link.label} onClick={() => setOpen(false)}>\n {renderLink({\n href: link.href,\n className: 'block rounded-md px-3 py-2 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground',\n children: link.label,\n })}\n </span>\n ))}\n </nav>\n <div className=\"mt-6 flex flex-col gap-2\">\n {cta?.secondary &&\n renderLink({\n href: cta.secondary.href,\n children: <Button variant=\"outline\" className=\"w-full\">{cta.secondary.label}</Button>,\n })}\n {cta?.primary &&\n renderLink({\n href: cta.primary.href,\n children: <Button className=\"w-full\">{cta.primary.label}</Button>,\n })}\n </div>\n </SheetContent>\n </Sheet>\n </nav>\n </section>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { StatusIndicator } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface FooterProps {\n brand: { name: string; logo?: ReactNode; href?: string };\n navLinks?: Array<{ label: string; href: string }>;\n socialLinks?: Array<{ label: string; href: string; icon: ReactNode }>;\n legal?: string;\n status?: { label: string; operational?: boolean };\n renderLink?: AppShellRenderLink;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Footer({\n brand,\n navLinks,\n socialLinks,\n legal,\n status,\n renderLink = defaultRenderLink,\n}: FooterProps) {\n const brandHref = brand.href ?? '/';\n const copyrightText = legal ?? `\\u00A9 ${new Date().getFullYear()} ${brand.name}. All rights reserved.`;\n\n return (\n <footer className=\"overflow-hidden rounded-2xl border bg-card text-foreground\">\n <div className=\"mx-auto max-w-7xl px-6 py-20 sm:py-24 lg:px-8\">\n {/* Brand */}\n <div className=\"flex justify-center\">\n {renderLink({\n href: brandHref,\n className: 'flex items-center gap-2',\n children: (\n <>\n {brand.logo}\n <span className=\"text-lg font-semibold text-foreground\">{brand.name}</span>\n </>\n ),\n })}\n </div>\n\n {/* Nav links */}\n {navLinks && navLinks.length > 0 && (\n <nav className=\"mt-10 flex flex-wrap justify-center gap-x-12 gap-y-3\" aria-label=\"Footer\">\n {navLinks.map(({ label, href }) => (\n <div key={label}>\n {renderLink({\n href,\n className: 'text-sm/6 text-muted-foreground transition-colors hover:text-foreground',\n children: label,\n })}\n </div>\n ))}\n </nav>\n )}\n\n {/* Social icons */}\n {socialLinks && socialLinks.length > 0 && (\n <div className=\"mt-10 flex justify-center gap-x-10\">\n {socialLinks.map(({ label, href, icon }) => (\n <a\n key={label}\n href={href}\n aria-label={label}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n >\n {icon}\n </a>\n ))}\n </div>\n )}\n\n {/* Copyright */}\n <p className=\"mt-10 text-center text-sm/6 text-muted-foreground/70\">\n {copyrightText}\n </p>\n\n {/* Status */}\n {status && (\n <div className=\"mt-4 flex justify-center\">\n <div className=\"inline-flex items-center rounded-full border bg-muted/40 px-3 py-1 text-xs text-muted-foreground\">\n <StatusIndicator\n pulse={status.operational !== false}\n dotClassName={status.operational !== false ? 'text-emerald-500' : 'text-destructive'}\n size=\"sm\"\n >\n {status.label}\n </StatusIndicator>\n </div>\n </div>\n )}\n </div>\n </footer>\n );\n}\n","'use client';\n\nimport { FadeIn } from '../motion/FadeIn';\n\nexport interface LogoStripProps {\n logos: Array<{ src: string; darkSrc?: string; alt: string; href?: string }>;\n label?: string;\n speed?: 'slow' | 'normal' | 'fast';\n}\n\nconst speedDuration = {\n slow: '60s',\n normal: '40s',\n fast: '25s',\n} as const;\n\nexport function LogoStrip({\n logos,\n label,\n speed = 'normal',\n}: LogoStripProps) {\n const duration = speedDuration[speed];\n\n return (\n <FadeIn direction=\"up\">\n <section className=\"overflow-hidden py-8\">\n {label && (\n <p className=\"mb-6 text-center text-sm text-muted-foreground\">{label}</p>\n )}\n <div\n className=\"relative\"\n style={{\n maskImage: 'linear-gradient(to right, transparent, black 10%, black 90%, transparent)',\n WebkitMaskImage: 'linear-gradient(to right, transparent, black 10%, black 90%, transparent)',\n }}\n >\n <div\n className=\"flex w-max gap-12\"\n style={{\n animation: `logo-strip-scroll ${duration} linear infinite`,\n }}\n >\n {/* Render logos twice for seamless loop */}\n {[...logos, ...logos].map((logo, i) => {\n const img = logo.darkSrc ? (\n <>\n <img\n src={logo.src}\n alt={logo.alt}\n className=\"h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:hidden\"\n />\n <img\n src={logo.darkSrc}\n alt={logo.alt}\n className=\"hidden h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:block\"\n />\n </>\n ) : (\n <img\n src={logo.src}\n alt={logo.alt}\n className=\"h-8 w-auto object-contain opacity-60 grayscale transition-all hover:opacity-100 hover:grayscale-0\"\n />\n );\n\n return logo.href ? (\n <a\n key={`${logo.alt}-${i}`}\n href={logo.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex shrink-0 items-center\"\n >\n {img}\n </a>\n ) : (\n <div key={`${logo.alt}-${i}`} className=\"flex shrink-0 items-center\">\n {img}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n\n <style>{`\n @keyframes logo-strip-scroll {\n from { transform: translateX(0); }\n to { transform: translateX(-50%); }\n }\n `}</style>\n </FadeIn>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\n// ─── Grid ─────────────────────────────────────────────────────────────────────\n\ninterface GridUnderlayProps extends React.SVGAttributes<SVGElement> {\n variant: 'dots' | 'lines' | 'cross';\n size?: number;\n className?: string;\n}\n\nfunction GridUnderlay({ variant, size = 24, className, ...props }: GridUnderlayProps) {\n const id = React.useId();\n\n const pattern =\n variant === 'dots' ? (\n <circle cx={size / 2} cy={size / 2} r={1} fill=\"currentColor\" />\n ) : variant === 'lines' ? (\n <path d={`M ${size} 0 L 0 0 0 ${size}`} fill=\"none\" stroke=\"currentColor\" strokeWidth={0.5} />\n ) : (\n <>\n <line x1={size / 2} y1={0} x2={size / 2} y2={size} stroke=\"currentColor\" strokeWidth={0.5} />\n <line x1={0} y1={size / 2} x2={size} y2={size / 2} stroke=\"currentColor\" strokeWidth={0.5} />\n </>\n );\n\n return (\n <svg\n aria-hidden=\"true\"\n className={cn('pointer-events-none absolute inset-0 h-full w-full text-foreground/15', className)}\n {...props}\n >\n <defs>\n <pattern id={id} width={size} height={size} patternUnits=\"userSpaceOnUse\">\n {pattern}\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" fill={`url(#${id})`} />\n </svg>\n );\n}\n\n// ─── Glow ─────────────────────────────────────────────────────────────────────\n\nconst blurClass = { sm: 'blur-xl', md: 'blur-2xl', lg: 'blur-3xl', xl: 'blur-[80px]' } as const;\n\ninterface GlowUnderlayProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: number;\n color?: string;\n followCursor?: boolean;\n blur?: keyof typeof blurClass;\n}\n\nfunction GlowUnderlay({\n size = 400,\n color = 'color-mix(in oklch, var(--primary) 45%, transparent)',\n followCursor = false,\n blur = 'lg',\n className,\n style,\n ...props\n}: GlowUnderlayProps) {\n const [pos, setPos] = React.useState({ x: '50%', y: '50%' });\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!followCursor) return;\n const handleMouseMove = (e: MouseEvent) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n setPos({ x: `${e.clientX - rect.left}px`, y: `${e.clientY - rect.top}px` });\n };\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [followCursor]);\n\n return (\n <div ref={containerRef} className={cn('pointer-events-none absolute inset-0 overflow-hidden', className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn('absolute rounded-full', blurClass[blur])}\n style={{\n width: size,\n height: size,\n background: color,\n left: pos.x,\n top: pos.y,\n transform: 'translate(-50%, -50%)',\n ...style,\n }}\n />\n </div>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\ntype UnderlayVariant = 'dots' | 'lines' | 'cross' | 'glow';\n\ntype UnderlayProps =\n | ({ variant: 'dots' | 'lines' | 'cross' } & Omit<GridUnderlayProps, 'variant'>)\n | ({ variant: 'glow' } & Omit<GlowUnderlayProps, 'variant'>);\n\nexport function Underlay(props: UnderlayProps) {\n if (props.variant === 'glow') {\n return <GlowUnderlay {...(props as GlowUnderlayProps)} />;\n }\n return <GridUnderlay {...(props as GridUnderlayProps)} />;\n}\n\nexport type { UnderlayProps, UnderlayVariant };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\nimport { Loader2 } from 'lucide-react';\n\n// ─── Dim ──────────────────────────────────────────────────────────────────────\n\ninterface DimOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n opacity?: number;\n}\n\nfunction DimOverlay({ opacity = 0.5, className, style, ...props }: DimOverlayProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn('absolute inset-0 bg-background', className)}\n style={{ opacity, ...style }}\n {...props}\n />\n );\n}\n\n// ─── Scrim ────────────────────────────────────────────────────────────────────\n\ntype ScrimDirection = 'top' | 'bottom' | 'left' | 'right';\n\ninterface ScrimOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: ScrimDirection;\n color?: string;\n}\n\nconst scrimGradients: Record<ScrimDirection, string> = {\n bottom: 'to bottom',\n top: 'to top',\n left: 'to left',\n right: 'to right',\n};\n\nfunction ScrimOverlay({ direction = 'bottom', color = 'var(--background)', className, style, ...props }: ScrimOverlayProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn('pointer-events-none absolute inset-x-0 bottom-0 h-1/2', className)}\n style={{\n background: `linear-gradient(${scrimGradients[direction]}, transparent, ${color})`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\n// ─── Loading ──────────────────────────────────────────────────────────────────\n\ninterface LoadingOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n}\n\nfunction LoadingOverlay({ label, className, ...props }: LoadingOverlayProps) {\n return (\n <div\n role=\"status\"\n className={cn('absolute inset-0 flex flex-col items-center justify-center gap-2 bg-background/80 backdrop-blur-sm', className)}\n {...props}\n >\n <Loader2 className=\"size-5 animate-spin text-muted-foreground\" />\n {label && <p className=\"text-xs text-muted-foreground\">{label}</p>}\n </div>\n );\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\ntype OverlayVariant = 'dim' | 'scrim' | 'loading';\n\ntype OverlayProps =\n | ({ variant: 'dim' } & DimOverlayProps)\n | ({ variant: 'scrim' } & ScrimOverlayProps)\n | ({ variant: 'loading' } & LoadingOverlayProps);\n\nexport function Overlay(props: OverlayProps) {\n if (props.variant === 'dim') return <DimOverlay {...(props as DimOverlayProps)} />;\n if (props.variant === 'scrim') return <ScrimOverlay {...(props as ScrimOverlayProps)} />;\n return <LoadingOverlay {...(props as LoadingOverlayProps)} />;\n}\n\nexport type { OverlayProps, OverlayVariant };\n","'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface AnimatedPillProps {\n labels: string[];\n interval?: number;\n className?: string;\n}\n\nexport function AnimatedPill({ labels, interval = 3800, className }: AnimatedPillProps) {\n const pillRef = useRef<HTMLSpanElement>(null);\n const textRef = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n const pill = pillRef.current;\n const text = textRef.current;\n if (!pill || !text || labels.length < 2) return;\n\n pill.style.width = pill.offsetWidth + 'px';\n pill.dataset.w = String(pill.offsetWidth);\n\n let idx = 0;\n\n const cycle = () => {\n idx = (idx + 1) % labels.length;\n\n text.style.transition = 'opacity 140ms ease';\n text.style.opacity = '0';\n\n setTimeout(() => {\n text.textContent = labels[idx] ?? '';\n\n const oldW = parseFloat(pill.dataset.w ?? '0');\n pill.style.transition = 'none';\n pill.style.width = 'auto';\n const newW = pill.offsetWidth;\n\n pill.style.width = oldW + 'px';\n void pill.offsetWidth;\n\n pill.style.transition = 'width 280ms cubic-bezier(0.4, 0, 0.2, 1)';\n pill.style.width = newW + 'px';\n pill.dataset.w = String(newW);\n\n setTimeout(() => {\n text.style.transition = 'opacity 140ms ease';\n text.style.opacity = '1';\n }, 260);\n }, 150);\n };\n\n const id = setInterval(cycle, interval);\n return () => clearInterval(id);\n }, [labels, interval]);\n\n if (!labels.length) return null;\n\n return (\n <span\n ref={pillRef}\n className={cn(\n 'inline-flex items-center overflow-hidden whitespace-nowrap rounded-full border bg-secondary px-2.5 py-0.5 text-xs font-semibold text-secondary-foreground',\n className,\n )}\n >\n <span ref={textRef}>{labels[0]}</span>\n </span>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface PageTransitionProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'fade' | 'slide-up' | 'slide-down';\n duration?: number;\n children: React.ReactNode;\n}\n\nexport function PageTransition({\n variant = 'fade',\n duration = 300,\n children,\n className,\n style,\n ...props\n}: PageTransitionProps) {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n const id = requestAnimationFrame(() => setMounted(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const initial: React.CSSProperties =\n variant === 'slide-up'\n ? { opacity: 0, transform: 'translateY(16px)' }\n : variant === 'slide-down'\n ? { opacity: 0, transform: 'translateY(-16px)' }\n : { opacity: 0 };\n\n const entered: React.CSSProperties = { opacity: 1, transform: 'translateY(0)' };\n\n return (\n <div\n className={cn(className)}\n style={{\n transition: `opacity ${duration}ms ease, transform ${duration}ms ease`,\n ...(mounted ? entered : initial),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Search } from 'lucide-react';\nimport {\n Badge,\n Button,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n cn,\n} from '@olwiba/cn';\n\nexport interface SpotlightItem {\n id: string;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n onSelect: () => void;\n}\n\nexport interface SpotlightGroup {\n heading: string;\n items: SpotlightItem[];\n}\n\nexport interface SpotlightProps {\n groups: SpotlightGroup[];\n placeholder?: string;\n trigger?: React.ReactNode;\n triggerClassName?: string;\n shortcut?: string;\n}\n\nexport function Spotlight({\n groups,\n placeholder = 'Search anything...',\n trigger,\n triggerClassName,\n shortcut = '⌘K',\n}: SpotlightProps) {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((v) => !v);\n }\n };\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, []);\n\n return (\n <>\n {trigger ? (\n <div onClick={() => setOpen(true)}>{trigger}</div>\n ) : (\n <Button\n variant=\"outline\"\n onClick={() => setOpen(true)}\n className={cn('w-64 justify-between text-muted-foreground', triggerClassName)}\n >\n <span className=\"flex items-center gap-2\">\n <Search className=\"size-4\" />\n {placeholder}\n </span>\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">{shortcut}</Badge>\n </Button>\n )}\n\n <CommandDialog open={open} onOpenChange={setOpen}>\n <CommandInput placeholder={placeholder} />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n {groups.map((group, i) => (\n <React.Fragment key={group.heading}>\n {i > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading}>\n {group.items.map((item) => (\n <CommandItem\n key={item.id}\n onSelect={() => { item.onSelect(); setOpen(false); }}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.description && (\n <span className=\"ml-2 text-xs text-muted-foreground\">{item.description}</span>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n </>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, cn } from '@olwiba/cn';\n\nexport interface DockItem {\n icon: LucideIcon;\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface DockProps extends React.HTMLAttributes<HTMLDivElement> {\n items: DockItem[];\n iconSize?: number;\n magnification?: number;\n}\n\nconst BASE = 40;\nconst MAGNIFY_RADIUS = 80;\n\nexport function Dock({ items, iconSize = BASE, magnification = 1.7, className, ...props }: DockProps) {\n const [mouseX, setMouseX] = React.useState<number | null>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n function getScale(index: number): number {\n if (mouseX === null || !containerRef.current) return 1;\n const container = containerRef.current;\n const buttons = container.querySelectorAll<HTMLElement>('[data-dock-item]');\n const btn = buttons[index];\n if (!btn) return 1;\n const rect = btn.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const distance = Math.abs(mouseX - centerX);\n if (distance > MAGNIFY_RADIUS) return 1;\n const t = 1 - distance / MAGNIFY_RADIUS;\n return 1 + (magnification - 1) * t;\n }\n\n return (\n <TooltipProvider delayDuration={0}>\n <div\n ref={containerRef}\n onMouseMove={(e) => setMouseX(e.clientX)}\n onMouseLeave={() => setMouseX(null)}\n className={cn(\n 'inline-flex items-end gap-2 rounded-2xl border bg-background/80 px-4 py-3 shadow-lg backdrop-blur-md',\n className,\n )}\n {...props}\n >\n {items.map((item, i) => {\n const scale = getScale(i);\n const size = iconSize * scale;\n\n const button = (\n <Tooltip key={item.label}>\n <TooltipTrigger asChild>\n <button\n data-dock-item\n onClick={item.onClick}\n className=\"flex items-center justify-center rounded-xl bg-muted text-foreground transition-colors hover:bg-accent\"\n style={{\n width: size,\n height: size,\n transition: 'width 100ms ease, height 100ms ease',\n transformOrigin: 'bottom center',\n }}\n aria-label={item.label}\n >\n <item.icon style={{ width: size * 0.5, height: size * 0.5 }} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\" sideOffset={8}>\n <p>{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n\n if (item.href) {\n return (\n <a key={item.label} href={item.href}>\n {button}\n </a>\n );\n }\n\n return button;\n })}\n </div>\n </TooltipProvider>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport {\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n ContextMenu as RadixContextMenu,\n} from '@olwiba/cn';\n\nexport interface ContextMenuAction {\n type: 'item';\n label: string;\n shortcut?: string;\n disabled?: boolean;\n onSelect?: () => void;\n}\n\nexport interface ContextMenuSeparatorDef {\n type: 'separator';\n}\n\nexport interface ContextMenuLabelDef {\n type: 'label';\n label: string;\n}\n\nexport interface ContextMenuSubDef {\n type: 'sub';\n label: string;\n items: ContextMenuDef[];\n}\n\nexport type ContextMenuDef = ContextMenuAction | ContextMenuSeparatorDef | ContextMenuLabelDef | ContextMenuSubDef;\n\nexport interface ContextMenuProps {\n items: ContextMenuDef[];\n children: React.ReactNode;\n}\n\nfunction renderItems(items: ContextMenuDef[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') return <ContextMenuSeparator key={i} />;\n if (item.type === 'label') return <ContextMenuLabel key={i}>{item.label}</ContextMenuLabel>;\n if (item.type === 'sub') {\n return (\n <ContextMenuSub key={i}>\n <ContextMenuSubTrigger>{item.label}</ContextMenuSubTrigger>\n <ContextMenuSubContent>{renderItems(item.items)}</ContextMenuSubContent>\n </ContextMenuSub>\n );\n }\n return (\n <ContextMenuItem key={i} disabled={item.disabled} onSelect={item.onSelect}>\n {item.label}\n {item.shortcut && <ContextMenuShortcut>{item.shortcut}</ContextMenuShortcut>}\n </ContextMenuItem>\n );\n });\n}\n\nexport function ContextMenu({ items, children }: ContextMenuProps) {\n return (\n <RadixContextMenu>\n <ContextMenuTrigger asChild>{children}</ContextMenuTrigger>\n <ContextMenuContent>\n {renderItems(items)}\n </ContextMenuContent>\n </RadixContextMenu>\n );\n}\n\nexport {\n ContextMenuCheckboxItem,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n};\n","'use client';\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '@olwiba/cn';\nimport type { UseConfirmReturn } from '../hooks/use-confirm';\n\nexport interface ConfirmDialogProps extends Pick<UseConfirmReturn, 'isOpen' | 'options' | 'handleConfirm' | 'handleCancel'> {\n destructive?: boolean;\n}\n\nexport function ConfirmDialog({ isOpen, options, handleConfirm, handleCancel, destructive = false }: ConfirmDialogProps) {\n return (\n <AlertDialog open={isOpen} onOpenChange={(open) => { if (!open) handleCancel(); }}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{options.title ?? 'Are you sure?'}</AlertDialogTitle>\n {options.description && (\n <AlertDialogDescription>{options.description}</AlertDialogDescription>\n )}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={handleCancel}>\n {options.cancelLabel ?? 'Cancel'}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirm}\n className={destructive ? 'bg-destructive text-destructive-foreground hover:bg-destructive/90' : undefined}\n >\n {options.confirmLabel ?? 'Confirm'}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\nfunction AppScreenRoot({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex h-full flex-col', className)}>\n {children}\n </div>\n );\n}\n\nfunction AppScreenHeader({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex items-center gap-2 border-b border-border px-4 py-3 shrink-0', className)}>\n {children}\n </div>\n );\n}\n\nfunction AppScreenBody({ children, className }: { children?: React.ReactNode; className?: string }) {\n return (\n <div className={cn('flex-1 overflow-auto px-4 py-3', className)}>\n {children}\n </div>\n );\n}\n\nexport const AppScreen = Object.assign(AppScreenRoot, {\n Header: AppScreenHeader,\n Body: AppScreenBody,\n});\n\nexport type { };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\n blur?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nconst blurClass = {\n sm: 'backdrop-blur-sm',\n md: 'backdrop-blur-md',\n lg: 'backdrop-blur-lg',\n};\n\nexport function GlassCard({ blur = 'md', className, children, ...props }: GlassCardProps) {\n return (\n <div\n className={cn(\n 'rounded-2xl border border-white/20 bg-background/50 shadow-sm',\n blurClass[blur],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '@olwiba/cn';\n\nexport interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n label: string;\n delta?: string;\n trend?: 'up' | 'down' | 'neutral';\n description?: string;\n}\n\nexport function StatCard({ value, label, delta, trend = 'neutral', description, className, ...props }: StatCardProps) {\n return (\n <div\n className={cn('rounded-2xl border bg-card p-5', className)}\n {...props}\n >\n <div className=\"text-sm text-muted-foreground\">{label}</div>\n <div className=\"mt-2 flex items-end justify-between gap-3\">\n <div className=\"text-3xl font-bold tracking-tight\">{value}</div>\n {delta && (\n <div\n className={cn(\n 'flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium',\n trend === 'up' && 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',\n trend === 'down' && 'bg-red-500/10 text-red-600 dark:text-red-400',\n trend === 'neutral' && 'bg-muted text-muted-foreground',\n )}\n >\n {trend === 'up' && <TrendingUp className=\"size-3\" />}\n {trend === 'down' && <TrendingDown className=\"size-3\" />}\n {delta}\n </div>\n )}\n </div>\n {description && (\n <p className=\"mt-1.5 text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface ImageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n src: string;\n alt?: string;\n overlay?: 'none' | 'subtle' | 'strong';\n aspectRatio?: 'video' | 'square' | 'portrait' | 'auto';\n children?: React.ReactNode;\n}\n\nconst overlayClass = {\n none: '',\n subtle: 'bg-gradient-to-t from-black/60 via-black/10 to-transparent',\n strong: 'bg-gradient-to-t from-black/80 via-black/30 to-black/10',\n};\n\nconst aspectClass = {\n video: 'aspect-video',\n square: 'aspect-square',\n portrait: 'aspect-[3/4]',\n auto: '',\n};\n\nexport function ImageCard({\n src,\n alt = '',\n overlay = 'subtle',\n aspectRatio = 'video',\n children,\n className,\n ...props\n}: ImageCardProps) {\n return (\n <div\n className={cn(\n 'group relative overflow-hidden rounded-2xl bg-muted',\n aspectClass[aspectRatio],\n className,\n )}\n {...props}\n >\n <img\n src={src}\n alt={alt}\n className=\"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n {overlay !== 'none' && (\n <div className={cn('absolute inset-0', overlayClass[overlay])} />\n )}\n {children && (\n <div className=\"absolute inset-0 flex flex-col justify-end p-5 text-white\">\n {children}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\n\nexport interface FlowConnectorProps {\n /** Line axis. Default: 'vertical'. */\n direction?: 'vertical' | 'horizontal';\n /**\n * CSS color string for the line and arrowhead.\n * Falls back to currentColor at reduced opacity when omitted.\n */\n color?: string;\n /** Show an open-chevron arrowhead at the destination end. Default: false. */\n arrow?: boolean;\n /** Show a traveling dot animation along the connector. Default: false. */\n animate?: boolean;\n /** Duration of the traveling dot animation. Default: '1.4s'. */\n animateDur?: string;\n /** CSS delay before the traveling dot animation starts. Default: '0s'. */\n animateDelay?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst DASH_ON = '5px';\nconst DASH_OFF = '4px';\n\n/**\n * Dashed connecting line between diagram nodes.\n * Control size via className (e.g. `h-10` for vertical, `w-16` for horizontal).\n * Pass `style` for fade/entrance animations — the wrapper inherits it.\n */\nexport function FlowConnector({\n direction = 'vertical',\n color,\n arrow = false,\n animate = false,\n animateDur = '1.4s',\n animateDelay = '0s',\n className,\n style,\n}: FlowConnectorProps) {\n const stroke = color ?? 'currentColor';\n const opacity = color ? 0.75 : 0.4;\n\n if (direction === 'vertical') {\n return (\n <div\n className={cn('relative flex flex-col items-center', className)}\n style={style}\n aria-hidden\n >\n {animate && (\n <style>{`@keyframes fc-dot-v{0%{top:-4px;opacity:0}8%{opacity:1}88%{opacity:1}100%{top:calc(100% + 4px);opacity:0}}`}</style>\n )}\n <div\n className=\"flex-1\"\n style={{\n width: 2,\n opacity,\n background: `repeating-linear-gradient(to bottom, ${stroke} 0, ${stroke} ${DASH_ON}, transparent ${DASH_ON}, transparent calc(${DASH_ON} + ${DASH_OFF}))`,\n }}\n />\n {animate && (\n <div\n style={{\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n width: 5,\n height: 5,\n borderRadius: '50%',\n backgroundColor: stroke,\n animation: `fc-dot-v ${animateDur} ease-in-out ${animateDelay} infinite both`,\n }}\n />\n )}\n {arrow && (\n <svg\n width=\"12\"\n height=\"7\"\n viewBox=\"0 0 12 7\"\n style={{ display: 'block', opacity }}\n aria-hidden\n >\n <polyline\n points=\"1,1 6,6 11,1\"\n fill=\"none\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n }\n\n return (\n <div\n className={cn('flex items-center', className)}\n style={style}\n aria-hidden\n >\n <div\n className=\"flex-1\"\n style={{\n height: 2,\n opacity,\n background: `repeating-linear-gradient(to right, ${stroke} 0, ${stroke} ${DASH_ON}, transparent ${DASH_ON}, transparent calc(${DASH_ON} + ${DASH_OFF}))`,\n }}\n />\n {arrow && (\n <svg\n width=\"7\"\n height=\"12\"\n viewBox=\"0 0 7 12\"\n style={{ display: 'block', opacity }}\n aria-hidden\n >\n <polyline\n points=\"1,1 6,6 1,11\"\n fill=\"none\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface FlowBracketProps {\n /**\n * Vertical anchor for the top connection as a percentage of the wrapper height (0–100).\n * Defaults to 8 (near the top of the first child).\n */\n anchorTop?: number;\n /** Per-side override for the top anchor of the left bracket. Falls back to anchorTop. */\n anchorTopLeft?: number;\n /** Per-side override for the top anchor of the right bracket. Falls back to anchorTop. */\n anchorTopRight?: number;\n /**\n * Vertical anchor for the bottom connection as a percentage of the wrapper height (0–100).\n * Defaults to 92 (near the bottom of the last child).\n */\n anchorBottom?: number;\n /**\n * How far outside the wrapper the bracket extends, in SVG units (viewBox width = 1000).\n * Defaults to 22.\n */\n extent?: number;\n /** Show open-chevron arrowhead at the destination end. Default: true. */\n arrow?: boolean;\n /** CSS color for both bracket lines and animated dots. Defaults to muted slate. */\n color?: string;\n /** Override color for the left bracket only. */\n colorLeft?: string;\n /** Override color for the right bracket only. */\n colorRight?: string;\n /** Show left bracket. Default: true. */\n left?: boolean;\n /** Show right bracket. Default: true. */\n right?: boolean;\n /**\n * Animate a dot traveling the L-path from the bottom anchor up to the top anchor\n * (sync → genesis/docs direction).\n * Dots are placed after {children} in DOM so positive-z-index card stacking contexts\n * naturally render above them.\n */\n animate?: boolean;\n /** Duration of one full dot journey. Default: '4s'. */\n animateDur?: string;\n /** Reverse the right bracket path direction so its arrowhead points DOWN (into sync). Default: false. */\n reverseRight?: boolean;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Wraps children in a relative container and draws square bracket lines on the\n * left and/or right outside edges — connecting the top of the first child down\n * to the bottom of the last child (e.g. docs → SYNC direction).\n *\n * Arrowheads are rendered as absolutely-positioned SVGs (not SVG markers) so\n * they render at a consistent pixel size regardless of the bracket SVG's aspect\n * ratio (which spans the full section height with preserveAspectRatio=\"none\").\n */\nexport function FlowBracket({\n anchorTop = 8,\n anchorTopLeft,\n anchorTopRight,\n anchorBottom = 92,\n extent = 22,\n arrow = true,\n color = 'rgba(148,163,184,0.4)',\n colorLeft,\n colorRight,\n left = true,\n right = true,\n animate = false,\n animateDur = '4s',\n reverseRight = false,\n style,\n className,\n children,\n}: FlowBracketProps) {\n const L = -extent;\n const R = 1000 + extent;\n\n const cl = colorLeft ?? color;\n const cr = colorRight ?? color;\n const aTL = anchorTopLeft ?? anchorTop;\n const aTR = anchorTopRight ?? anchorTop;\n\n // Left bracket: bottom → top (arrowhead at top, pointing right into genesis)\n const leftD = `M 0,${anchorBottom} L ${L},${anchorBottom} L ${L},${aTL} L 0,${aTL}`;\n // Right bracket: reversed = top → bottom (arrowhead at bottom, pointing left into sync)\n const rightD = reverseRight\n ? `M 1000,${aTR} L ${R},${aTR} L ${R},${anchorBottom} L 1000,${anchorBottom}`\n : `M 1000,${anchorBottom} L ${R},${anchorBottom} L ${R},${aTR} L 1000,${aTR}`;\n\n // CSS dot: extent as % of container width\n const ep = `${(extent / 10).toFixed(1)}%`;\n const dotKeyframes = animate ? `\n@keyframes fb-dl{\n 0%{top:${anchorBottom}%;left:0;opacity:0}\n 6%{opacity:1}\n 20%{top:${anchorBottom}%;left:-${ep}}\n 80%{top:${aTL}%;left:-${ep};opacity:1}\n 94%{top:${aTL}%;left:0;opacity:0}\n 100%{top:${aTL}%;left:0;opacity:0}\n}\n@keyframes fb-dr{\n 0%{top:${anchorBottom}%;left:100%;opacity:0}\n 6%{opacity:1}\n 20%{top:${anchorBottom}%;left:calc(100% + ${ep})}\n 80%{top:${aTR}%;left:calc(100% + ${ep});opacity:1}\n 94%{top:${aTR}%;left:100%;opacity:0}\n 100%{top:${aTR}%;left:100%;opacity:0}\n}\n@keyframes fb-drr{\n 0%{top:${aTR}%;left:100%;opacity:0}\n 6%{opacity:1}\n 20%{top:${aTR}%;left:calc(100% + ${ep})}\n 80%{top:${anchorBottom}%;left:calc(100% + ${ep});opacity:1}\n 94%{top:${anchorBottom}%;left:100%;opacity:0}\n 100%{top:${anchorBottom}%;left:100%;opacity:0}\n}` : '';\n\n const dotBase: React.CSSProperties = {\n position: 'absolute',\n width: 5,\n height: 5,\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n pointerEvents: 'none',\n opacity: 0,\n };\n\n // Shared arrowhead polyline props — same chevron shape as ecosystem connector markers\n const chevronProps = {\n fill: 'none',\n strokeWidth: '1.5',\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n };\n\n // Arrowhead SVG style — positioned in CSS space so it renders at a fixed pixel size\n // regardless of the bracket SVG's non-uniform scale (preserveAspectRatio=\"none\")\n const arrowBase: React.CSSProperties = {\n position: 'absolute',\n width: 10,\n height: 8,\n overflow: 'visible',\n pointerEvents: 'none',\n transform: 'translate(-50%, -50%)',\n };\n\n return (\n <div className={className} style={{ position: 'relative', ...style }}>\n {animate && <style>{dotKeyframes}</style>}\n <svg\n viewBox=\"0 0 1000 100\"\n preserveAspectRatio=\"none\"\n aria-hidden\n className=\"pointer-events-none absolute inset-0\"\n style={{ width: '100%', height: '100%', overflow: 'visible' }}\n >\n {left && (\n <path d={leftD} fill=\"none\" style={{ stroke: cl }} strokeWidth={1.5} strokeDasharray=\"5,4\"\n vectorEffect=\"non-scaling-stroke\" />\n )}\n {right && (\n <path d={rightD} fill=\"none\" style={{ stroke: cr }} strokeWidth={1.5} strokeDasharray=\"5,4\"\n vectorEffect=\"non-scaling-stroke\" />\n )}\n </svg>\n\n {/* Left bracket arrowhead — tip points right (→) into the genesis/docs tier */}\n {arrow && left && (\n <svg\n aria-hidden\n viewBox=\"0 0 10 8\"\n style={{ ...arrowBase, top: `${aTL}%`, left: 0 }}\n >\n <polyline points=\"1,1 8,4 1,7\" style={{ stroke: cl }} {...chevronProps} />\n </svg>\n )}\n\n {/* Right bracket arrowhead — tip points left (←) into the destination tier */}\n {arrow && right && (\n <svg\n aria-hidden\n viewBox=\"0 0 10 8\"\n style={{\n ...arrowBase,\n top: reverseRight ? `${anchorBottom}%` : `${aTR}%`,\n left: '100%',\n }}\n >\n <polyline points=\"9,1 2,4 9,7\" style={{ stroke: cr }} {...chevronProps} />\n </svg>\n )}\n\n {children}\n\n {/* Dots placed after children so card stacking contexts (z-index ≥ 1) render above */}\n {animate && left && (\n <div\n aria-hidden\n style={{ ...dotBase, backgroundColor: cl, animation: `fb-dl ${animateDur} ease-in-out 0s infinite` }}\n />\n )}\n {animate && right && (\n <div\n aria-hidden\n style={{ ...dotBase, backgroundColor: cr, animation: `${reverseRight ? 'fb-drr' : 'fb-dr'} ${animateDur} ease-in-out 1.8s infinite` }}\n />\n )}\n </div>\n );\n}\n","import { Spinner } from '@olwiba/cn';\n\ninterface FullPageSpinnerProps {\n message?: string;\n}\n\nexport function FullPageSpinner({ message }: FullPageSpinnerProps) {\n return (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-4\">\n <Spinner className=\"size-8\" />\n {message && <p className=\"text-muted-foreground text-sm\">{message}</p>}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PageHeaderBreadcrumb {\n label: string;\n href?: string;\n}\n\nexport interface PageHeaderBackButton {\n label?: string;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface PageHeaderProps {\n title: string;\n description?: string;\n breadcrumbs?: PageHeaderBreadcrumb[];\n backButton?: PageHeaderBackButton;\n renderLink?: AppShellRenderLink;\n className?: string;\n children?: React.ReactNode;\n}\n\nconst defaultRenderLink: AppShellRenderLink = ({ href, children, className }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function PageHeader({\n title,\n description,\n breadcrumbs,\n backButton,\n renderLink = defaultRenderLink,\n className,\n children,\n}: PageHeaderProps) {\n return (\n <div className={cn('flex flex-col gap-1 pb-6', className)}>\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav aria-label=\"Breadcrumb\" className=\"mb-2 flex items-center gap-1 text-sm text-muted-foreground\">\n {breadcrumbs.map((crumb, i) => {\n const isLast = i === breadcrumbs.length - 1;\n return (\n <React.Fragment key={i}>\n {i > 0 && <ChevronRight className=\"size-3.5 shrink-0\" />}\n {isLast || !crumb.href ? (\n <span className={cn(isLast && 'text-foreground font-medium')}>{crumb.label}</span>\n ) : (\n renderLink({\n href: crumb.href,\n children: crumb.label,\n className: 'hover:text-foreground transition-colors',\n })\n )}\n </React.Fragment>\n );\n })}\n </nav>\n )}\n\n {backButton && (\n <div className=\"mb-2\">\n {backButton.href ? (\n renderLink({\n href: backButton.href,\n children: (\n <>\n <ChevronLeft className=\"size-4\" />\n <span>{backButton.label ?? 'Back'}</span>\n </>\n ),\n className: 'inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors',\n })\n ) : (\n <button\n type=\"button\"\n onClick={backButton.onClick}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ChevronLeft className=\"size-4\" />\n <span>{backButton.label ?? 'Back'}</span>\n </button>\n )}\n </div>\n )}\n\n <div className=\"flex items-start justify-between gap-4\">\n <h1 className=\"text-2xl font-semibold tracking-tight\">{title}</h1>\n {children && <div className=\"flex shrink-0 items-center gap-2\">{children}</div>}\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Spinner } from '@olwiba/cn';\n\ninterface SuspensedProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function Suspensed({ children, fallback }: SuspensedProps) {\n return (\n <React.Suspense fallback={fallback ?? <Spinner />}>\n {children}\n </React.Suspense>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Moon, Sun } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\n\nfunction getInitialTheme(): 'light' | 'dark' {\n if (typeof document === 'undefined') return 'dark';\n const stored = localStorage.getItem('theme') as 'light' | 'dark' | null;\n return stored ?? (document.documentElement.classList.contains('dark') ? 'dark' : 'light');\n}\n\nexport function ThemeSwitchMinimal() {\n const [theme, setThemeState] = React.useState<'light' | 'dark'>(getInitialTheme);\n\n const toggle = () => {\n const next = theme === 'dark' ? 'light' : 'dark';\n setThemeState(next);\n localStorage.setItem('theme', next);\n document.documentElement.classList.toggle('dark', next === 'dark');\n };\n\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={toggle} className=\"size-8\" aria-label=\"Toggle theme\">\n <span\n key={theme}\n className=\"inline-flex size-4 items-center justify-center animate-in fade-in zoom-in-75 spin-in-90 duration-200 motion-reduce:animate-none\"\n >\n {theme === 'dark' ? <Sun className=\"size-4\" /> : <Moon className=\"size-4\" />}\n </span>\n </Button>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { LayoutGrid, Sparkles, Layers } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\nimport { useOlwibaUI, type UIMode } from '../context/OlwibaUIContext';\n\nconst MODES: UIMode[] = ['default', 'playful', 'smooth'];\n\nconst MODE_ICONS: Record<UIMode, React.ReactNode> = {\n default: <LayoutGrid className=\"size-4\" />,\n playful: <Sparkles className=\"size-4\" />,\n smooth: <Layers className=\"size-4\" />,\n};\n\nconst MODE_LABELS: Record<UIMode, string> = {\n default: 'Default mode',\n playful: 'Playful mode',\n smooth: 'Smooth mode',\n};\n\nexport function ModeSwitchMinimal() {\n const { mode, setMode } = useOlwibaUI();\n\n const cycle = () => {\n const idx = MODES.indexOf(mode);\n setMode(MODES[(idx + 1) % MODES.length]);\n };\n\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={cycle} className=\"size-8\" aria-label={MODE_LABELS[mode]}>\n <span\n key={mode}\n className=\"inline-flex size-4 items-center justify-center animate-in fade-in zoom-in-75 duration-200 motion-reduce:animate-none\"\n >\n {MODE_ICONS[mode]}\n </span>\n </Button>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Palette } from 'lucide-react';\nimport { Button, Popover, PopoverContent, PopoverTrigger } from '@olwiba/cn';\n\ninterface BrandColor {\n name: string;\n label: string;\n css: string;\n}\n\nconst BRAND_COLORS: BrandColor[] = [\n {\n name: 'zinc',\n label: 'Zinc',\n css: `\n :root { --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.708 0 0); }\n .dark { --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --ring: oklch(0.556 0 0); }\n `,\n },\n {\n name: 'blue',\n label: 'Blue',\n css: `\n :root { --primary: oklch(0.546 0.245 262.881); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.546 0.245 262.881); }\n .dark { --primary: oklch(0.623 0.214 259.815); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.623 0.214 259.815); }\n `,\n },\n {\n name: 'emerald',\n label: 'Emerald',\n css: `\n :root { --primary: oklch(0.596 0.145 163.225); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.596 0.145 163.225); }\n .dark { --primary: oklch(0.765 0.177 163.223); --primary-foreground: oklch(0.145 0 0); --ring: oklch(0.765 0.177 163.223); }\n `,\n },\n {\n name: 'purple',\n label: 'Purple',\n css: `\n :root { --primary: oklch(0.558 0.288 302.321); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.558 0.288 302.321); }\n .dark { --primary: oklch(0.714 0.203 305.504); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.714 0.203 305.504); }\n `,\n },\n {\n name: 'rose',\n label: 'Rose',\n css: `\n :root { --primary: oklch(0.645 0.246 16.439); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.645 0.246 16.439); }\n .dark { --primary: oklch(0.717 0.194 17.428); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.717 0.194 17.428); }\n `,\n },\n {\n name: 'orange',\n label: 'Orange',\n css: `\n :root { --primary: oklch(0.705 0.213 47.604); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.705 0.213 47.604); }\n .dark { --primary: oklch(0.792 0.184 70.08); --primary-foreground: oklch(0.145 0 0); --ring: oklch(0.792 0.184 70.08); }\n `,\n },\n {\n name: 'slate',\n label: 'Slate',\n css: `\n :root { --primary: oklch(0.446 0.043 257.281); --primary-foreground: oklch(0.985 0 0); --ring: oklch(0.446 0.043 257.281); }\n .dark { --primary: oklch(0.704 0.04 256.788); --primary-foreground: oklch(0.129 0.042 264.695); --ring: oklch(0.704 0.04 256.788); }\n `,\n },\n];\n\n// Preview hex values matched to each preset (used for swatch circles only)\nconst PREVIEW_HEX: Record<string, string> = {\n zinc: '#27272a',\n blue: '#3b82f6',\n emerald: '#10b981',\n purple: '#a855f7',\n rose: '#f43f5e',\n orange: '#f97316',\n slate: '#64748b',\n};\n\nconst STORAGE_KEY = 'brand-color';\nconst STYLE_ID = 'brand-color-override';\n\nfunction applyColor(color: BrandColor) {\n let el = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!el) {\n el = document.createElement('style');\n el.id = STYLE_ID;\n document.head.appendChild(el);\n }\n el.textContent = color.css;\n localStorage.setItem(STORAGE_KEY, color.name);\n}\n\nfunction getInitialColorName(): string {\n if (typeof localStorage === 'undefined') return 'emerald';\n return localStorage.getItem(STORAGE_KEY) ?? 'emerald';\n}\n\nexport function BrandColorSwitchMinimal() {\n const [active, setActive] = React.useState<string>(getInitialColorName);\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n const saved = localStorage.getItem(STORAGE_KEY) ?? 'emerald';\n const color = BRAND_COLORS.find((c) => c.name === saved);\n if (color) applyColor(color);\n }, []);\n\n function select(color: BrandColor) {\n applyColor(color);\n setActive(color.name);\n setOpen(false);\n }\n\n const activeHex = PREVIEW_HEX[active] ?? '#27272a';\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8\"\n aria-label=\"Change brand color\"\n >\n <span className=\"relative inline-flex size-4 items-center justify-center\">\n <Palette className=\"size-4\" />\n <span\n className={`absolute -bottom-0.5 -right-0.5 size-1.5 rounded-full ring-1 ring-background${\n active === 'zinc' ? ' dark:ring-white/25' : ''\n }`}\n style={{ background: activeHex }}\n />\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"end\">\n <p className=\"mb-2.5 text-xs font-medium text-muted-foreground\">Brand color</p>\n <div className=\"grid grid-cols-4 gap-1.5\">\n {BRAND_COLORS.map((color) => (\n <button\n key={color.name}\n type=\"button\"\n onClick={() => select(color)}\n title={color.label}\n className=\"group flex flex-col items-center gap-1\"\n >\n <span\n // Zinc's swatch is near-black — give it a border in dark mode so it\n // doesn't vanish into the popover background (transparent in light)\n className={`flex size-7 items-center justify-center rounded-full ring-offset-background transition-all group-hover:scale-110${\n color.name === 'zinc' ? ' border border-transparent dark:border-white/25' : ''\n }`}\n style={{\n background: PREVIEW_HEX[color.name],\n boxShadow:\n active === color.name\n ? `0 0 0 2px var(--background), 0 0 0 4px ${PREVIEW_HEX[color.name]}`\n : undefined,\n }}\n >\n {active === color.name && (\n <svg className=\"size-3 text-white\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\">\n <path d=\"M20 6L9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </span>\n <span className=\"text-[10px] text-muted-foreground\">{color.label}</span>\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\ninterface ThemeColorUpdaterProps {\n colorTheme?: string;\n}\n\n/**\n * Applies a data-theme attribute to the document root when a color theme is selected.\n * Use CSS selectors like `[data-theme=\"blue\"] { --primary: ... }` to apply theme colors.\n */\nexport function ThemeColorUpdater({ colorTheme }: ThemeColorUpdaterProps) {\n React.useEffect(() => {\n if (colorTheme) {\n document.documentElement.setAttribute('data-theme', colorTheme);\n } else {\n document.documentElement.removeAttribute('data-theme');\n }\n }, [colorTheme]);\n\n return null;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\ninterface VersionBannerProps {\n version: string;\n message?: string;\n className?: string;\n onDismiss?: () => void;\n}\n\nexport function VersionBanner({ version, message, className, onDismiss }: VersionBannerProps) {\n const [dismissed, setDismissed] = React.useState(false);\n\n if (dismissed) return null;\n\n return (\n <div className={cn('flex items-center justify-between gap-4 bg-primary/10 px-4 py-2 text-sm', className)}>\n <div className=\"flex items-center gap-2\">\n <span className=\"rounded bg-primary/20 px-1.5 py-0.5 font-mono text-xs font-semibold text-primary\">\n v{version}\n </span>\n {message && <span className=\"text-muted-foreground\">{message}</span>}\n </div>\n {onDismiss && (\n <button\n onClick={() => { setDismissed(true); onDismiss(); }}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n aria-label=\"Dismiss\"\n >\n <X className=\"size-4\" />\n </button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { cn } from '../lib/utils';\n\nexport interface DevBannerProps {\n environment?: string;\n className?: string;\n}\n\nexport function DevBanner({ environment = 'development', className }: DevBannerProps) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-2 bg-amber-500/15 px-4 py-1 text-xs font-medium text-amber-700 dark:text-amber-400',\n className,\n )}\n >\n <span className=\"size-1.5 rounded-full bg-amber-500\" />\n <span>{environment}</span>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface Hotkey {\n key: string;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n alt?: boolean;\n handler: () => void;\n description?: string;\n}\n\ninterface RegisterHotkeysProps {\n hotkeys: Hotkey[];\n}\n\nexport function RegisterHotkeys({ hotkeys }: RegisterHotkeysProps) {\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const hotkey of hotkeys) {\n const matches =\n event.key.toLowerCase() === hotkey.key.toLowerCase() &&\n !!event.ctrlKey === !!hotkey.ctrl &&\n !!event.metaKey === !!hotkey.meta &&\n !!event.shiftKey === !!hotkey.shift &&\n !!event.altKey === !!hotkey.alt;\n\n if (matches) {\n event.preventDefault();\n hotkey.handler();\n break;\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkeys]);\n\n return null;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { AlertTriangle } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\n\ninterface RootErrorFallbackProps {\n error: Error;\n reset: () => void;\n}\n\nexport function RootErrorFallback({ error, reset }: RootErrorFallbackProps) {\n return (\n <div className=\"flex min-h-svh flex-col items-center justify-center gap-6 p-8 text-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <AlertTriangle className=\"size-12 text-destructive\" />\n <h2 className=\"text-xl font-semibold\">Something went wrong</h2>\n <p className=\"max-w-md text-sm text-muted-foreground\">\n {error.message || 'An unexpected error occurred.'}\n </p>\n </div>\n <Button onClick={reset} variant=\"outline\">\n Try again\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PostAuthor {\n name: string;\n role?: string;\n avatar?: string;\n}\n\nexport interface PostCardProps {\n title: string;\n description?: string;\n date: string;\n slug: string;\n image?: string;\n tags?: string[];\n author?: PostAuthor;\n hrefPrefix?: string;\n tagHrefPrefix?: string;\n renderLink?: AppShellRenderLink;\n}\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n}\n\nexport function PostCard({\n title,\n description,\n date,\n slug,\n image,\n tags,\n author,\n hrefPrefix = '/blog',\n tagHrefPrefix = '/blog/tag',\n renderLink,\n}: PostCardProps) {\n const href = `${hrefPrefix}/${slug}`;\n\n const LinkWrapper = ({\n href: linkHref,\n children,\n className,\n }: {\n href: string;\n children: React.ReactNode;\n className?: string;\n }) =>\n renderLink ? (\n renderLink({ href: linkHref, children, className })\n ) : (\n <a href={linkHref} className={className}>\n {children}\n </a>\n );\n\n return (\n <article className=\"group relative flex flex-col items-start\">\n <div className=\"relative w-full overflow-hidden rounded-2xl bg-muted\">\n {image ? (\n <img\n src={image}\n alt={title}\n className=\"aspect-video w-full object-cover transition-transform duration-500 group-hover:scale-[1.03]\"\n />\n ) : (\n <div\n aria-hidden\n className=\"aspect-video w-full bg-gradient-to-br from-primary/15 via-muted to-muted\"\n />\n )}\n <div className=\"pointer-events-none absolute inset-0 rounded-2xl ring-1 ring-inset ring-foreground/10\" />\n </div>\n\n <div className=\"flex w-full grow flex-col\">\n <div className=\"mt-6 flex flex-wrap items-center gap-x-3 gap-y-2 text-xs\">\n <time dateTime={date} className=\"text-muted-foreground\">\n {formatDate(date)}\n </time>\n {tags?.map((tag) => (\n <LinkWrapper\n key={tag}\n href={`${tagHrefPrefix}/${encodeURIComponent(tag)}`}\n className=\"relative z-10 rounded-full bg-muted px-3 py-1.5 font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n >\n {tag}\n </LinkWrapper>\n ))}\n </div>\n\n <div className=\"grow\">\n <h2 className=\"mt-3 text-lg font-semibold leading-snug tracking-tight transition-colors group-hover:text-primary\">\n <LinkWrapper href={href}>\n <span className=\"absolute inset-0\" aria-hidden />\n {title}\n </LinkWrapper>\n </h2>\n {description && (\n <p className=\"mt-3 line-clamp-3 text-sm leading-6 text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n\n {author && (\n <div className=\"mt-6 flex items-center gap-x-3\">\n {author.avatar ? (\n <img\n src={author.avatar}\n alt={author.name}\n className=\"size-9 rounded-full bg-muted object-cover\"\n />\n ) : (\n <span\n aria-hidden\n className=\"flex size-9 items-center justify-center rounded-full bg-muted text-sm font-semibold text-muted-foreground\"\n >\n {author.name.charAt(0).toUpperCase()}\n </span>\n )}\n <div className=\"text-sm leading-tight\">\n <p className=\"font-semibold\">{author.name}</p>\n {author.role && <p className=\"text-muted-foreground\">{author.role}</p>}\n </div>\n </div>\n )}\n </div>\n </article>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '@olwiba/cn';\nimport { PostCard, type PostCardProps } from './PostCard';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface PostListProps {\n posts: PostCardProps[];\n renderLink?: AppShellRenderLink;\n emptyMessage?: string;\n /** Max columns at the widest breakpoint. */\n columns?: 2 | 3;\n className?: string;\n}\n\nexport function PostList({\n posts,\n renderLink,\n emptyMessage = 'No posts published yet.',\n columns = 3,\n className,\n}: PostListProps) {\n if (posts.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground italic\">{emptyMessage}</p>\n );\n }\n\n return (\n <div\n className={cn(\n 'grid grid-cols-1 gap-x-8 gap-y-14 sm:grid-cols-2',\n columns === 3 && 'lg:grid-cols-3',\n className,\n )}\n >\n {posts.map((post) => (\n <PostCard key={post.slug} {...post} renderLink={renderLink} />\n ))}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { ArrowRight } from 'lucide-react';\nimport type { AppShellRenderLink } from '../app/AppShell';\n\nexport type ChangelogReleaseType = 'release' | 'fix' | 'enhancement';\n\nexport interface ChangelogHighlight {\n title: string;\n description: string;\n}\n\nexport interface ChangelogCardProps {\n title: string;\n summary: string;\n date: string;\n slug: string;\n version?: string;\n releaseType?: ChangelogReleaseType;\n highlights?: ChangelogHighlight[];\n hrefPrefix?: string;\n renderLink?: AppShellRenderLink;\n}\n\nconst releaseTypeLabel: Record<ChangelogReleaseType, string> = {\n release: 'Major Release',\n fix: 'Fix',\n enhancement: 'Enhancement',\n};\n\nconst releaseTypeVariant: Record<ChangelogReleaseType, 'default' | 'secondary' | 'outline'> = {\n release: 'default',\n fix: 'outline',\n enhancement: 'secondary',\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n}\n\nexport function ChangelogCard({\n title,\n summary,\n date,\n slug,\n version,\n releaseType,\n highlights,\n hrefPrefix = '/changelog',\n renderLink,\n}: ChangelogCardProps) {\n const href = `${hrefPrefix}/${slug}`;\n\n const LinkWrapper = ({\n children,\n className,\n }: {\n children: React.ReactNode;\n className?: string;\n }) =>\n renderLink ? (\n renderLink({ href, children, className })\n ) : (\n <a href={href} className={className}>\n {children}\n </a>\n );\n\n const hasHighlights = highlights && highlights.length > 0;\n\n return (\n <article\n className={cn(\n 'flex flex-col gap-5 rounded-2xl border border-border bg-card p-6 sm:p-8',\n !hasHighlights && 'border-b border-border/60 rounded-none bg-transparent p-0 pb-8 last:pb-0 last:border-0',\n )}\n >\n {/* Header row */}\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <time className=\"text-sm text-muted-foreground\" dateTime={date}>\n {formatDate(date)}\n </time>\n {version && (\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">\n {version}\n </Badge>\n )}\n {releaseType && (\n <Badge variant={releaseTypeVariant[releaseType]} className=\"text-xs\">\n {releaseTypeLabel[releaseType]}\n </Badge>\n )}\n </div>\n <LinkWrapper className=\"inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline\">\n Read update\n <ArrowRight className=\"size-3.5\" />\n </LinkWrapper>\n </div>\n\n {/* Title + summary */}\n <div>\n <h2 className=\"text-lg font-semibold leading-snug tracking-tight\">\n <LinkWrapper className=\"transition-colors hover:text-primary\">{title}</LinkWrapper>\n </h2>\n <p className=\"mt-2 text-sm leading-relaxed text-muted-foreground\">{summary}</p>\n </div>\n\n {/* Highlights grid */}\n {hasHighlights && (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {highlights.map((h) => (\n <div\n key={h.title}\n className=\"rounded-xl border border-border/70 bg-background p-4\"\n >\n <p className=\"text-sm font-semibold leading-snug\">{h.title}</p>\n <p className=\"mt-1 text-xs leading-relaxed text-muted-foreground\">{h.description}</p>\n </div>\n ))}\n </div>\n )}\n </article>\n );\n}\n","'use client';\n\nimport type { AppShellRenderLink } from '../app/AppShell';\nimport { ChangelogCard, type ChangelogCardProps } from './ChangelogCard';\n\nexport interface ChangelogListProps {\n entries: ChangelogCardProps[];\n renderLink?: AppShellRenderLink;\n emptyMessage?: string;\n hrefPrefix?: string;\n}\n\nexport function ChangelogList({\n entries,\n renderLink,\n emptyMessage = 'No changelog entries yet.',\n hrefPrefix,\n}: ChangelogListProps) {\n if (entries.length === 0) {\n return <p className=\"text-sm italic text-muted-foreground\">{emptyMessage}</p>;\n }\n\n return (\n <div className=\"flex flex-col gap-8\">\n {entries.map((entry) => (\n <ChangelogCard\n key={entry.slug}\n {...entry}\n hrefPrefix={hrefPrefix}\n renderLink={renderLink}\n />\n ))}\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport function useMounted() {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return mounted;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface ConfirmOptions {\n title?: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n}\n\nexport interface UseConfirmReturn {\n confirm: (options?: ConfirmOptions) => Promise<boolean>;\n isOpen: boolean;\n options: ConfirmOptions;\n handleConfirm: () => void;\n handleCancel: () => void;\n}\n\n/**\n * Headless confirmation hook. Returns state and handlers for building a confirm dialog.\n *\n * @example\n * const { confirm, isOpen, options, handleConfirm, handleCancel } = useConfirm();\n *\n * // Trigger confirmation\n * const ok = await confirm({ title: 'Delete item?', description: 'This cannot be undone.' });\n *\n * // Wire up your dialog\n * <AlertDialog open={isOpen}>\n * <AlertDialogContent>\n * <AlertDialogTitle>{options.title}</AlertDialogTitle>\n * <AlertDialogFooter>\n * <AlertDialogCancel onClick={handleCancel} />\n * <AlertDialogAction onClick={handleConfirm} />\n * </AlertDialogFooter>\n * </AlertDialogContent>\n * </AlertDialog>\n */\nexport function useConfirm(): UseConfirmReturn {\n const [isOpen, setIsOpen] = React.useState(false);\n const [options, setOptions] = React.useState<ConfirmOptions>({});\n const resolveRef = React.useRef<((value: boolean) => void) | null>(null);\n\n const confirm = React.useCallback((opts: ConfirmOptions = {}): Promise<boolean> => {\n setOptions(opts);\n setIsOpen(true);\n return new Promise<boolean>((resolve) => {\n resolveRef.current = resolve;\n });\n }, []);\n\n const handleConfirm = React.useCallback(() => {\n resolveRef.current?.(true);\n setIsOpen(false);\n }, []);\n\n const handleCancel = React.useCallback(() => {\n resolveRef.current?.(false);\n setIsOpen(false);\n }, []);\n\n return { confirm, isOpen, options, handleConfirm, handleCancel };\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface UseControlledOpenReturn {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\n/**\n * Simple open/close state hook for modals, drawers, dropdowns, and any toggleable UI.\n *\n * @example\n * const { isOpen, open, close } = useControlledOpen();\n * return (\n * <>\n * <Button onClick={open}>Open</Button>\n * <Dialog open={isOpen} onOpenChange={setIsOpen}>...</Dialog>\n * </>\n * );\n */\nexport function useControlledOpen(defaultOpen = false): UseControlledOpenReturn {\n const [isOpen, setIsOpen] = React.useState(defaultOpen);\n\n const open = React.useCallback(() => setIsOpen(true), []);\n const close = React.useCallback(() => setIsOpen(false), []);\n const toggle = React.useCallback(() => setIsOpen((prev) => !prev), []);\n\n return { isOpen, open, close, toggle, setIsOpen };\n}\n","'use client';\n\nimport * as React from 'react';\n\n/**\n * Returns true when the page has scrolled past a given Y threshold in pixels.\n * Useful for showing/hiding sticky headers, back-to-top buttons, etc.\n *\n * @example\n * const scrolledPast = useScrolledPast(100);\n * return <header className={scrolledPast ? 'shadow-md' : ''}>...</header>;\n */\nexport function useScrolledPast(threshold: number): boolean {\n const [scrolledPast, setScrolledPast] = React.useState(false);\n\n React.useEffect(() => {\n const handleScroll = () => {\n setScrolledPast(window.scrollY > threshold);\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, [threshold]);\n\n return scrolledPast;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useCopyToClipboard(): [boolean, (text: string) => void] {\n const [copied, setCopied] = React.useState(false);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const copy = React.useCallback((text: string) => {\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setCopied(false), 2000);\n });\n }, []);\n\n React.useEffect(() => () => clearTimeout(timeoutRef.current), []);\n\n return [copied, copy];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debounced, setDebounced] = React.useState(value);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debounced;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useIntersectionObserver(\n options?: IntersectionObserverInit,\n): [React.RefObject<Element | null>, boolean] {\n const ref = React.useRef<Element | null>(null);\n const [isIntersecting, setIsIntersecting] = React.useState(false);\n\n React.useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const observer = new IntersectionObserver(([entry]) => {\n setIsIntersecting(entry.isIntersecting);\n }, options);\n\n observer.observe(el);\n return () => observer.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return [ref, isIntersecting];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {\n const [storedValue, setStoredValue] = React.useState<T>(() => {\n if (typeof window === 'undefined') return initialValue;\n try {\n const item = window.localStorage.getItem(key);\n return item ? (JSON.parse(item) as T) : initialValue;\n } catch {\n return initialValue;\n }\n });\n\n const setValue = React.useCallback(\n (value: T) => {\n try {\n setStoredValue(value);\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n } catch {\n // Silently ignore — private browsing may block localStorage writes\n }\n },\n [key],\n );\n\n return [storedValue, setValue];\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = React.useState(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mql = window.matchMedia(query);\n setMatches(mql.matches);\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches);\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, [query]);\n\n return matches;\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface UsePaginationReturn {\n page: number;\n pageSize: number;\n totalPages: number;\n offset: number;\n hasPrev: boolean;\n hasNext: boolean;\n goTo: (page: number) => void;\n next: () => void;\n prev: () => void;\n}\n\nexport function usePagination(total: number, pageSize: number): UsePaginationReturn {\n const [page, setPage] = React.useState(1);\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n const offset = (page - 1) * pageSize;\n\n const goTo = React.useCallback(\n (p: number) => setPage(Math.min(Math.max(1, p), totalPages)),\n [totalPages],\n );\n\n const next = React.useCallback(() => goTo(page + 1), [page, goTo]);\n const prev = React.useCallback(() => goTo(page - 1), [page, goTo]);\n\n return { page, pageSize, totalPages, offset, hasPrev: page > 1, hasNext: page < totalPages, goTo, next, prev };\n}\n"]}