@olwiba/ui 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +10 -6
- package/dist/index.js +66 -35
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ModeSwitchMinimal.tsx +40 -0
- package/src/components/RootErrorFallback.tsx +5 -7
- package/src/context/OlwibaUIContext.tsx +5 -2
- package/src/index.ts +1 -0
- package/src/marketing/Navbar.tsx +30 -20
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/CtaSection.tsx","../src/components/PricingCard.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/components/ThemeSwitchMinimal.tsx","../src/marketing/Navbar.tsx","../src/marketing/Footer.tsx","../src/marketing/LogoStrip.tsx","../src/overlays/Underlay.tsx","../src/overlays/Overlay.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/Spinner.tsx","../src/components/PageHeader.tsx","../src/components/Suspensed.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","Sparkles","Separator","React10","React11","React12","Input","Mail","defaults","React13","Label","Textarea","React14","React15","X","React16","React17","React18","React19","RadixContextMenu","blurClass","React20","React21","Spinner","React22","React23","React24","formatDate","useState","useEffect","React26","React27","React28","React29","React30","React31","React32","React33"],"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}\n\nconst OlwibaUIContext = React.createContext<OlwibaUIContextValue>({\n isMobile: false,\n mode: 'default',\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 = 'default' }: OlwibaUIProviderProps) {\n const detectedMobile = useIsMobile();\n const isMobile = isMobileProp ?? detectedMobile;\n\n const variant = mode !== 'default' ? (mode as UIVariant) : undefined;\n\n return (\n <OlwibaUIContext.Provider value={{ isMobile, mode }}>\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}\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}: AuthFormProps) {\n const isSignUp = mode === 'signup';\n\n return (\n <Card className=\"w-full\">\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 id=\"auth-email\" name=\"email\" type=\"email\" placeholder=\"name@company.com\" autoComplete=\"email\" />\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 />\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 } 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 content = (\n <div\n className={cn(\n 'group relative flex flex-col gap-4 rounded-2xl border bg-card p-6 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md',\n href && 'cursor-pointer',\n className,\n )}\n {...props}\n >\n <div className=\"flex h-10 w-10 items-center justify-center rounded-xl bg-primary/10 text-primary transition-colors group-hover:bg-primary group-hover:text-primary-foreground\">\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 if (href) {\n return <a href={href} className=\"block\">{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 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 { 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 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-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 { ArrowRight, Sparkles } from 'lucide-react';\nimport { Button } 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 return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\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=\"mb-4 inline-flex h-10 w-10 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\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 { Check, Minus } from 'lucide-react';\nimport { Badge, Button, cn, Separator } 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 badge?: string;\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 badge,\n onSelect,\n className,\n ...props\n}: PricingCardProps) {\n return (\n <div\n className={cn(\n 'relative flex flex-col rounded-2xl border p-6',\n highlighted ? 'border-primary bg-primary/5 shadow-sm' : 'bg-card',\n className,\n )}\n {...props}\n >\n {badge && (\n <div className=\"absolute -top-3 left-1/2 -translate-x-1/2\">\n <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 >\n {cta}\n </Button>\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","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { PricingCard, type PricingFeature } from '../components/PricingCard';\nimport { StaggerChildren } from '../motion/StaggerChildren';\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 features: PricingFeature[];\n}\n\nexport interface PricingSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n plans: PricingPlan[];\n saveBadge?: string;\n isAuthenticated?: boolean;\n renderLink?: AppShellRenderLink;\n footnote?: string;\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}: PricingSectionProps) {\n const [annual, setAnnual] = React.useState(false);\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 <div className=\"mx-auto max-w-5xl\">\n {/* Header */}\n <div className=\"text-center\">\n {badge && (\n <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\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 */}\n <div className=\"mt-6 inline-flex items-center gap-3 rounded-full border bg-muted p-1\">\n <button\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 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 </div>\n\n {/* Plan cards */}\n <StaggerChildren className=\"mt-10 grid gap-4 lg:grid-cols-3\">\n {plans.map((plan) => {\n const price = annual ? plan.annual : plan.monthly;\n return (\n <PricingCard\n key={plan.name}\n name={plan.name}\n price={`$${price}`}\n period={price > 0 ? '/mo' : ''}\n description={plan.description}\n features={plan.features}\n cta={plan.cta}\n highlighted={plan.highlighted}\n badge={plan.highlighted ? 'Most popular' : undefined}\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 } 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 return (\n <div\n className={cn('flex flex-col gap-4 rounded-2xl border bg-card p-6', className)}\n {...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 rounded-xl\">\n <AvatarImage src={avatar} alt={name} />\n <AvatarFallback className=\"rounded-xl 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","'use client';\n\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 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 <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\nconst team = [\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 name: 'Daniel Frost',\n role: 'Senior Engineer',\n bio: 'Accessibility and performance specialist. If it doesn\\'t work with a keyboard, it\\'s broken.',\n avatar: 'https://ui.shadcn.com/avatars/04.png',\n initials: 'DF',\n social: { twitter: null, github: '#', linkedin: '#' },\n },\n {\n name: 'Aisha Okafor',\n role: 'Developer Relations',\n bio: 'Writes docs, builds examples, and makes sure every engineer can ship their first block in under an hour.',\n avatar: 'https://ui.shadcn.com/avatars/05.png',\n initials: 'AO',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Tom Halvorsen',\n role: 'Growth',\n bio: 'Turns happy users into loud advocates. Runs the community and keeps the changelog sharp.',\n avatar: 'https://ui.shadcn.com/avatars/06.png',\n initials: 'TH',\n social: { twitter: '#', github: null, linkedin: '#' },\n },\n];\n\nexport function TeamSection() {\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\">Team</Badge>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n The people behind Olwiba\n </h2>\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n A small team with deep experience in design systems, open source, and developer tooling.\n </p>\n </div>\n\n <div className=\"mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {team.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 <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 </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } 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 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-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 } 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 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_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 inline-flex h-10 w-10 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <Mail className=\"size-5\" />\n </div>\n\n <Badge variant=\"secondary\" className=\"mb-3\">\n {badge}\n </Badge>\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 { Mail, MapPin, MessageSquare, Phone, Send, type LucideIcon } from 'lucide-react';\nimport { Badge, Button, Input, Label, Separator, 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 successTitle?: string;\n successDescription?: string;\n sendAnotherLabel?: string;\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;\n}\n\nconst defaultContactInfoResolved: ContactInfoItem[] = [\n { icon: Mail, label: 'Email', value: 'hello@olwiba.com' },\n { icon: Phone, label: 'Phone', value: '+1 (555) 000-0000' },\n { icon: MapPin, label: 'Office', value: 'San Francisco, CA' },\n];\n\nconst defaults = {\n badge: 'Contact us',\n title: \"Let's talk\",\n description:\n \"Have a question or want to work together? Fill in the form and we'll get back to you within one business day.\",\n successTitle: 'Message sent',\n successDescription: \"Thanks for reaching out. We'll get back to you 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 = defaultContactInfoResolved,\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=\"grid lg:grid-cols-[1fr_1.4fr]\">\n <div className=\"relative overflow-hidden bg-primary px-8 py-12 text-primary-foreground\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_right,hsl(var(--primary-foreground)/0.1),transparent_60%)]\" />\n <div className=\"relative space-y-6\">\n <div>\n <Badge\n variant=\"secondary\"\n className=\"mb-3 bg-primary-foreground/15 text-primary-foreground hover:bg-primary-foreground/20\"\n >\n {badge}\n </Badge>\n <h2 className=\"text-2xl font-semibold\">{title}</h2>\n <p className=\"mt-2 text-sm text-primary-foreground/70\">{description}</p>\n </div>\n\n <Separator className=\"bg-primary-foreground/20\" />\n\n <div className=\"space-y-4\">\n {contactInfo.map(({ icon: Icon = Mail, label, value }) => (\n <div key={label} className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary-foreground/10\">\n <Icon className=\"size-4\" />\n </div>\n <div>\n <div className=\"text-xs text-primary-foreground/60\">{label}</div>\n <div className=\"text-sm font-medium\">{value}</div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n <div className=\"p-8\">\n {submitted ? (\n <div className=\"flex h-full min-h-[320px] flex-col items-center justify-center gap-4 text-center\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <MessageSquare className=\"size-6\" />\n </div>\n <div>\n <h3 className=\"font-semibold\">{successTitle}</h3>\n <p className=\"mt-1 text-sm text-muted-foreground\">{successDescription}</p>\n </div>\n <Button variant=\"outline\" onClick={() => setSubmitted(false)}>\n {sendAnotherLabel}\n </Button>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n <input\n type=\"text\"\n name=\"company\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-first\">First name</Label>\n <Input id=\"contact-first\" name=\"firstName\" placeholder=\"Olivia\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-last\">Last name</Label>\n <Input id=\"contact-last\" name=\"lastName\" placeholder=\"Reed\" required />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-email\">Email</Label>\n <Input id=\"contact-email\" name=\"email\" type=\"email\" placeholder=\"olivia@company.com\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-subject\">Subject</Label>\n <Input id=\"contact-subject\" name=\"subject\" placeholder=\"How can we help?\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-message\">Message</Label>\n <Textarea\n id=\"contact-message\"\n name=\"message\"\n placeholder=\"Tell us what you're working on...\"\n className=\"min-h-28 resize-none\"\n required\n />\n </div>\n <Button type=\"submit\" className=\"w-full\">\n Send message\n <Send className=\"ml-2 size-4\" />\n </Button>\n </form>\n )}\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Moon, Sun } from 'lucide-react';\nimport { Button } from '@olwiba/cn';\n\nexport function ThemeSwitchMinimal() {\n const [theme, setThemeState] = React.useState<'light' | 'dark'>('dark');\n\n React.useEffect(() => {\n const stored = localStorage.getItem('theme') as 'light' | 'dark' | null;\n const resolved = stored ?? (document.documentElement.classList.contains('dark') ? 'dark' : 'light');\n setThemeState(resolved);\n }, []);\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 { Menu, X } from 'lucide-react';\nimport { Button, Separator, Sheet, SheetContent, SheetTrigger } from '@olwiba/cn';\nimport type { AppShellRenderLink } from '../app/AppShell';\nimport { ThemeSwitchMinimal } from '../components/ThemeSwitchMinimal';\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 showThemeToggle?: boolean;\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 showThemeToggle = false,\n renderLink = defaultRenderLink,\n}: NavbarProps) {\n const [open, setOpen] = React.useState(false);\n const brandHref = brand.href ?? '/';\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 className=\"flex h-9 w-9 items-center justify-center rounded-xl bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n )}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n\n {/* Desktop nav links — center column, truly centered */}\n <div className=\"hidden items-center gap-1 md:flex\">\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 CTAs — right column, right-aligned */}\n <div className=\"hidden items-center justify-end gap-3 md:flex\">\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 {showThemeToggle && <ThemeSwitchMinimal />}\n </div>\n\n {/* Mobile drawer — right column on small screens */}\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"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=\"right\" className=\"w-72\">\n <div className=\"flex items-center justify-between 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 className=\"flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n )}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n </span>\n <div className=\"flex items-center gap-1\">\n {showThemeToggle && <ThemeSwitchMinimal />}\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setOpen(false)}>\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close menu</span>\n </Button>\n </div>\n </div>\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 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 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 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-muted 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=\"flex h-8 w-8 items-center justify-center rounded-lg bg-foreground/10 text-foreground\">\n {brand.logo}\n </span>\n )}\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 </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 * 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","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';\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 resetErrorBoundary?: () => void;\n}\n\nexport function RootErrorFallback({ error, resetErrorBoundary }: 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 {resetErrorBoundary && (\n <Button onClick={resetErrorBoundary} variant=\"outline\">\n Try again\n </Button>\n )}\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 type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface ChangelogCardProps {\n title: string;\n summary: string;\n date: string;\n slug: string;\n version?: string;\n hrefPrefix?: 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 ChangelogCard({\n title,\n summary,\n date,\n slug,\n version,\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 return (\n <article className=\"group flex flex-col gap-3 border-b border-border/60 pb-8 last:border-0 last:pb-0\">\n <div className=\"flex flex-wrap items-center gap-2 text-sm text-muted-foreground\">\n <time dateTime={date}>{formatDate(date)}</time>\n {version && (\n <>\n <span>·</span>\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">\n {version}\n </Badge>\n </>\n )}\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={cn('line-clamp-3 text-sm text-muted-foreground')}>{summary}</p>\n <LinkWrapper className=\"text-sm font-medium text-primary hover:underline\">\n Read release notes →\n </LinkWrapper>\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/components/PhoneFrame.tsx","../src/marketing/HeroSection.tsx","../src/components/FeatureCard.tsx","../src/motion/StaggerChildren.tsx","../src/marketing/FeaturesSection.tsx","../src/marketing/CtaSection.tsx","../src/components/PricingCard.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/Navbar.tsx","../src/marketing/Footer.tsx","../src/marketing/LogoStrip.tsx","../src/overlays/Underlay.tsx","../src/overlays/Overlay.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/Spinner.tsx","../src/components/PageHeader.tsx","../src/components/Suspensed.tsx","../src/components/ThemeSwitchMinimal.tsx","../src/components/ModeSwitchMinimal.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","Sparkles","Separator","React10","React11","React12","Input","Mail","defaults","React13","Label","Textarea","React14","X","React15","React16","React17","React18","RadixContextMenu","blurClass","React19","React20","Spinner","React21","React22","React23","React24","formatDate","useState","useEffect","React26","React27","React28","React29","React30","React31","React32","React33"],"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}\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}: AuthFormProps) {\n const isSignUp = mode === 'signup';\n\n return (\n <Card className=\"w-full\">\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 id=\"auth-email\" name=\"email\" type=\"email\" placeholder=\"name@company.com\" autoComplete=\"email\" />\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 />\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 } 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 content = (\n <div\n className={cn(\n 'group relative flex flex-col gap-4 rounded-2xl border bg-card p-6 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md',\n href && 'cursor-pointer',\n className,\n )}\n {...props}\n >\n <div className=\"flex h-10 w-10 items-center justify-center rounded-xl bg-primary/10 text-primary transition-colors group-hover:bg-primary group-hover:text-primary-foreground\">\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 if (href) {\n return <a href={href} className=\"block\">{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 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 { 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 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-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 { ArrowRight, Sparkles } from 'lucide-react';\nimport { Button } 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 return (\n <section className=\"overflow-hidden rounded-2xl border bg-card\">\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=\"mb-4 inline-flex h-10 w-10 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\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 { Check, Minus } from 'lucide-react';\nimport { Badge, Button, cn, Separator } 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 badge?: string;\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 badge,\n onSelect,\n className,\n ...props\n}: PricingCardProps) {\n return (\n <div\n className={cn(\n 'relative flex flex-col rounded-2xl border p-6',\n highlighted ? 'border-primary bg-primary/5 shadow-sm' : 'bg-card',\n className,\n )}\n {...props}\n >\n {badge && (\n <div className=\"absolute -top-3 left-1/2 -translate-x-1/2\">\n <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 >\n {cta}\n </Button>\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","'use client';\n\nimport * as React from 'react';\nimport { Badge, cn } from '@olwiba/cn';\nimport { PricingCard, type PricingFeature } from '../components/PricingCard';\nimport { StaggerChildren } from '../motion/StaggerChildren';\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 features: PricingFeature[];\n}\n\nexport interface PricingSectionProps {\n title?: string;\n description?: string;\n badge?: string;\n plans: PricingPlan[];\n saveBadge?: string;\n isAuthenticated?: boolean;\n renderLink?: AppShellRenderLink;\n footnote?: string;\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}: PricingSectionProps) {\n const [annual, setAnnual] = React.useState(false);\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 <div className=\"mx-auto max-w-5xl\">\n {/* Header */}\n <div className=\"text-center\">\n {badge && (\n <Badge variant=\"secondary\" className=\"mb-4\">{badge}</Badge>\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 */}\n <div className=\"mt-6 inline-flex items-center gap-3 rounded-full border bg-muted p-1\">\n <button\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 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 </div>\n\n {/* Plan cards */}\n <StaggerChildren className=\"mt-10 grid gap-4 lg:grid-cols-3\">\n {plans.map((plan) => {\n const price = annual ? plan.annual : plan.monthly;\n return (\n <PricingCard\n key={plan.name}\n name={plan.name}\n price={`$${price}`}\n period={price > 0 ? '/mo' : ''}\n description={plan.description}\n features={plan.features}\n cta={plan.cta}\n highlighted={plan.highlighted}\n badge={plan.highlighted ? 'Most popular' : undefined}\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 } 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 return (\n <div\n className={cn('flex flex-col gap-4 rounded-2xl border bg-card p-6', className)}\n {...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 rounded-xl\">\n <AvatarImage src={avatar} alt={name} />\n <AvatarFallback className=\"rounded-xl 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","'use client';\n\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 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 <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\nconst team = [\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 name: 'Daniel Frost',\n role: 'Senior Engineer',\n bio: 'Accessibility and performance specialist. If it doesn\\'t work with a keyboard, it\\'s broken.',\n avatar: 'https://ui.shadcn.com/avatars/04.png',\n initials: 'DF',\n social: { twitter: null, github: '#', linkedin: '#' },\n },\n {\n name: 'Aisha Okafor',\n role: 'Developer Relations',\n bio: 'Writes docs, builds examples, and makes sure every engineer can ship their first block in under an hour.',\n avatar: 'https://ui.shadcn.com/avatars/05.png',\n initials: 'AO',\n social: { twitter: '#', github: '#', linkedin: '#' },\n },\n {\n name: 'Tom Halvorsen',\n role: 'Growth',\n bio: 'Turns happy users into loud advocates. Runs the community and keeps the changelog sharp.',\n avatar: 'https://ui.shadcn.com/avatars/06.png',\n initials: 'TH',\n social: { twitter: '#', github: null, linkedin: '#' },\n },\n];\n\nexport function TeamSection() {\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\">Team</Badge>\n <h2 className=\"text-balance text-3xl font-semibold tracking-tight sm:text-4xl\">\n The people behind Olwiba\n </h2>\n <p className=\"mx-auto mt-4 max-w-xl text-pretty text-muted-foreground\">\n A small team with deep experience in design systems, open source, and developer tooling.\n </p>\n </div>\n\n <div className=\"mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {team.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 <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 </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } 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 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-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 } 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 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_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 inline-flex h-10 w-10 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <Mail className=\"size-5\" />\n </div>\n\n <Badge variant=\"secondary\" className=\"mb-3\">\n {badge}\n </Badge>\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 { Mail, MapPin, MessageSquare, Phone, Send, type LucideIcon } from 'lucide-react';\nimport { Badge, Button, Input, Label, Separator, 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 successTitle?: string;\n successDescription?: string;\n sendAnotherLabel?: string;\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;\n}\n\nconst defaultContactInfoResolved: ContactInfoItem[] = [\n { icon: Mail, label: 'Email', value: 'hello@olwiba.com' },\n { icon: Phone, label: 'Phone', value: '+1 (555) 000-0000' },\n { icon: MapPin, label: 'Office', value: 'San Francisco, CA' },\n];\n\nconst defaults = {\n badge: 'Contact us',\n title: \"Let's talk\",\n description:\n \"Have a question or want to work together? Fill in the form and we'll get back to you within one business day.\",\n successTitle: 'Message sent',\n successDescription: \"Thanks for reaching out. We'll get back to you 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 = defaultContactInfoResolved,\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=\"grid lg:grid-cols-[1fr_1.4fr]\">\n <div className=\"relative overflow-hidden bg-primary px-8 py-12 text-primary-foreground\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_right,hsl(var(--primary-foreground)/0.1),transparent_60%)]\" />\n <div className=\"relative space-y-6\">\n <div>\n <Badge\n variant=\"secondary\"\n className=\"mb-3 bg-primary-foreground/15 text-primary-foreground hover:bg-primary-foreground/20\"\n >\n {badge}\n </Badge>\n <h2 className=\"text-2xl font-semibold\">{title}</h2>\n <p className=\"mt-2 text-sm text-primary-foreground/70\">{description}</p>\n </div>\n\n <Separator className=\"bg-primary-foreground/20\" />\n\n <div className=\"space-y-4\">\n {contactInfo.map(({ icon: Icon = Mail, label, value }) => (\n <div key={label} className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary-foreground/10\">\n <Icon className=\"size-4\" />\n </div>\n <div>\n <div className=\"text-xs text-primary-foreground/60\">{label}</div>\n <div className=\"text-sm font-medium\">{value}</div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n <div className=\"p-8\">\n {submitted ? (\n <div className=\"flex h-full min-h-[320px] flex-col items-center justify-center gap-4 text-center\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary\">\n <MessageSquare className=\"size-6\" />\n </div>\n <div>\n <h3 className=\"font-semibold\">{successTitle}</h3>\n <p className=\"mt-1 text-sm text-muted-foreground\">{successDescription}</p>\n </div>\n <Button variant=\"outline\" onClick={() => setSubmitted(false)}>\n {sendAnotherLabel}\n </Button>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n <input\n type=\"text\"\n name=\"company\"\n tabIndex={-1}\n autoComplete=\"off\"\n aria-hidden=\"true\"\n className=\"hidden\"\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-first\">First name</Label>\n <Input id=\"contact-first\" name=\"firstName\" placeholder=\"Olivia\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-last\">Last name</Label>\n <Input id=\"contact-last\" name=\"lastName\" placeholder=\"Reed\" required />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-email\">Email</Label>\n <Input id=\"contact-email\" name=\"email\" type=\"email\" placeholder=\"olivia@company.com\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-subject\">Subject</Label>\n <Input id=\"contact-subject\" name=\"subject\" placeholder=\"How can we help?\" required />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"contact-message\">Message</Label>\n <Textarea\n id=\"contact-message\"\n name=\"message\"\n placeholder=\"Tell us what you're working on...\"\n className=\"min-h-28 resize-none\"\n required\n />\n </div>\n <Button type=\"submit\" className=\"w-full\">\n Send message\n <Send className=\"ml-2 size-4\" />\n </Button>\n </form>\n )}\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Menu, X } 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 className=\"flex h-9 w-9 items-center justify-center rounded-xl bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n )}\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 — right column on small screens */}\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"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=\"right\" className=\"w-72\">\n <div className=\"flex items-center justify-between 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 className=\"flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground\">\n {brand.logo}\n </span>\n )}\n <span>{brand.name}</span>\n </span>\n ),\n })}\n </span>\n <div className=\"flex items-center gap-1\">\n {controls?.map((control, i) => (\n <React.Fragment key={i}>{control}</React.Fragment>\n ))}\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setOpen(false)}>\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close menu</span>\n </Button>\n </div>\n </div>\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 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 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 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-muted 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=\"flex h-8 w-8 items-center justify-center rounded-lg bg-foreground/10 text-foreground\">\n {brand.logo}\n </span>\n )}\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 </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 * 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","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\nexport function ThemeSwitchMinimal() {\n const [theme, setThemeState] = React.useState<'light' | 'dark'>('dark');\n\n React.useEffect(() => {\n const stored = localStorage.getItem('theme') as 'light' | 'dark' | null;\n const resolved = stored ?? (document.documentElement.classList.contains('dark') ? 'dark' : 'light');\n setThemeState(resolved);\n }, []);\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';\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 type { AppShellRenderLink } from '../app/AppShell';\n\nexport interface ChangelogCardProps {\n title: string;\n summary: string;\n date: string;\n slug: string;\n version?: string;\n hrefPrefix?: 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 ChangelogCard({\n title,\n summary,\n date,\n slug,\n version,\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 return (\n <article className=\"group flex flex-col gap-3 border-b border-border/60 pb-8 last:border-0 last:pb-0\">\n <div className=\"flex flex-wrap items-center gap-2 text-sm text-muted-foreground\">\n <time dateTime={date}>{formatDate(date)}</time>\n {version && (\n <>\n <span>·</span>\n <Badge variant=\"secondary\" className=\"font-mono text-xs\">\n {version}\n </Badge>\n </>\n )}\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={cn('line-clamp-3 text-sm text-muted-foreground')}>{summary}</p>\n <LinkWrapper className=\"text-sm font-medium text-primary hover:underline\">\n Read release notes →\n </LinkWrapper>\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"]}
|