@djangocfg/ui-nextjs 2.1.102 → 2.1.104

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/index.ts","../src/components/breadcrumb.tsx","../src/components/breadcrumb-navigation.tsx","../src/components/dropdown-menu.tsx","../src/components/pagination.tsx","../src/hooks/index.ts","../src/hooks/useResolvedTheme.ts","../src/hooks/useQueryParams.ts","../src/hooks/useCfgRouter.ts","../src/hooks/useHotkey.ts","../src/hooks/useDeviceDetect.ts","../src/hooks/useBrowserDetect.ts","../src/components/ssr-pagination.tsx","../src/components/pagination-static.tsx","../src/components/sidebar.tsx","../src/blocks/ArticleCard.tsx","../src/blocks/ArticleList.tsx","../src/blocks/CTASection.tsx","../src/blocks/FeatureSection.tsx","../src/blocks/Hero.tsx","../src/blocks/NewsletterSection.tsx","../src/blocks/SplitHero/SplitHeroContent.tsx","../src/blocks/SplitHero/SplitHeroMedia.tsx","../src/blocks/SplitHero/SplitHero.tsx","../src/blocks/StatsSection.tsx","../src/animations/AnimatedBackground.tsx","../src/animations/MouseFollower.tsx","../src/theme/ThemeProvider.tsx","../src/theme/ThemeToggle.tsx","../src/theme/ForceTheme.tsx","../src/blocks/SuperHero.tsx","../src/blocks/TestimonialSection.tsx"],"names":["React","Link","jsxs","jsx","React3","cn","ChevronRight","React4","MoreHorizontal","useState","useEffect","useNextRouter","selectors","deviceData","orientation","useMemo","usePathname","useIsMobile","ChevronLeft","open","Button","Separator","Slot","moment","Card","CardHeader","CardTitle","CardContent","CardDescription","ButtonLink","Input","Fragment","useRef","useCallback","NextThemesProvider","useNextTheme","Sparkles","ArrowRight","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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","file":"index.mjs","sourcesContent":["// ============================================================================\n// @djangocfg/ui-nextjs - Main Export File\n// ============================================================================\n\n// Re-export everything from components\nexport * from './components';\n\n// Re-export hooks\nexport * from './hooks';\n\n// Re-export blocks\nexport * from './blocks';\n\n// Re-export animations\nexport * from './animations';\n\n// Re-export theme\nexport * from './theme';","// ============================================================================\n// Next.js specific components (use next/link, next/image, etc.)\n// Re-exports base components from @djangocfg/ui-core for convenience\n// ============================================================================\n\n// Re-export all base components from ui-core\nexport * from '@djangocfg/ui-core/components';\n\n// Navigation Components (Next.js)\nexport { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis } from './breadcrumb';\nexport { BreadcrumbNavigation } from './breadcrumb-navigation';\nexport type { BreadcrumbItem as BreadcrumbNavigationItem, BreadcrumbNavigationProps } from './breadcrumb-navigation';\n\n// Interactive Components (Next.js)\nexport { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './dropdown-menu';\n\n// Pagination (Next.js)\nexport { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from './pagination';\nexport { SSRPagination } from './ssr-pagination';\nexport { StaticPagination, useDRFPaginationInfo, useDRFPagination } from './pagination-static';\nexport type { DRFPaginatedResponse } from './pagination-static';\n\n// Sidebar (Next.js)\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n} from './sidebar';\n","\"use client\"\n\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport Link from 'next/link';\nimport * as React from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\"> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n href?: string\n }\n>(({ asChild, className, href, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n if (href) {\n return (\n <Link\n href={href}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n ref={ref}\n >\n {children}\n </Link>\n )\n }\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n >\n {children}\n </Comp>\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\"> & { key?: React.Key }) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import Link from 'next/link';\nimport React from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport {\n Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage,\n BreadcrumbSeparator\n} from './breadcrumb';\n\nexport interface BreadcrumbItem {\n /** Display text for the breadcrumb */\n label: string;\n /** URL to navigate to. If not provided, item will be rendered as current page */\n href?: string;\n /** Whether this item is the current page (will be rendered as BreadcrumbPage) */\n isCurrentPage?: boolean;\n /** Optional icon to display before the label */\n icon?: React.ReactNode;\n}\n\nexport interface BreadcrumbNavigationProps {\n /** Array of breadcrumb items */\n items: BreadcrumbItem[];\n /** Custom separator between items */\n separator?: React.ReactNode;\n /** Maximum number of items to show before collapsing with ellipsis */\n maxItems?: number;\n /** Custom className for the breadcrumb container */\n className?: string;\n /** Whether to use Next.js Link component for navigation */\n useNextLink?: boolean;\n}\n\nexport const BreadcrumbNavigation: React.FC<BreadcrumbNavigationProps> = ({\n items,\n separator,\n maxItems = 5,\n className,\n useNextLink = true,\n}) => {\n // Handle empty or single item cases\n if (!items || items.length === 0) {\n return null;\n }\n\n // Determine which items to show based on maxItems\n const shouldCollapse = items.length > maxItems;\n let displayItems: BreadcrumbItem[] = items;\n\n if (shouldCollapse && items.length > 0) {\n // Show first item, ellipsis, and last few items\n if(items.length > 0) {\n const firstItem = items[0]!;\n const lastItems = items.slice(-(maxItems - 2)).filter(Boolean);\n displayItems = [firstItem, ...lastItems];\n }\n }\n\n const renderBreadcrumbItem = (item: BreadcrumbItem, index: number, isLast: boolean) => {\n const isCurrentPage = item.isCurrentPage || isLast || !item.href;\n\n const content = (\n <>\n {item.icon && <span className=\"mr-1\">{item.icon}</span>}\n {item.label}\n </>\n );\n\n if (isCurrentPage) {\n return (\n <BreadcrumbItem key={`${item.label}-${index}`}>\n <BreadcrumbPage>{content}</BreadcrumbPage>\n </BreadcrumbItem>\n );\n }\n\n return (\n <BreadcrumbItem key={`${item.label}-${index}`}>\n <BreadcrumbLink asChild={useNextLink}>\n {useNextLink ? (\n <Link href={item.href!}>{content}</Link>\n ) : (\n <a href={item.href!}>{content}</a>\n )}\n </BreadcrumbLink>\n </BreadcrumbItem>\n );\n };\n\n return (\n <Breadcrumb className={className}>\n <BreadcrumbList>\n {displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1;\n const isFirst = index === 0;\n \n // Show ellipsis after first item if we collapsed items\n if (shouldCollapse && isFirst && displayItems.length > 2) {\n return (\n <React.Fragment key={`fragment-${index}`}>\n {renderBreadcrumbItem(item, index, isLast)}\n <BreadcrumbSeparator>{separator}</BreadcrumbSeparator>\n <BreadcrumbItem>\n <BreadcrumbEllipsis />\n </BreadcrumbItem>\n {!isLast && <BreadcrumbSeparator>{separator}</BreadcrumbSeparator>}\n </React.Fragment>\n );\n }\n\n return (\n <React.Fragment key={`fragment-${index}`}>\n {renderBreadcrumbItem(item, index, isLast)}\n {!isLast && <BreadcrumbSeparator>{separator}</BreadcrumbSeparator>}\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n};\n\nBreadcrumbNavigation.displayName = 'BreadcrumbNavigation';\n","\"use client\"\n\nimport { Check, ChevronRight, Circle } from 'lucide-react';\nimport Link from 'next/link';\nimport * as React from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-600 min-w-32 overflow-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-600 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n href?: string\n key?: React.Key\n }\n>(({ className, inset, href, children, ...props }, ref) => {\n const classes = cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )\n\n if (href) {\n return (\n <DropdownMenuPrimitive.Item asChild ref={ref} {...props}>\n <Link href={href} className={classes}>\n {children}\n </Link>\n </DropdownMenuPrimitive.Item>\n )\n }\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={classes}\n {...props}\n >\n {children}\n </DropdownMenuPrimitive.Item>\n )\n})\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> & { key?: React.Key }\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & { key?: React.Key }\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\nimport Link from 'next/link';\nimport * as React from 'react';\n\nimport { ButtonProps, buttonVariants} from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\"> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n href?: string\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n href,\n children,\n ...props\n}: PaginationLinkProps) => {\n const classes = cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )\n\n if (href) {\n return (\n <Link\n href={href}\n aria-current={isActive ? \"page\" : undefined}\n className={classes}\n >\n {children}\n </Link>\n )\n }\n\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={classes}\n {...props}\n >\n {children}\n </a>\n )\n}\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n","// ============================================================================\n// Next.js/Browser specific hooks\n// Re-exports base hooks from @djangocfg/ui-core for convenience\n// ============================================================================\n\n// Re-export all base hooks from ui-core\nexport * from '@djangocfg/ui-core/hooks';\n\n// Theme hook (standalone, no provider required)\nexport { useResolvedTheme } from './useResolvedTheme';\nexport type { ResolvedTheme } from './useResolvedTheme';\n\n// Next.js router hooks\nexport { useQueryParams } from './useQueryParams';\nexport { useCfgRouter } from './useCfgRouter';\n\n// Keyboard shortcuts\nexport { useHotkey, useHotkeysContext, HotkeysProvider, isHotkeyPressed } from './useHotkey';\nexport type { UseHotkeyOptions, HotkeyCallback, Keys } from './useHotkey';\n\n// Device detection\nexport { useDeviceDetect } from './useDeviceDetect';\nexport type { DeviceDetectResult } from './useDeviceDetect';\n\n// Browser detection (advanced - detects Chromium browsers correctly)\nexport { useBrowserDetect } from './useBrowserDetect';\nexport type { BrowserInfo } from './useBrowserDetect';\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport type ResolvedTheme = 'light' | 'dark';\n\n/**\n * Hook to detect the current resolved theme (light or dark)\n *\n * Standalone hook - doesn't require ThemeProvider.\n * Detects theme from:\n * 1. 'dark' class on html element\n * 2. System preference (prefers-color-scheme)\n *\n * For full theme control (setTheme, toggleTheme), use useThemeContext instead.\n *\n * @example\n * ```tsx\n * const theme = useResolvedTheme(); // 'light' | 'dark'\n * ```\n */\nexport const useResolvedTheme = (): ResolvedTheme => {\n const [theme, setTheme] = useState<ResolvedTheme>('light');\n\n useEffect(() => {\n const checkTheme = (): ResolvedTheme => {\n // Check if dark class is applied to html element\n if (document.documentElement.classList.contains('dark')) {\n return 'dark';\n }\n\n // Check system preference\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n return 'light';\n };\n\n // Set initial theme\n setTheme(checkTheme());\n\n // Listen for class changes on html element\n const observer = new MutationObserver(() => {\n setTheme(checkTheme());\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class']\n });\n\n // Listen for system theme changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleMediaChange = () => {\n setTheme(checkTheme());\n };\n\n mediaQuery.addEventListener('change', handleMediaChange);\n\n return () => {\n observer.disconnect();\n mediaQuery.removeEventListener('change', handleMediaChange);\n };\n }, []);\n\n return theme;\n};\n","/**\n * useQueryParams Hook\n * \n * Safe hook to access URL query parameters without requiring Suspense boundary.\n * Works on client-side only, returns empty URLSearchParams during SSR/prerendering.\n * \n * @example\n * ```tsx\n * const params = useQueryParams();\n * const flow = params.get('flow');\n * const hasFlow = params.has('flow');\n * const allTags = params.getAll('tags');\n * ```\n */\n\n'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { useEffect, useRef, useState } from 'react';\n\n/**\n * Hook to safely access URL query parameters without useSearchParams()\n * \n * This hook reads query parameters directly from window.location.search,\n * avoiding the need for Suspense boundaries that useSearchParams() requires.\n * \n * Automatically updates when URL changes (navigation, back/forward, etc.)\n * Uses pathname from Next.js to detect route changes and polls for query param changes.\n * \n * Returns a URLSearchParams object with get(), getAll(), has(), etc.\n * \n * @returns URLSearchParams object (empty during SSR)\n */\nexport function useQueryParams(): URLSearchParams {\n const pathname = usePathname();\n const [queryParams, setQueryParams] = useState<URLSearchParams>(() => {\n if (typeof window === 'undefined') {\n return new URLSearchParams();\n }\n return new URLSearchParams(window.location.search);\n });\n const lastSearchRef = useRef<string>('');\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const updateQueryParams = () => {\n const currentSearch = window.location.search;\n if (currentSearch !== lastSearchRef.current) {\n lastSearchRef.current = currentSearch;\n setQueryParams(new URLSearchParams(currentSearch));\n }\n };\n\n // Update when pathname changes (Next.js navigation)\n updateQueryParams();\n\n // Listen to popstate (back/forward navigation)\n window.addEventListener('popstate', updateQueryParams);\n\n // Poll for query param changes (for router.push with same pathname)\n // This handles cases where Next.js router.push updates query params without changing pathname\n const intervalId = setInterval(updateQueryParams, 100);\n\n return () => {\n window.removeEventListener('popstate', updateQueryParams);\n clearInterval(intervalId);\n };\n }, [pathname]);\n\n return queryParams;\n}\n\n","/**\n * Universal Router Hook with BasePath Support\n *\n * Wrapper around Next.js useRouter that automatically handles basePath\n * for static builds served via iframe or subdirectory\n * \n * IMPORTANT: In Next.js 15 App Router, router.push() does NOT automatically\n * handle basePath (unlike Pages Router). This is a breaking change in App Router.\n * \n * This hook ensures basePath is always included when navigating, especially\n * important for static exports served via iframe where basePath is critical.\n * \n * @see https://nextjs.org/docs/app/building-your-application/upgrading/app-router-migration\n */\n\n'use client';\n\nimport { useRouter as useNextRouter } from 'next/navigation';\nimport { useCallback, useMemo } from 'react';\n\n/**\n * Get base path from environment variable\n */\nfunction getBasePath(): string {\n if (typeof process === 'undefined') {\n return '';\n }\n return process.env.NEXT_PUBLIC_BASE_PATH || '';\n}\n\n/**\n * Add base path to a route path\n */\nfunction withBasePath(path: string, basePath: string): string {\n if (!basePath) {\n return path;\n }\n // Ensure path starts with /\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n // Remove trailing slash from basePath\n const normalizedBasePath = basePath.replace(/\\/$/, '');\n return `${normalizedBasePath}${normalizedPath}`;\n}\n\n/**\n * Router with basePath support\n *\n * Automatically adds basePath to all navigation methods when basePath is configured.\n * In Next.js 15 App Router, router.push() doesn't handle basePath automatically,\n * so this hook uses window.location to ensure basePath is always included.\n *\n * @example\n * ```tsx\n * const router = useCfgRouter();\n *\n * // With basePath='/cfg/admin':\n * router.push('/dashboard'); // Client-side navigation to '/cfg/admin/dashboard'\n * router.replace('/auth'); // Client-side replace with '/cfg/admin/auth'\n * router.hardPush('/dashboard'); // Full page reload to '/cfg/admin/dashboard'\n * router.hardReplace('/auth'); // Full page replace with '/cfg/admin/auth'\n * ```\n */\nexport function useCfgRouter() {\n const router = useNextRouter();\n\n // Get basePath and check if we're in static build mode\n const basePath = useMemo(() => getBasePath(), []);\n const isStaticBuild = useMemo(() => {\n return typeof process !== 'undefined' && process.env.NEXT_PUBLIC_STATIC_BUILD === 'true';\n }, []);\n\n const push = useCallback((href: string, options?: { scroll?: boolean }) => {\n if (basePath) {\n // App Router doesn't handle basePath automatically, use window.location\n window.location.href = withBasePath(href, basePath);\n } else {\n // No basePath configured, use standard router\n router.push(href, options);\n }\n }, [router, basePath]);\n\n const replace = useCallback((href: string, options?: { scroll?: boolean }) => {\n if (basePath) {\n // App Router doesn't handle basePath automatically, use window.location\n window.location.replace(withBasePath(href, basePath));\n } else {\n // No basePath configured, use standard router\n router.replace(href, options);\n }\n }, [router, basePath]);\n\n /**\n * Hard push - always uses window.location.href for full page reload\n *\n * Use this for auth redirects where React contexts need to reinitialize.\n * Unlike push(), this ALWAYS triggers a full page reload, ensuring all\n * contexts are reinitialized with fresh state.\n *\n * @example\n * ```tsx\n * // After successful login - contexts need to reload with new auth state\n * router.hardPush('/dashboard');\n * ```\n */\n const hardPush = useCallback((href: string) => {\n window.location.href = withBasePath(href, basePath);\n }, [basePath]);\n\n /**\n * Hard replace - always uses window.location.replace for full page reload\n *\n * Same as hardPush but replaces current history entry.\n * Use for auth redirects where you don't want back button to return to login.\n *\n * @example\n * ```tsx\n * // After logout - replace so back button doesn't go to protected page\n * router.hardReplace('/auth');\n * ```\n */\n const hardReplace = useCallback((href: string) => {\n window.location.replace(withBasePath(href, basePath));\n }, [basePath]);\n\n const prefetch = useCallback((href: string) => {\n // Prefetch doesn't need basePath handling, Next.js handles it\n router.prefetch(href);\n }, [router]);\n\n const back = useCallback(() => {\n router.back();\n }, [router]);\n\n const forward = useCallback(() => {\n router.forward();\n }, [router]);\n\n const refresh = useCallback(() => {\n router.refresh();\n }, [router]);\n\n return {\n push,\n replace,\n hardPush,\n hardReplace,\n prefetch,\n back,\n forward,\n refresh,\n };\n}\n\n","'use client';\n\nimport type { RefObject } from 'react';\nimport { Options as HotkeysOptions, useHotkeys } from 'react-hotkeys-hook';\n\nimport type { HotkeyCallback, Keys } from 'react-hotkeys-hook';\n\n/**\n * Options for the useHotkey hook\n */\nexport interface UseHotkeyOptions extends Omit<HotkeysOptions, 'enabled'> {\n /** Whether the hotkey is enabled (default: true) */\n enabled?: boolean;\n /** Scope for the hotkey - useful for context-specific shortcuts */\n scope?: string;\n /** Only trigger when focus is within a specific element */\n scopes?: string[];\n /** Prevent default browser behavior */\n preventDefault?: boolean;\n /** Enable in input fields and textareas */\n enableOnFormTags?: boolean | readonly ('input' | 'textarea' | 'select')[];\n /** Enable when contentEditable element is focused */\n enableOnContentEditable?: boolean;\n /** Split key for multiple hotkey combinations (default: ',') */\n splitKey?: string;\n /** Key up/down events */\n keyup?: boolean;\n keydown?: boolean;\n /** Description for the hotkey (useful for help dialogs) */\n description?: string;\n}\n\n/**\n * Simple wrapper hook for react-hotkeys-hook\n *\n * @example\n * // Single key\n * useHotkey('escape', () => closeModal());\n *\n * @example\n * // Key combination\n * useHotkey('ctrl+s', (e) => {\n * e.preventDefault();\n * saveDocument();\n * });\n *\n * @example\n * // Multiple keys (any of them will trigger)\n * useHotkey(['ArrowLeft', '['], () => goToPrevious());\n * useHotkey(['ArrowRight', ']'], () => goToNext());\n *\n * @example\n * // With options\n * useHotkey('/', () => focusSearch(), {\n * preventDefault: true,\n * enableOnFormTags: false,\n * description: 'Focus search input'\n * });\n *\n * @example\n * // Scoped hotkeys\n * useHotkey('delete', () => deleteItem(), { scopes: ['list-view'] });\n *\n * @param keys - Hotkey or array of hotkeys (e.g., 'ctrl+s', 'ArrowLeft', ['[', 'ArrowLeft'])\n * @param callback - Function to call when hotkey is pressed\n * @param options - Configuration options\n * @returns Ref to attach to element for scoped hotkeys\n */\nexport function useHotkey<T extends HTMLElement = HTMLElement>(\n keys: Keys,\n callback: HotkeyCallback,\n options: UseHotkeyOptions = {}\n): RefObject<T | null> {\n const {\n enabled = true,\n preventDefault = false,\n enableOnFormTags = false,\n enableOnContentEditable = false,\n description: _description,\n ...restOptions\n } = options;\n\n return useHotkeys<T>(\n keys,\n (event, handler) => {\n if (preventDefault) {\n event.preventDefault();\n }\n callback(event, handler);\n },\n {\n enabled,\n enableOnFormTags,\n enableOnContentEditable,\n ...restOptions,\n }\n );\n}\n\n// Re-export useful utilities from react-hotkeys-hook\nexport { useHotkeysContext, HotkeysProvider, isHotkeyPressed } from 'react-hotkeys-hook';\n\n// Re-export types\nexport type { HotkeyCallback, Keys } from 'react-hotkeys-hook';\n","'use client';\n\nimport { useEffect, useMemo, useState } from 'react';\n\n// Safe defaults for SSR\nconst defaultSelectors = {\n isMobile: false,\n isTablet: false,\n isDesktop: false,\n isBrowser: false,\n isMobileOnly: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false,\n isEmbedded: false,\n isAndroid: false,\n isIOS: false,\n isWindows: false,\n isMacOs: false,\n isWinPhone: false,\n isChrome: false,\n isFirefox: false,\n isSafari: false,\n isOpera: false,\n isIE: false,\n isEdge: false,\n isEdgeChromium: false,\n isLegacyEdge: false,\n isChromium: false,\n isMobileSafari: false,\n isYandex: false,\n isMIUI: false,\n isSamsungBrowser: false,\n isElectron: false,\n osVersion: 'unknown',\n osName: 'unknown',\n fullBrowserVersion: 'unknown',\n browserVersion: 'unknown',\n browserName: 'unknown',\n mobileVendor: 'unknown',\n mobileModel: 'unknown',\n engineName: 'unknown',\n engineVersion: 'unknown',\n getUA: '',\n deviceType: 'unknown',\n isIOS13: false,\n isIPad13: false,\n isIPhone13: false,\n isIPod13: false,\n};\n\nconst defaultDeviceData = {\n deviceType: 'unknown',\n osName: 'unknown',\n osVersion: 'unknown',\n browserName: 'unknown',\n browserVersion: 'unknown',\n fullBrowserVersion: 'unknown',\n mobileVendor: 'unknown',\n mobileModel: 'unknown',\n engineName: 'unknown',\n engineVersion: 'unknown',\n getUA: '',\n};\n\nconst defaultOrientation = {\n isPortrait: false,\n isLandscape: false,\n orientation: 'portrait' as 'portrait' | 'landscape',\n};\n\n/**\n * Device detection hook wrapper for react-device-detect\n * \n * Provides a convenient interface to access device information including:\n * - Device type (mobile, tablet, desktop, etc.)\n * - Browser information (name, version, etc.)\n * - OS information (name, version, etc.)\n * - Orientation (portrait/landscape)\n * \n * @param userAgent - Optional user agent string (useful for SSR)\n * @returns Device detection object with all available information\n * \n * @example\n * ```tsx\n * const device = useDeviceDetect();\n * \n * if (device.isMobile) {\n * return <MobileView />;\n * }\n * \n * return <DesktopView />;\n * ```\n */\nexport function useDeviceDetect(userAgent?: string) {\n const [deviceInfo, setDeviceInfo] = useState<{\n selectors: typeof defaultSelectors;\n deviceData: typeof defaultDeviceData;\n orientation: {\n isPortrait: boolean;\n isLandscape: boolean;\n orientation: 'portrait' | 'landscape';\n };\n }>({\n selectors: defaultSelectors,\n deviceData: defaultDeviceData,\n orientation: defaultOrientation,\n });\n\n useEffect(() => {\n // Only run on client side\n if (typeof window === 'undefined') return;\n\n // Dynamic import to avoid SSR issues\n import('react-device-detect').then((deviceDetect) => {\n // Get user agent string\n const ua = userAgent || (typeof window !== 'undefined' ? window.navigator.userAgent : '');\n \n if (!ua) {\n console.warn('No user agent available');\n return;\n }\n\n // Parse user agent using library's parseUserAgent function\n const parsed = deviceDetect.parseUserAgent(ua);\n \n if (!parsed) {\n console.warn('Failed to parse user agent');\n return;\n }\n\n // Build selectors using library's buildSelectorsObject\n // We need to import buildSelectorsObject, but it's not exported\n // So we'll use getSelectorsByUserAgent which is exported\n const selectors = deviceDetect.getSelectorsByUserAgent(ua) || defaultSelectors;\n \n // Extract device data from parsed result\n const deviceData = {\n deviceType: parsed.device?.type || 'unknown',\n osName: parsed.os?.name || 'unknown',\n osVersion: parsed.os?.version || 'unknown',\n browserName: parsed.browser?.name || 'unknown',\n browserVersion: parsed.browser?.version || 'unknown',\n fullBrowserVersion: parsed.browser?.version || 'unknown',\n mobileVendor: parsed.device?.vendor || 'unknown',\n mobileModel: parsed.device?.model || 'unknown',\n engineName: parsed.engine?.name || 'unknown',\n engineVersion: parsed.engine?.version || 'unknown',\n getUA: parsed.ua || ua,\n };\n\n // Get orientation - use library's hook if available, otherwise calculate\n let orientation = defaultOrientation;\n \n try {\n // Try to use the hook, but we can't call hooks conditionally\n // So we'll calculate orientation manually\n if (typeof window !== 'undefined') {\n const isPortrait = window.innerHeight > window.innerWidth;\n orientation = {\n isPortrait,\n isLandscape: !isPortrait,\n orientation: (isPortrait ? 'portrait' : 'landscape') as 'portrait' | 'landscape',\n };\n }\n } catch (error) {\n console.warn('Failed to get orientation:', error);\n }\n \n setDeviceInfo({ selectors, deviceData, orientation });\n }).catch((error) => {\n console.warn('Failed to load device detection:', error);\n });\n }, [userAgent]);\n\n // Update orientation on window resize\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n const isPortrait = window.innerHeight > window.innerWidth;\n setDeviceInfo((prev) => ({\n ...prev,\n orientation: {\n isPortrait,\n isLandscape: !isPortrait,\n orientation: (isPortrait ? 'portrait' : 'landscape') as 'portrait' | 'landscape',\n },\n }));\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('orientationchange', handleResize);\n \n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('orientationchange', handleResize);\n };\n }, []);\n\n const { selectors, deviceData, orientation } = deviceInfo;\n\n return useMemo(() => {\n return {\n // Device type selectors\n isMobile: selectors.isMobile ?? false,\n isTablet: selectors.isTablet ?? false,\n isDesktop: selectors.isDesktop ?? false,\n isBrowser: selectors.isBrowser ?? false,\n isMobileOnly: selectors.isMobileOnly ?? false,\n isSmartTV: selectors.isSmartTV ?? false,\n isConsole: selectors.isConsole ?? false,\n isWearable: selectors.isWearable ?? false,\n isEmbedded: selectors.isEmbedded ?? false,\n\n // OS selectors\n isAndroid: selectors.isAndroid ?? false,\n isIOS: selectors.isIOS ?? false,\n isWindows: selectors.isWindows ?? false,\n isMacOs: selectors.isMacOs ?? false,\n isWinPhone: selectors.isWinPhone ?? false,\n\n // Browser selectors\n isChrome: selectors.isChrome ?? false,\n isFirefox: selectors.isFirefox ?? false,\n isSafari: selectors.isSafari ?? false,\n isOpera: selectors.isOpera ?? false,\n isIE: selectors.isIE ?? false,\n isEdge: selectors.isEdge ?? false,\n isEdgeChromium: selectors.isEdgeChromium ?? false,\n isLegacyEdge: selectors.isLegacyEdge ?? false,\n isChromium: selectors.isChromium ?? false,\n isMobileSafari: selectors.isMobileSafari ?? false,\n isYandex: selectors.isYandex ?? false,\n isMIUI: selectors.isMIUI ?? false,\n isSamsungBrowser: selectors.isSamsungBrowser ?? false,\n isElectron: selectors.isElectron ?? false,\n\n // iOS version selectors\n isIOS13: selectors.isIOS13 ?? false,\n isIPad13: selectors.isIPad13 ?? false,\n isIPhone13: selectors.isIPhone13 ?? false,\n isIPod13: selectors.isIPod13 ?? false,\n\n // Device information\n deviceType: deviceData.deviceType ?? 'unknown',\n osName: deviceData.osName ?? 'unknown',\n osVersion: deviceData.osVersion ?? 'unknown',\n browserName: deviceData.browserName ?? 'unknown',\n browserVersion: deviceData.browserVersion ?? 'unknown',\n fullBrowserVersion: deviceData.fullBrowserVersion ?? 'unknown',\n mobileVendor: deviceData.mobileVendor ?? 'unknown',\n mobileModel: deviceData.mobileModel ?? 'unknown',\n engineName: deviceData.engineName ?? 'unknown',\n engineVersion: deviceData.engineVersion ?? 'unknown',\n getUA: deviceData.getUA ?? '',\n\n // Orientation\n isPortrait: orientation.isPortrait,\n isLandscape: orientation.isLandscape,\n orientation: orientation.orientation,\n\n // Raw data (for advanced usage)\n selectors,\n deviceData,\n };\n }, [selectors, deviceData, orientation]);\n}\n\nexport type DeviceDetectResult = ReturnType<typeof useDeviceDetect>;\n","/**\n * Advanced browser detection hook\n *\n * Detects modern browsers including Chromium-based browsers that may\n * incorrectly report as Safari (Arc, Brave, Vivaldi, Comet, etc.)\n */\n\n'use client';\n\nimport { useMemo } from 'react';\n\nexport interface BrowserInfo {\n // Core browser types\n isChrome: boolean;\n isChromium: boolean; // Any Chromium-based browser\n isSafari: boolean; // Real Safari (WebKit on macOS/iOS)\n isFirefox: boolean;\n isEdge: boolean;\n isOpera: boolean;\n\n // Modern Chromium-based browsers\n isBrave: boolean;\n isArc: boolean;\n isVivaldi: boolean;\n isYandex: boolean;\n isSamsungBrowser: boolean;\n isUCBrowser: boolean;\n\n // Additional browsers\n isComet: boolean; // Perplexity's Comet browser (Chromium-based, supports push)\n isOperaMini: boolean; // Opera Mini (does NOT support push notifications)\n isIE: boolean; // Internet Explorer (does NOT support push notifications)\n\n // In-App Browsers (WebViews) - typically do NOT support push notifications\n isFacebookInApp: boolean; // Facebook's in-app browser\n isInstagramInApp: boolean; // Instagram's in-app browser\n isTikTokInApp: boolean; // TikTok's in-app browser\n isSnapchatInApp: boolean; // Snapchat's in-app browser\n isWeChatInApp: boolean; // WeChat's in-app browser\n isThreadsInApp: boolean; // Threads' in-app browser\n isLinkedInInApp: boolean; // LinkedIn's in-app browser (uses Chrome WebView - supports push on Android)\n isTwitterInApp: boolean; // Twitter/X's in-app browser (uses Chrome WebView - supports push on Android)\n isInAppBrowser: boolean; // Any in-app browser detected\n isWebView: boolean; // Generic WebView detection\n\n // Browser name\n browserName: string;\n\n // Engine\n isWebKit: boolean; // Safari's engine\n isBlink: boolean; // Chromium's engine\n isGecko: boolean; // Firefox's engine\n\n // Push notification support\n /**\n * Whether the browser supports Web Push Notifications.\n * Returns false for browsers known to NOT support push:\n * - Opera Mini (no service worker support)\n * - Internet Explorer (deprecated, no Push API)\n * - UC Browser (unreliable push support)\n * - In-App browsers (Facebook, Instagram, TikTok, Snapchat, etc.)\n * - Generic WebViews (except Twitter/LinkedIn on Android which use Chrome WebView)\n *\n * Note: Comet (Perplexity) is Chromium-based and DOES support push notifications.\n * Note: This is a browser-level check. For full push support,\n * also check 'serviceWorker' in navigator && 'PushManager' in window\n */\n supportsPushNotifications: boolean;\n\n // iOS specific\n isIOSBrowser: boolean; // Any browser on iOS (all use WebKit, limited push support)\n\n // For debugging\n userAgent: string;\n}\n\n/**\n * Detect browser with improved accuracy for Chromium-based browsers\n *\n * @example\n * ```tsx\n * const browser = useBrowserDetect();\n *\n * if (browser.isSafari && !browser.isChromium) {\n * // Real Safari\n * }\n *\n * if (browser.isChromium) {\n * // Any Chromium-based browser (Chrome, Edge, Brave, Arc, etc.)\n * }\n * ```\n */\nexport function useBrowserDetect(): BrowserInfo {\n return useMemo(() => {\n if (typeof window === 'undefined') {\n return {\n isChrome: false,\n isChromium: false,\n isSafari: false,\n isFirefox: false,\n isEdge: false,\n isOpera: false,\n isBrave: false,\n isArc: false,\n isVivaldi: false,\n isYandex: false,\n isSamsungBrowser: false,\n isUCBrowser: false,\n isComet: false,\n isOperaMini: false,\n isIE: false,\n isFacebookInApp: false,\n isInstagramInApp: false,\n isTikTokInApp: false,\n isSnapchatInApp: false,\n isWeChatInApp: false,\n isThreadsInApp: false,\n isLinkedInInApp: false,\n isTwitterInApp: false,\n isInAppBrowser: false,\n isWebView: false,\n browserName: 'unknown',\n isWebKit: false,\n isBlink: false,\n isGecko: false,\n supportsPushNotifications: false,\n isIOSBrowser: false,\n userAgent: '',\n };\n }\n\n const ua = window.navigator.userAgent.toLowerCase();\n\n // Check for specific browsers first (most specific to least specific)\n\n // Edge (Chromium-based)\n const isEdge = ua.includes('edg/') || ua.includes('edge/');\n\n // Brave (check for Brave-specific API)\n const isBrave = !!(window.navigator as any).brave;\n\n // Arc (check for Arc-specific markers in UA)\n const isArc = ua.includes('arc/');\n\n // Vivaldi\n const isVivaldi = ua.includes('vivaldi');\n\n // Yandex Browser\n const isYandex = ua.includes('yabrowser');\n\n // Samsung Internet\n const isSamsungBrowser = ua.includes('samsungbrowser');\n\n // UC Browser\n const isUCBrowser = ua.includes('ucbrowser') || ua.includes('uc browser');\n\n // Comet Browser (Perplexity's AI browser, Chromium-based)\n // May have 'comet' in UA or can be detected by specific markers\n const isComet = ua.includes('comet') || ua.includes('perplexity');\n\n // Opera Mini (does NOT support service workers or push)\n const isOperaMini = ua.includes('opera mini') || ua.includes('opios');\n\n // Internet Explorer (deprecated, no Push API support)\n const isIE = ua.includes('msie') || ua.includes('trident/');\n\n // ============================================================================\n // In-App Browsers Detection (WebViews)\n // These browsers typically do NOT support web push notifications\n // ============================================================================\n\n // Facebook In-App Browser\n // UA contains: FBAN (Facebook App Name) or FBAV (Facebook App Version)\n const isFacebookInApp = ua.includes('fban') || ua.includes('fbav') || ua.includes('fb_iab');\n\n // Instagram In-App Browser\n // UA contains: Instagram\n const isInstagramInApp = ua.includes('instagram');\n\n // TikTok In-App Browser\n // UA contains: TikTok or BytedanceWebview or ByteLocale\n const isTikTokInApp = ua.includes('tiktok') || ua.includes('bytedancewebview') || ua.includes('bytelocale');\n\n // Snapchat In-App Browser\n // UA contains: Snapchat\n const isSnapchatInApp = ua.includes('snapchat');\n\n // WeChat In-App Browser\n // UA contains: MicroMessenger\n const isWeChatInApp = ua.includes('micromessenger');\n\n // Threads In-App Browser (Meta's app)\n // UA contains: Threads or uses same markers as Instagram\n const isThreadsInApp = ua.includes('barcelona'); // Threads codename is Barcelona\n\n // LinkedIn In-App Browser\n // UA contains: LinkedIn - NOTE: Uses Chrome WebView on Android, may support push\n const isLinkedInInApp = ua.includes('linkedinapp');\n\n // Twitter/X In-App Browser\n // UA contains: Twitter - NOTE: Uses Chrome WebView on Android, may support push\n const isTwitterInApp = ua.includes('twitter');\n\n // Pinterest In-App Browser\n const isPinterestInApp = ua.includes('pinterest');\n\n // Telegram In-App Browser\n const isTelegramInApp = ua.includes('telegram');\n\n // Line In-App Browser\n const isLineInApp = ua.includes('line/');\n\n // Kakao In-App Browser (Korea)\n const isKakaoInApp = ua.includes('kakaotalk');\n\n // Generic WebView detection\n // Android WebView: contains 'wv' in UA or specific WebView markers\n // iOS WebView: WKWebView doesn't have distinct UA, but some markers exist\n const isWebView = ua.includes('wv)') || // Android WebView marker\n ua.includes('webview') ||\n ua.includes('; wv') ||\n (ua.includes('iphone') && !ua.includes('safari')) || // iOS WebView (no Safari)\n (ua.includes('ipad') && !ua.includes('safari'));\n\n // Aggregate: Any in-app browser\n const isInAppBrowser = isFacebookInApp ||\n isInstagramInApp ||\n isTikTokInApp ||\n isSnapchatInApp ||\n isWeChatInApp ||\n isThreadsInApp ||\n isLinkedInInApp ||\n isTwitterInApp ||\n isPinterestInApp ||\n isTelegramInApp ||\n isLineInApp ||\n isKakaoInApp;\n\n // iOS detection (all iOS browsers use WebKit, limited push support)\n const isIOSBrowser = ua.includes('iphone') || ua.includes('ipad') || ua.includes('ipod');\n\n // Opera (modern Chromium-based)\n const isOpera = (ua.includes('opr/') || ua.includes('opera')) && !isOperaMini;\n\n // Chrome (not Edge, not other Chromium browsers)\n const isChrome = ua.includes('chrome') &&\n !isEdge &&\n !isOpera &&\n !isYandex &&\n !isSamsungBrowser &&\n !isVivaldi &&\n !isArc &&\n !isBrave &&\n !isComet;\n\n // Firefox\n const isFirefox = ua.includes('firefox') && !ua.includes('seamonkey');\n\n // Safari (real Safari, not Chromium pretending to be Safari)\n // Safari will have 'safari' in UA but NOT 'chrome' or 'chromium'\n // Real Safari uses WebKit engine\n // Additional check: Safari has 'version/' in UA, Chromium browsers don't combine it with Safari\n const hasSafariUA = ua.includes('safari');\n const hasChrome = ua.includes('chrome') || ua.includes('crios');\n const hasVersion = ua.includes('version/'); // Real Safari includes Version/XX.X\n const isSafari = hasSafariUA && !hasChrome && hasVersion;\n\n // Chromium detection (any browser using Chromium/Blink engine)\n // If it has \"chrome\" in UA or is one of the known Chromium browsers\n const isChromium = hasChrome ||\n isEdge ||\n isOpera ||\n isYandex ||\n isSamsungBrowser ||\n isVivaldi ||\n isArc ||\n isBrave ||\n isUCBrowser ||\n isComet;\n\n // Engine detection\n const isWebKit = !isChromium && isSafari;\n const isBlink = isChromium;\n const isGecko = isFirefox;\n\n // Determine browser name\n // In-app browsers take priority in naming\n let browserName = 'unknown';\n if (isFacebookInApp) browserName = 'Facebook In-App';\n else if (isInstagramInApp) browserName = 'Instagram In-App';\n else if (isTikTokInApp) browserName = 'TikTok In-App';\n else if (isSnapchatInApp) browserName = 'Snapchat In-App';\n else if (isWeChatInApp) browserName = 'WeChat In-App';\n else if (isThreadsInApp) browserName = 'Threads In-App';\n else if (isLinkedInInApp) browserName = 'LinkedIn In-App';\n else if (isTwitterInApp) browserName = 'Twitter In-App';\n else if (isPinterestInApp) browserName = 'Pinterest In-App';\n else if (isTelegramInApp) browserName = 'Telegram In-App';\n else if (isLineInApp) browserName = 'Line In-App';\n else if (isKakaoInApp) browserName = 'KakaoTalk In-App';\n else if (isComet) browserName = 'Comet';\n else if (isOperaMini) browserName = 'Opera Mini';\n else if (isIE) browserName = 'Internet Explorer';\n else if (isBrave) browserName = 'Brave';\n else if (isArc) browserName = 'Arc';\n else if (isVivaldi) browserName = 'Vivaldi';\n else if (isYandex) browserName = 'Yandex';\n else if (isSamsungBrowser) browserName = 'Samsung Internet';\n else if (isUCBrowser) browserName = 'UC Browser';\n else if (isEdge) browserName = 'Edge';\n else if (isOpera) browserName = 'Opera';\n else if (isChrome) browserName = 'Chrome';\n else if (isSafari) browserName = 'Safari';\n else if (isFirefox) browserName = 'Firefox';\n else if (isWebView) browserName = 'WebView';\n\n // Determine push notification support\n // These browsers are known to NOT support Web Push:\n // - Opera Mini: no service worker support\n // - Internet Explorer: deprecated, no Push API\n // - UC Browser: unreliable push support on many versions\n // - Most In-App browsers (Facebook, Instagram, TikTok, etc.)\n // - Generic WebViews (except Twitter/LinkedIn on Android)\n //\n // Note: Comet (Perplexity) is Chromium-based and DOES support push notifications.\n // Note: Twitter and LinkedIn on Android use Chrome WebView and DO support push.\n // However, we err on the side of caution and disable for all in-app browsers.\n const browserBlocksPush = isOperaMini ||\n isIE ||\n isUCBrowser ||\n isFacebookInApp ||\n isInstagramInApp ||\n isTikTokInApp ||\n isSnapchatInApp ||\n isWeChatInApp ||\n isThreadsInApp ||\n isPinterestInApp ||\n isTelegramInApp ||\n isLineInApp ||\n isKakaoInApp ||\n isWebView;\n\n // Twitter and LinkedIn on Android use Chrome WebView - they actually support push\n // But only on Android, not iOS\n const twitterLinkedInAndroid = (isTwitterInApp || isLinkedInInApp) && !isIOSBrowser;\n\n const supportsPushNotifications = !browserBlocksPush || twitterLinkedInAndroid;\n\n return {\n isChrome,\n isChromium,\n isSafari,\n isFirefox,\n isEdge,\n isOpera,\n isBrave,\n isArc,\n isVivaldi,\n isYandex,\n isSamsungBrowser,\n isUCBrowser,\n isComet,\n isOperaMini,\n isIE,\n isFacebookInApp,\n isInstagramInApp,\n isTikTokInApp,\n isSnapchatInApp,\n isWeChatInApp,\n isThreadsInApp,\n isLinkedInInApp,\n isTwitterInApp,\n isInAppBrowser,\n isWebView,\n browserName,\n isWebKit,\n isBlink,\n isGecko,\n supportsPushNotifications,\n isIOSBrowser,\n userAgent: window.navigator.userAgent,\n };\n }, []);\n}\n","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport React from 'react';\n\nimport { useIsMobile } from '@djangocfg/ui-core/hooks';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport { useQueryParams } from '../hooks';\nimport {\n Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink,\n PaginationNext, PaginationPrevious\n} from './pagination';\n\ninterface SSRPaginationProps {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n itemsPerPage: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n className?: string;\n showInfo?: boolean;\n maxVisiblePages?: number;\n baseUrl?: string;\n pathname?: string;\n preserveQuery?: boolean;\n}\n\nexport const SSRPagination: React.FC<SSRPaginationProps> = ({\n currentPage,\n totalPages,\n totalItems,\n itemsPerPage,\n hasNextPage,\n hasPreviousPage,\n className,\n showInfo = true,\n maxVisiblePages = 7,\n baseUrl,\n pathname: propPathname,\n preserveQuery = true,\n}) => {\n const queryParams = useQueryParams();\n const pathname = usePathname();\n const isMobile = useIsMobile();\n\n // Get current page from URL if available, otherwise use prop\n const getCurrentPageFromUrl = (): number => {\n const pageParam = queryParams.get('page');\n if (pageParam) {\n const pageNum = parseInt(pageParam, 10);\n return isNaN(pageNum) ? 1 : pageNum;\n }\n return 1;\n };\n\n const actualCurrentPage = getCurrentPageFromUrl() || currentPage;\n\n // Calculate actual navigation state based on current page from URL\n const actualHasPreviousPage = actualCurrentPage > 1;\n \n // Smart total pages calculation - if we're on a page higher than totalPages,\n // extend totalPages to include current page + some extra\n const smartTotalPages = Math.max(\n totalPages,\n actualCurrentPage + (hasNextPage ? 5 : 0)\n );\n \n const actualHasNextPage = hasNextPage;\n\n // Generate URL for a specific page\n const getPageUrl = (page: number): string => {\n if (baseUrl) {\n return `${baseUrl}?page=${page}`;\n }\n\n // Use current route with updated page parameter\n const newSearchParams = preserveQuery \n ? new URLSearchParams(queryParams.toString())\n : new URLSearchParams();\n\n newSearchParams.set('page', page.toString());\n\n // Remove page=1 from URL to keep URLs clean\n if (page === 1) {\n newSearchParams.delete('page');\n }\n\n const queryString = newSearchParams.toString();\n const basePath = propPathname || pathname || '';\n return queryString ? `${basePath}?${queryString}` : basePath;\n };\n\n // Generate array of page numbers to display\n const getVisiblePages = (): (number | 'ellipsis')[] => {\n // On mobile, show fewer pages\n const mobileMaxVisible = 3;\n const effectiveMaxVisible = isMobile ? mobileMaxVisible : maxVisiblePages;\n \n if (smartTotalPages <= effectiveMaxVisible) {\n return Array.from({ length: smartTotalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | 'ellipsis')[] = [];\n const halfVisible = Math.floor(effectiveMaxVisible / 2);\n\n if (isMobile) {\n // Mobile: Show only current page and adjacent pages\n if (actualCurrentPage > 1) {\n pages.push(actualCurrentPage - 1);\n }\n pages.push(actualCurrentPage);\n if (actualCurrentPage < smartTotalPages) {\n pages.push(actualCurrentPage + 1);\n }\n } else {\n // Desktop: Full pagination logic\n // Always show first page\n pages.push(1);\n\n let start = Math.max(2, actualCurrentPage - halfVisible);\n let end = Math.min(smartTotalPages - 1, actualCurrentPage + halfVisible);\n\n // Adjust range if we're near the beginning or end\n if (actualCurrentPage <= halfVisible + 1) {\n end = Math.min(smartTotalPages - 1, effectiveMaxVisible - 1);\n } else if (actualCurrentPage >= smartTotalPages - halfVisible) {\n start = Math.max(2, smartTotalPages - effectiveMaxVisible + 2);\n }\n\n // Add ellipsis after first page if needed\n if (start > 2) {\n pages.push('ellipsis');\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis before last page if needed\n if (end < smartTotalPages - 1) {\n pages.push('ellipsis');\n }\n\n // Always show last page (if more than 1 page)\n if (smartTotalPages > 1) {\n pages.push(smartTotalPages);\n }\n }\n\n return pages;\n };\n\n // Don't render if there's only one page or no pages\n if (smartTotalPages <= 1) {\n return null;\n }\n\n const visiblePages = getVisiblePages();\n const startItem = (actualCurrentPage - 1) * itemsPerPage + 1;\n const endItem = Math.min(actualCurrentPage * itemsPerPage, totalItems);\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Pagination Info */}\n {showInfo && (\n <div className=\"text-sm text-muted-foreground text-center\">\n {isMobile ? (\n `Page ${actualCurrentPage} of ${smartTotalPages}`\n ) : (\n `Showing ${startItem.toLocaleString()} to ${endItem.toLocaleString()} of ${totalItems.toLocaleString()} results`\n )}\n </div>\n )}\n\n {/* Pagination Controls */}\n <Pagination>\n <PaginationContent>\n {/* Previous Button */}\n <PaginationItem>\n <PaginationPrevious\n href={actualHasPreviousPage ? getPageUrl(actualCurrentPage - 1) : undefined}\n className={!actualHasPreviousPage ? \"pointer-events-none opacity-50\" : undefined}\n />\n </PaginationItem>\n\n {/* Page Numbers */}\n {visiblePages.map((page, index) => (\n <PaginationItem key={index}>\n {page === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink\n href={getPageUrl(page)}\n isActive={page === actualCurrentPage}\n >\n {page}\n </PaginationLink>\n )}\n </PaginationItem>\n ))}\n\n {/* Next Button */}\n <PaginationItem>\n <PaginationNext\n href={hasNextPage ? getPageUrl(actualCurrentPage + 1) : undefined}\n className={!hasNextPage ? \"pointer-events-none opacity-50\" : undefined}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n );\n};\n\nSSRPagination.displayName = 'SSRPagination';\n","/**\n * DRF Static Pagination Component\n *\n * Universal pagination component that works with Django REST Framework pagination format.\n * Manages page state internally and provides callbacks for page changes.\n *\n * DRF Pagination Response Format:\n * {\n * \"count\": 150, // Total number of items\n * \"page\": 1, // Current page number\n * \"pages\": 15, // Total number of pages\n * \"page_size\": 10, // Items per page\n * \"has_next\": true, // Whether there's a next page\n * \"has_previous\": false, // Whether there's a previous page\n * \"next_page\": 2, // Next page number (or null)\n * \"previous_page\": null, // Previous page number (or null)\n * \"results\": [...] // Array of items\n * }\n *\n * Usage with SWR:\n * ```tsx\n * import { StaticPagination, useDRFPagination } from '@djangocfg/ui-nextjs';\n *\n * function MyComponent() {\n * const pagination = useDRFPagination();\n * const { data, isLoading } = useMyAPI(pagination.params);\n *\n * return (\n * <div>\n * {data?.results?.map(item => <Item key={item.id} {...item} />)}\n * <StaticPagination data={data} onPageChange={pagination.setPage} />\n * </div>\n * );\n * }\n * ```\n */\n\n\"use client\"\n\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@djangocfg/ui-core/components';\nimport { useIsMobile } from '@djangocfg/ui-core/hooks';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport {\n Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink,\n PaginationNext, PaginationPrevious\n} from './pagination';\n\n/**\n * DRF Pagination Response type\n */\nexport interface DRFPaginatedResponse<T = any> {\n count: number;\n page: number;\n pages: number;\n page_size: number;\n has_next: boolean;\n has_previous: boolean;\n next_page?: number | null;\n previous_page?: number | null;\n results: T[];\n}\n\ninterface StaticPaginationProps {\n /** The DRF paginated response data */\n data?: DRFPaginatedResponse | null;\n /** Callback when page changes */\n onPageChange: (page: number) => void;\n /** Additional CSS class */\n className?: string;\n /** Show pagination info (default: true) */\n showInfo?: boolean;\n /** Maximum visible page numbers (default: 7) */\n maxVisiblePages?: number;\n}\n\nexport const StaticPagination: React.FC<StaticPaginationProps> = ({\n data,\n onPageChange,\n className,\n showInfo = true,\n maxVisiblePages = 7,\n}) => {\n const isMobile = useIsMobile();\n\n // Don't render if no data or not paginated\n if (!data || !('count' in data) || !('page' in data) || !('pages' in data)) {\n return null;\n }\n\n // Extract pagination metadata\n const {\n count: totalItems,\n page: currentPage,\n pages: totalPages,\n page_size: itemsPerPage,\n has_next: hasNextPage,\n has_previous: hasPreviousPage,\n } = data;\n\n // Don't render if only one page\n if (totalPages <= 1) {\n return null;\n }\n\n // Generate array of page numbers to display\n const getVisiblePages = (): (number | 'ellipsis')[] => {\n // On mobile, show fewer pages\n const mobileMaxVisible = 3;\n const effectiveMaxVisible = isMobile ? mobileMaxVisible : maxVisiblePages;\n\n if (totalPages <= effectiveMaxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | 'ellipsis')[] = [];\n const halfVisible = Math.floor(effectiveMaxVisible / 2);\n\n if (isMobile) {\n // Mobile: Show only current page and adjacent pages\n if (currentPage > 1) {\n pages.push(currentPage - 1);\n }\n pages.push(currentPage);\n if (currentPage < totalPages) {\n pages.push(currentPage + 1);\n }\n } else {\n // Desktop: Full pagination logic\n // Always show first page\n pages.push(1);\n\n let start = Math.max(2, currentPage - halfVisible);\n let end = Math.min(totalPages - 1, currentPage + halfVisible);\n\n // Adjust range if we're near the beginning or end\n if (currentPage <= halfVisible + 1) {\n end = Math.min(totalPages - 1, effectiveMaxVisible - 1);\n } else if (currentPage >= totalPages - halfVisible) {\n start = Math.max(2, totalPages - effectiveMaxVisible + 2);\n }\n\n // Add ellipsis after first page if needed\n if (start > 2) {\n pages.push('ellipsis');\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis before last page if needed\n if (end < totalPages - 1) {\n pages.push('ellipsis');\n }\n\n // Always show last page (if more than 1 page)\n if (totalPages > 1) {\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const visiblePages = getVisiblePages();\n const startItem = (currentPage - 1) * itemsPerPage + 1;\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\n\n const handlePageClick = (page: number) => {\n if (page !== currentPage && page >= 1 && page <= totalPages) {\n onPageChange(page);\n }\n };\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Pagination Info */}\n {showInfo && (\n <div className=\"text-sm text-muted-foreground text-center\">\n {isMobile ? (\n `Page ${currentPage} of ${totalPages}`\n ) : (\n `Showing ${startItem.toLocaleString()} to ${endItem.toLocaleString()} of ${totalItems.toLocaleString()} results`\n )}\n </div>\n )}\n\n {/* Pagination Controls */}\n <Pagination>\n <PaginationContent>\n {/* Previous Button */}\n <PaginationItem>\n <Button\n variant=\"ghost\"\n size=\"default\"\n onClick={() => handlePageClick(currentPage - 1)}\n disabled={!hasPreviousPage}\n className={cn(\n \"gap-1 pl-2.5\",\n !hasPreviousPage && \"pointer-events-none opacity-50\"\n )}\n aria-label=\"Go to previous page\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </Button>\n </PaginationItem>\n\n {/* Page Numbers */}\n {visiblePages.map((page, index) => (\n <PaginationItem key={index}>\n {page === 'ellipsis' ? (\n <PaginationEllipsis />\n ) : (\n <Button\n variant={page === currentPage ? \"outline\" : \"ghost\"}\n size=\"icon\"\n onClick={() => handlePageClick(page)}\n aria-current={page === currentPage ? \"page\" : undefined}\n className={cn(\n page === currentPage && \"pointer-events-none\"\n )}\n >\n {page}\n </Button>\n )}\n </PaginationItem>\n ))}\n\n {/* Next Button */}\n <PaginationItem>\n <Button\n variant=\"ghost\"\n size=\"default\"\n onClick={() => handlePageClick(currentPage + 1)}\n disabled={!hasNextPage}\n className={cn(\n \"gap-1 pr-2.5\",\n !hasNextPage && \"pointer-events-none opacity-50\"\n )}\n aria-label=\"Go to next page\"\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n );\n};\n\nStaticPagination.displayName = 'StaticPagination';\n\n/**\n * Hook to manage DRF pagination state\n *\n * Manages page and page_size state and provides methods to change them.\n * Works seamlessly with SWR hooks that accept params.\n *\n * Usage:\n * ```tsx\n * import { useDRFPagination } from '@djangocfg/ui-nextjs';\n * import { useMyPaginatedAPI } from './api/hooks';\n *\n * function MyComponent() {\n * const pagination = useDRFPagination();\n * const { data, isLoading } = useMyPaginatedAPI(pagination.params);\n *\n * return (\n * <div>\n * {data?.results?.map(item => <Item key={item.id} {...item} />)}\n * <StaticPagination data={data} onPageChange={pagination.setPage} />\n * </div>\n * );\n * }\n * ```\n */\nexport function useDRFPagination(initialPage = 1, initialPageSize = 10) {\n const [page, setPage] = React.useState(initialPage);\n const [pageSize, setPageSize] = React.useState(initialPageSize);\n\n // Reset to page 1 when page size changes\n const handlePageSizeChange = React.useCallback((newPageSize: number) => {\n setPageSize(newPageSize);\n setPage(1);\n }, []);\n\n // Params object that can be passed directly to SWR hooks\n const params = React.useMemo(() => ({\n page,\n page_size: pageSize,\n }), [page, pageSize]);\n\n return {\n page,\n pageSize,\n setPage,\n setPageSize: handlePageSizeChange,\n params,\n reset: () => {\n setPage(initialPage);\n setPageSize(initialPageSize);\n },\n };\n}\n\n/**\n * Hook to extract pagination info from DRF response\n *\n * Useful when you need pagination metadata in your component logic.\n *\n * Usage:\n * ```tsx\n * const paginationInfo = useDRFPaginationInfo(data);\n * if (paginationInfo) {\n * console.log(`Page ${paginationInfo.currentPage} of ${paginationInfo.totalPages}`);\n * }\n * ```\n */\nexport function useDRFPaginationInfo(data?: DRFPaginatedResponse | null) {\n return React.useMemo(() => {\n if (!data || !('count' in data) || !('page' in data)) {\n return null;\n }\n\n return {\n totalItems: data.count,\n currentPage: data.page,\n totalPages: data.pages,\n itemsPerPage: data.page_size,\n hasNext: data.has_next,\n hasPrevious: data.has_previous,\n nextPage: data.next_page,\n previousPage: data.previous_page,\n results: data.results || [],\n resultsCount: data.results?.length || 0,\n };\n }, [data]);\n}\n","\"use client\"\n\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { PanelLeft } from 'lucide-react';\nimport Link from 'next/link';\nimport * as React from 'react';\n\nimport {\n Button, Input, Separator, Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle,\n Skeleton, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger\n} from '@djangocfg/ui-core/components';\nimport { useIsMobile } from '@djangocfg/ui-core/hooks';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"min(80vw, 320px)\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-[&_[data-variant=inset]]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"!w-[--sidebar-width] p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n backgroundColor: \"hsl(var(--sidebar-background))\",\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\" style={{ backgroundColor: \"hsl(var(--sidebar-background))\" }}>{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n // Calculate gap width based on state\n const getGapWidth = () => {\n if (state === \"collapsed\") {\n if (collapsible === \"offcanvas\") return \"0\"\n if (collapsible === \"icon\") {\n return variant === \"floating\" || variant === \"inset\"\n ? \"calc(var(--sidebar-width-icon) + 1rem)\"\n : \"var(--sidebar-width-icon)\"\n }\n }\n return \"var(--sidebar-width)\"\n }\n\n // Calculate fixed sidebar width based on state\n const getFixedWidth = () => {\n if (state === \"collapsed\" && collapsible === \"icon\") {\n return variant === \"floating\" || variant === \"inset\"\n ? \"calc(var(--sidebar-width-icon) + 1rem + 2px)\"\n : \"var(--sidebar-width-icon)\"\n }\n return \"var(--sidebar-width)\"\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={collapsible}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n \"relative h-full bg-transparent transition-[width] duration-200 ease-linear\",\n side === \"right\" && \"rotate-180\"\n )}\n style={{\n width: getGapWidth()\n }}\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? state === \"collapsed\" && collapsible === \"offcanvas\"\n ? \"left-[calc(var(--sidebar-width)*-1)]\"\n : \"left-0\"\n : state === \"collapsed\" && collapsible === \"offcanvas\"\n ? \"right-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2\"\n : cn(\n side === \"left\" && \"border-r\",\n side === \"right\" && \"border-l\"\n ),\n className\n )}\n style={{\n width: getFixedWidth()\n }}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className={cn(\n \"flex h-full w-full flex-col bg-sidebar\",\n variant === \"floating\" && \"rounded-lg border border-sidebar-border shadow\"\n )}\n >\n {children}\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeft />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"group-data-[side=left]:cursor-w-resize group-data-[side=right]:cursor-e-resize\",\n \"group-data-[side=left]:group-data-[state=collapsed]:cursor-e-resize group-data-[side=right]:group-data-[state=collapsed]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"group-data-[side=left]:group-data-[collapsible=offcanvas]:-right-2\",\n \"group-data-[side=right]:group-data-[collapsible=offcanvas]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, style, ...props }, ref) => {\n const { state } = useSidebar()\n\n // Remove horizontal padding in collapsed state\n const headerStyle = state === \"collapsed\" ? {\n paddingLeft: '0',\n paddingRight: '0',\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n transition: 'padding 200ms ease-in-out',\n ...style\n } : {\n transition: 'padding 200ms ease-in-out',\n ...style\n }\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n style={headerStyle}\n {...props}\n />\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator: React.ForwardRefExoticComponent<\n React.ComponentProps<typeof Separator> & React.RefAttributes<React.ElementRef<typeof Separator>>\n> = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[state=collapsed]:group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-semibold text-muted-foreground uppercase tracking-wider outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:-mt-8 group-data-[state=collapsed]:group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[&_[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted-foreground [&>svg]:opacity-70 data-[active=true]:[&>svg]:text-sidebar-accent-foreground data-[active=true]:[&>svg]:opacity-100 hover:[&>svg]:text-sidebar-accent-foreground hover:[&>svg]:opacity-100\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[state=collapsed]:group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n href?: string\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n style,\n href,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state } = useSidebar()\n\n const buttonContent = React.useMemo(() => {\n if (href) {\n return (\n <Link\n href={href}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n style={style}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n >\n {children}\n </Link>\n )\n }\n\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n style={style}\n {...props}\n >\n {children}\n </Comp>\n )\n }, [href, asChild, ref, variant, size, className, style, isActive, children, props])\n\n if (!tooltip) {\n return buttonContent\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{buttonContent}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n href?: string\n }\n>(({ asChild = false, size = \"md\", isActive, className, href, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n const buttonClasses = cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted-foreground [&>svg]:opacity-70 data-[active=true]:[&>svg]:text-sidebar-accent-foreground data-[active=true]:[&>svg]:opacity-100 hover:[&>svg]:text-sidebar-accent-foreground hover:[&>svg]:opacity-100\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[state=collapsed]:group-data-[collapsible=icon]:hidden\",\n className\n )\n\n if (href) {\n return (\n <Link\n href={href}\n className={buttonClasses}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n >\n {children}\n </Link>\n )\n }\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={buttonClasses}\n {...props}\n >\n {children}\n </Comp>\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import React from 'react';\nimport moment from 'moment';\n\nimport {\n Badge, ButtonLink, Card, CardContent, CardDescription, CardHeader, CardTitle\n} from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nexport type ArticleType = 'security' | 'release' | 'announcement' | 'feature';\n\ninterface ArticleCardProps {\n title: string;\n description?: string;\n date: string;\n type: ArticleType;\n href: string;\n author?: string;\n tags?: string[];\n featured?: boolean;\n className?: string;\n}\n\nconst typeConfig: Record<ArticleType, { label: string; variant: 'default' | 'secondary' | 'destructive' | 'outline'; icon: string }> = {\n security: { label: 'Security', variant: 'destructive', icon: '🛡️' },\n release: { label: 'Release', variant: 'default', icon: '📦' },\n announcement: { label: 'Announcement', variant: 'secondary', icon: '📢' },\n feature: { label: 'Feature', variant: 'outline', icon: '✨' },\n};\n\nexport const ArticleCard: React.FC<ArticleCardProps> = ({\n title,\n description,\n date,\n type,\n href,\n author,\n tags,\n featured = false,\n className,\n}) => {\n const config = typeConfig[type];\n const formattedDate = moment(date).format('MMMM D, YYYY');\n\n return (\n <Card className={cn(\n 'group relative overflow-hidden transition-all duration-200 hover:shadow-lg',\n featured && 'border-primary/50 bg-primary/5',\n className\n )}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between gap-2 mb-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-lg\">{config.icon}</span>\n <Badge variant={config.variant}>{config.label}</Badge>\n </div>\n <time className=\"text-sm text-muted-foreground\">{formattedDate}</time>\n </div>\n <CardTitle className=\"text-xl group-hover:text-primary transition-colors line-clamp-2\">\n <a href={href} className=\"hover:underline\">\n {title}\n </a>\n </CardTitle>\n {description && (\n <CardDescription className=\"line-clamp-2 mt-2\">\n {description}\n </CardDescription>\n )}\n </CardHeader>\n\n <CardContent className=\"pt-0\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {author && (\n <span className=\"text-sm text-muted-foreground\">by {author}</span>\n )}\n {tags && tags.length > 0 && (\n <div className=\"flex gap-1\">\n {tags.slice(0, 2).map((tag) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n </div>\n <ButtonLink href={href} variant=\"ghost\" size=\"sm\">\n Read more →\n </ButtonLink>\n </div>\n </CardContent>\n </Card>\n );\n};\n","import React, { useMemo } from 'react';\nimport moment from 'moment';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport { ArticleCard, ArticleType } from './ArticleCard';\n\nexport interface Article {\n title: string;\n description?: string;\n date: string;\n type: ArticleType;\n href: string;\n author?: string;\n tags?: string[];\n featured?: boolean;\n}\n\ninterface ArticleListProps {\n articles: Article[];\n title?: string;\n description?: string;\n showFeatured?: boolean;\n columns?: 1 | 2 | 3;\n className?: string;\n}\n\nexport const ArticleList: React.FC<ArticleListProps> = ({\n articles,\n title,\n description,\n showFeatured = true,\n columns = 2,\n className,\n}) => {\n // Sort by date, newest first, and separate featured/regular articles\n const { featuredArticles, regularArticles } = useMemo(() => {\n const sorted = [...articles].sort(\n (a, b) => moment(b.date).valueOf() - moment(a.date).valueOf()\n );\n return {\n featuredArticles: showFeatured ? sorted.filter((a) => a.featured) : [],\n regularArticles: showFeatured ? sorted.filter((a) => !a.featured) : sorted,\n };\n }, [articles, showFeatured]);\n\n const gridCols = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n };\n\n return (\n <section className={cn('py-8', className)}>\n {(title || description) && (\n <div className=\"mb-8\">\n {title && (\n <h2 className=\"text-3xl font-bold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"mt-2 text-lg text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n\n {/* Featured Articles */}\n {featuredArticles.length > 0 && (\n <div className=\"mb-8\">\n <h3 className=\"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-4\">\n Featured\n </h3>\n <div className=\"grid gap-4\">\n {featuredArticles.map((article, index) => (\n <ArticleCard key={index} {...article} featured />\n ))}\n </div>\n </div>\n )}\n\n {/* Regular Articles */}\n {regularArticles.length > 0 && (\n <div className={cn('grid gap-4', gridCols[columns])}>\n {regularArticles.map((article, index) => (\n <ArticleCard key={index} {...article} />\n ))}\n </div>\n )}\n\n {articles.length === 0 && (\n <div className=\"text-center py-12 text-muted-foreground\">\n No articles yet. Check back soon!\n </div>\n )}\n </section>\n );\n};\n","\"use client\"\n\nimport Link from 'next/link';\nimport React from 'react';\n\nimport { Button } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface CTAButton {\n label: string;\n href?: string;\n onClick?: () => void;\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\n size?: 'default' | 'sm' | 'lg' | 'icon';\n}\n\ninterface CTASectionProps {\n title: string;\n subtitle?: string;\n primaryCTA?: CTAButton;\n secondaryCTA?: CTAButton;\n background?: 'default' | 'muted' | 'primary' | 'gradient';\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const CTASection: React.FC<CTASectionProps> = ({\n title,\n subtitle,\n primaryCTA,\n secondaryCTA,\n background = 'default',\n className,\n children\n}) => {\n // Simple Tailwind 4 classes - no custom utilities\n const backgroundClasses = {\n default: 'bg-background',\n muted: 'bg-muted/30',\n primary: 'bg-primary/5',\n gradient: 'bg-gradient-to-b from-background via-primary/5 to-background',\n };\n\n return (\n <section\n className={cn(\n 'relative py-16 sm:py-20 md:py-24 lg:py-32',\n backgroundClasses[background],\n className\n )}\n >\n {/* Simple decorative background - using only Tailwind classes */}\n {background === 'gradient' && (\n <div className=\"absolute inset-0 -z-10 overflow-hidden pointer-events-none\" aria-hidden=\"true\">\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-4xl aspect-square bg-primary/10 rounded-full blur-3xl\" />\n </div>\n )}\n\n <div className=\"container max-w-4xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"text-center space-y-6 sm:space-y-8\">\n {/* Title */}\n <h2 className=\"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight\">\n {title}\n </h2>\n\n {/* Subtitle */}\n {subtitle && (\n <p className=\"text-base sm:text-lg md:text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed\">\n {subtitle}\n </p>\n )}\n\n {/* CTA Buttons */}\n {(primaryCTA || secondaryCTA) && (\n <div className=\"flex flex-col sm:flex-row gap-3 sm:gap-4 justify-center items-center pt-4\">\n {primaryCTA && (\n primaryCTA.onClick ? (\n <Button\n onClick={primaryCTA.onClick}\n variant={primaryCTA.variant || 'default'}\n size={primaryCTA.size || 'lg'}\n className=\"w-full sm:w-auto\"\n >\n {primaryCTA.label}\n </Button>\n ) : (\n <Button\n asChild\n variant={primaryCTA.variant || 'default'}\n size={primaryCTA.size || 'lg'}\n className=\"w-full sm:w-auto\"\n >\n <Link href={primaryCTA.href || '#'}>\n {primaryCTA.label}\n </Link>\n </Button>\n )\n )}\n\n {secondaryCTA && (\n secondaryCTA.onClick ? (\n <Button\n onClick={secondaryCTA.onClick}\n variant={secondaryCTA.variant || 'outline'}\n size={secondaryCTA.size || 'lg'}\n className=\"w-full sm:w-auto\"\n >\n {secondaryCTA.label}\n </Button>\n ) : (\n <Button\n asChild\n variant={secondaryCTA.variant || 'outline'}\n size={secondaryCTA.size || 'lg'}\n className=\"w-full sm:w-auto\"\n >\n <Link href={secondaryCTA.href || '#'}>\n {secondaryCTA.label}\n </Link>\n </Button>\n )\n )}\n </div>\n )}\n\n {/* Optional children content */}\n {children && (\n <div className=\"pt-8 sm:pt-12\">\n {children}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n};\n","import React from 'react';\n\nimport {\n Card, CardContent, CardDescription, CardHeader, CardTitle\n} from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface Feature {\n icon?: React.ReactNode;\n title: string;\n description: string;\n gradient?: string;\n}\n\ninterface FeatureSectionProps {\n title?: string;\n subtitle?: string;\n features: Feature[];\n columns?: 1 | 2 | 3 | 4 | 6;\n className?: string;\n background?: 'dark' | 'card' | 'gradient' | 'none';\n /** Compact variant: smaller icons, no cards, minimal spacing */\n variant?: 'default' | 'compact';\n}\n\nexport const FeatureSection: React.FC<FeatureSectionProps> = ({\n title,\n subtitle,\n features,\n columns = 3,\n className,\n background = 'dark',\n variant = 'default'\n}) => {\n const getGridClasses = () => {\n if (variant === 'compact') {\n switch (columns) {\n case 2:\n return 'grid-cols-2';\n case 3:\n return 'grid-cols-2 md:grid-cols-3';\n case 4:\n return 'grid-cols-2 md:grid-cols-4';\n case 6:\n return 'grid-cols-2 md:grid-cols-3 lg:grid-cols-6';\n default:\n return 'grid-cols-2 md:grid-cols-3';\n }\n }\n switch (columns) {\n case 1:\n return 'grid-cols-1 max-w-2xl mx-auto';\n case 2:\n return 'grid-cols-1 sm:grid-cols-2';\n case 3:\n return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';\n case 4:\n return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4';\n case 6:\n return 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6';\n default:\n return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';\n }\n };\n\n const getBackgroundClasses = () => {\n switch (background) {\n case 'dark':\n return 'bg-muted/30';\n case 'card':\n return 'bg-card';\n case 'gradient':\n return 'bg-gradient-to-b from-background to-muted/20';\n case 'none':\n return '';\n default:\n return 'bg-background';\n }\n };\n\n // Compact variant render\n if (variant === 'compact') {\n return (\n <section className={cn('py-12 md:py-16', getBackgroundClasses(), className)}>\n <div className=\"container max-w-5xl mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-8\">\n {title && (\n <h2 className=\"text-xl sm:text-2xl font-bold text-foreground mb-2\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-sm text-muted-foreground max-w-2xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n <div className={cn('grid gap-4', getGridClasses())}>\n {features.map((feature, index) => (\n <div key={index} className=\"text-center p-4\">\n {feature.icon && (\n <div\n className={cn(\n 'w-10 h-10 mx-auto mb-3 rounded-lg flex items-center justify-center',\n feature.gradient || 'bg-primary/10 text-primary'\n )}\n >\n <div className=\"[&>svg]:w-5 [&>svg]:h-5\">\n {feature.icon}\n </div>\n </div>\n )}\n <h3 className=\"font-medium text-sm mb-1\">{feature.title}</h3>\n <p className=\"text-xs text-muted-foreground\">{feature.description}</p>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n }\n\n // Default variant render\n return (\n <section className={cn('py-12 sm:py-16 lg:py-24', getBackgroundClasses(), className)}>\n <div className=\"w-full px-4 sm:px-6 lg:px-8\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12 sm:mb-16\">\n {title && (\n <h2 className=\"text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-4 sm:mb-6\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-base sm:text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto px-2\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n <div className={cn('grid gap-6 sm:gap-8', getGridClasses())}>\n {features.map((feature, index) => (\n <Card\n key={index}\n className=\"h-full hover:shadow-lg transition-all duration-300 backdrop-blur-sm border-border/50 hover:border-primary/30 group\"\n >\n <CardHeader className=\"pb-4\">\n {feature.icon && (\n <div className={cn(\n 'w-12 h-12 sm:w-16 sm:h-16 rounded-lg flex items-center justify-center mb-4 sm:mb-6 group-hover:scale-110 transition-all duration-300',\n feature.gradient || 'bg-primary/10 text-primary group-hover:bg-primary/20'\n )}>\n <div className=\"text-xl sm:text-2xl\">\n {feature.icon}\n </div>\n </div>\n )}\n <CardTitle className=\"text-lg sm:text-xl text-foreground group-hover:text-primary transition-colors duration-300\">\n {feature.title}\n </CardTitle>\n </CardHeader>\n <CardContent>\n <CardDescription className=\"text-sm sm:text-base text-muted-foreground leading-relaxed\">\n {feature.description}\n </CardDescription>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </section>\n );\n}; ","import React from 'react';\n\nimport { ButtonLink } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface HeroProps {\n title: string;\n subtitle?: string;\n description?: string;\n primaryAction?: {\n label: string;\n href: string;\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\n };\n secondaryAction?: {\n label: string;\n href: string;\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';\n };\n background?: 'gradient' | 'solid' | 'image' | 'dark';\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const Hero: React.FC<HeroProps> = ({\n title,\n subtitle,\n description,\n primaryAction,\n secondaryAction,\n background = 'dark',\n className,\n children\n}) => {\n // Simple Tailwind 4 classes only - no custom utilities\n const backgroundClasses = {\n gradient: 'bg-gradient-to-b from-primary/10 to-background',\n solid: 'bg-primary text-primary-foreground',\n image: 'bg-cover bg-center bg-no-repeat text-white',\n dark: 'bg-background text-foreground',\n };\n\n return (\n <section className={cn(\n 'relative py-16 sm:py-20 md:py-24 lg:py-32',\n backgroundClasses[background],\n className\n )}>\n <div className=\"container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"text-center max-w-4xl mx-auto\">\n {subtitle && (\n <p className=\"text-base sm:text-lg md:text-xl mb-4 sm:mb-6 text-muted-foreground font-medium\">\n {subtitle}\n </p>\n )}\n\n <h1 className=\"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold mb-6 sm:mb-8 leading-tight\">\n {title}\n </h1>\n\n {description && (\n <p className=\"text-lg sm:text-xl md:text-2xl mb-8 sm:mb-10 md:mb-12 text-muted-foreground leading-relaxed max-w-3xl mx-auto\">\n {description}\n </p>\n )}\n\n {(primaryAction || secondaryAction) && (\n <div className=\"flex flex-col sm:flex-row gap-3 sm:gap-4 justify-center\">\n {primaryAction && (\n <ButtonLink\n href={primaryAction.href}\n variant={primaryAction.variant || 'default'}\n size=\"huge\"\n className=\"w-full sm:w-auto\"\n >\n {primaryAction.label}\n </ButtonLink>\n )}\n\n {secondaryAction && (\n <ButtonLink\n href={secondaryAction.href}\n variant={secondaryAction.variant || 'outline'}\n size=\"huge\"\n className=\"w-full sm:w-auto\"\n >\n {secondaryAction.label}\n </ButtonLink>\n )}\n </div>\n )}\n\n {children && (\n <div className=\"mt-12 sm:mt-14 md:mt-16 flex justify-center\">\n {children}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}; ","\"use client\"\n\nimport { Mail } from 'lucide-react';\nimport React from 'react';\n\nimport { Button, Input } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface NewsletterSectionProps {\n title?: string;\n description?: string;\n placeholder?: string;\n buttonText?: string;\n disclaimer?: string;\n background?: 'default' | 'muted' | 'primary' | 'gradient';\n className?: string;\n onSubmit?: (email: string) => void;\n}\n\n/**\n * NewsletterSection - Email subscription block\n * Fully responsive and theme-aware (light/dark mode)\n * Follows Tailwind CSS v4 canons - no custom utilities\n */\nexport const NewsletterSection: React.FC<NewsletterSectionProps> = ({\n title = \"Stay Updated with Our Newsletter\",\n description = \"Get the latest insights on AI, technology, and software development delivered to your inbox.\",\n placeholder = \"Enter your email address\",\n buttonText = \"Subscribe\",\n disclaimer = \"No spam, unsubscribe at any time\",\n background = 'muted',\n className,\n onSubmit\n}) => {\n const [email, setEmail] = React.useState('');\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (email && onSubmit) {\n onSubmit(email);\n setEmail('');\n }\n };\n\n // Simple Tailwind 4 classes only - no custom utilities\n // All variants work in both light and dark themes\n const backgroundClasses = {\n default: 'bg-background',\n muted: 'bg-muted/50',\n primary: 'bg-primary/5',\n gradient: 'bg-gradient-to-b from-background via-primary/5 to-background',\n };\n\n return (\n <section className={cn(\n 'relative py-16 sm:py-20 md:py-24 lg:py-32',\n backgroundClasses[background],\n className\n )}>\n {/* Decorative background for gradient variant only */}\n {background === 'gradient' && (\n <div className=\"absolute inset-0 -z-10 overflow-hidden pointer-events-none\" aria-hidden=\"true\">\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-4xl aspect-square bg-primary/10 rounded-full blur-3xl\" />\n </div>\n )}\n\n <div className=\"container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"text-center max-w-3xl mx-auto\">\n {/* Title */}\n <h2 className=\"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight mb-4 sm:mb-6\">\n {title}\n </h2>\n\n {/* Description */}\n {description && (\n <p className=\"text-base sm:text-lg md:text-xl text-muted-foreground leading-relaxed mb-8 sm:mb-10 md:mb-12\">\n {description}\n </p>\n )}\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"max-w-md mx-auto\">\n <div className=\"flex flex-col sm:flex-row gap-3 sm:gap-4\">\n {/* Email Input */}\n <div className=\"relative flex-1\">\n <Mail className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none\" />\n <Input\n type=\"email\"\n placeholder={placeholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n className=\"pl-10 h-12 w-full\"\n required\n aria-label=\"Email address\"\n />\n </div>\n\n {/* Submit Button */}\n <Button\n type=\"submit\"\n size=\"lg\"\n className=\"h-12 w-full sm:w-auto sm:min-w-[120px]\"\n >\n {buttonText}\n </Button>\n </div>\n\n {/* Disclaimer */}\n {disclaimer && (\n <p className=\"text-xs sm:text-sm text-muted-foreground mt-3 text-center\">\n {disclaimer}\n </p>\n )}\n </form>\n </div>\n </div>\n </section>\n );\n}; ","'use client';\n\nimport React from 'react';\nimport { ArrowRight, Sparkles } from 'lucide-react';\nimport { ButtonLink } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport type { SplitHeroBadge, SplitHeroAction, SplitHeroFeature } from './types';\n\ninterface SplitHeroContentProps {\n badge?: SplitHeroBadge;\n title: string;\n titleGradient?: string;\n subtitle?: string;\n features?: SplitHeroFeature[];\n primaryAction?: SplitHeroAction;\n secondaryAction?: SplitHeroAction;\n align?: 'top' | 'center' | 'bottom';\n className?: string;\n}\n\nexport const SplitHeroContent: React.FC<SplitHeroContentProps> = ({\n badge,\n title,\n titleGradient,\n subtitle,\n features = [],\n primaryAction,\n secondaryAction,\n align = 'center',\n className,\n}) => {\n const alignClasses = {\n top: 'justify-start',\n center: 'justify-center',\n bottom: 'justify-end',\n };\n\n return (\n <div className={cn('flex flex-col', alignClasses[align], className)}>\n {/* Badge */}\n {badge && (\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 bg-primary/10 text-primary rounded-full text-sm font-medium mb-4 w-fit border border-primary/20\">\n {badge.icon || <Sparkles className=\"w-3.5 h-3.5\" />}\n {badge.text}\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"text-3xl sm:text-4xl lg:text-5xl font-bold text-foreground mb-4 leading-tight\">\n {title}\n {titleGradient && (\n <>\n {' '}\n <span className=\"bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent\">\n {titleGradient}\n </span>\n </>\n )}\n </h1>\n\n {/* Subtitle */}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground mb-6 leading-relaxed\">\n {subtitle}\n </p>\n )}\n\n {/* Features */}\n {features.length > 0 && (\n <div className=\"flex flex-wrap gap-3 mb-6\">\n {features.map((feature, index) => (\n <div\n key={index}\n className=\"flex items-center gap-2 text-sm text-muted-foreground\"\n >\n {feature.icon && (\n <span className=\"text-primary\">{feature.icon}</span>\n )}\n <span>{feature.text}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Actions */}\n {(primaryAction || secondaryAction) && (\n <div className=\"flex flex-wrap gap-3\">\n {primaryAction && (\n <ButtonLink\n href={primaryAction.href || '#'}\n onClick={primaryAction.onClick}\n variant={primaryAction.variant || 'default'}\n size=\"lg\"\n className=\"group\"\n >\n {primaryAction.label}\n {primaryAction.icon || (\n <ArrowRight className=\"w-4 h-4 group-hover:translate-x-1 transition-transform\" />\n )}\n </ButtonLink>\n )}\n {secondaryAction && (\n <ButtonLink\n href={secondaryAction.href || '#'}\n onClick={secondaryAction.onClick}\n variant={secondaryAction.variant || 'outline'}\n size=\"lg\"\n >\n {secondaryAction.label}\n {secondaryAction.icon}\n </ButtonLink>\n )}\n </div>\n )}\n </div>\n );\n};\n","'use client';\n\nimport React from 'react';\nimport Image from 'next/image';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { VideoPlayer } from '@djangocfg/ui-tools';\nimport type { SplitHeroMedia as SplitHeroMediaType } from './types';\n\ninterface SplitHeroMediaProps {\n media: SplitHeroMediaType;\n className?: string;\n}\n\nexport const SplitHeroMedia: React.FC<SplitHeroMediaProps> = ({\n media,\n className,\n}) => {\n const containerClass = cn(\n 'relative w-full rounded-xl overflow-hidden',\n className\n );\n\n switch (media.type) {\n case 'image':\n return (\n <div className={containerClass}>\n <div className=\"relative aspect-[4/3] w-full\">\n <Image\n src={media.src}\n alt={media.alt || ''}\n fill\n className=\"object-cover\"\n sizes=\"(max-width: 768px) 100vw, 50vw\"\n />\n </div>\n </div>\n );\n\n case 'video':\n return (\n <div className={containerClass}>\n <VideoPlayer\n source={{\n type: 'url',\n url: media.url,\n title: media.title,\n poster: media.poster,\n }}\n theme=\"modern\"\n aspectRatio={16 / 9}\n autoPlay={media.autoplay}\n muted={media.muted ?? media.autoplay}\n />\n </div>\n );\n\n case 'custom':\n return (\n <div className={containerClass}>\n {media.content}\n </div>\n );\n\n default:\n return null;\n }\n};\n","'use client';\n\nimport React from 'react';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { SplitHeroContent } from './SplitHeroContent';\nimport { SplitHeroMedia } from './SplitHeroMedia';\nimport type { SplitHeroProps } from './types';\n\nconst MAX_WIDTH_CLASSES = {\n sm: 'max-w-3xl',\n md: 'max-w-4xl',\n lg: 'max-w-5xl',\n xl: 'max-w-6xl',\n full: 'max-w-7xl',\n};\n\nconst BACKGROUND_CLASSES = {\n none: '',\n muted: 'bg-muted/30',\n gradient: 'bg-gradient-to-br from-primary/5 via-background to-secondary/5',\n};\n\nexport const SplitHero: React.FC<SplitHeroProps> = ({\n badge,\n title,\n titleGradient,\n subtitle,\n features,\n primaryAction,\n secondaryAction,\n media,\n layout = 'text-left',\n mobileOrder = 'text-first',\n align = 'center',\n maxWidth = 'xl',\n background = 'none',\n className,\n}) => {\n const isTextLeft = layout === 'text-left';\n const isMediaFirst = mobileOrder === 'media-first';\n\n return (\n <section\n className={cn(\n 'py-12 md:py-16 lg:py-20',\n BACKGROUND_CLASSES[background],\n className\n )}\n >\n <div className={cn('mx-auto px-4', MAX_WIDTH_CLASSES[maxWidth])}>\n <div\n className={cn(\n 'grid gap-8 lg:gap-12 items-center',\n media ? 'lg:grid-cols-2' : 'lg:grid-cols-1 max-w-3xl mx-auto'\n )}\n >\n {/* Content - order changes based on layout and mobile settings */}\n <div\n className={cn(\n // Desktop order based on layout\n isTextLeft ? 'lg:order-1' : 'lg:order-2',\n // Mobile order based on mobileOrder\n isMediaFirst ? 'order-2' : 'order-1'\n )}\n >\n <SplitHeroContent\n badge={badge}\n title={title}\n titleGradient={titleGradient}\n subtitle={subtitle}\n features={features}\n primaryAction={primaryAction}\n secondaryAction={secondaryAction}\n align={align}\n />\n </div>\n\n {/* Media */}\n {media && (\n <div\n className={cn(\n // Desktop order based on layout\n isTextLeft ? 'lg:order-2' : 'lg:order-1',\n // Mobile order based on mobileOrder\n isMediaFirst ? 'order-1' : 'order-2'\n )}\n >\n <SplitHeroMedia media={media} />\n </div>\n )}\n </div>\n </div>\n </section>\n );\n};\n","import React from 'react';\n\nimport { Card, CardContent } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface Stat {\n number: string;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n}\n\ninterface StatsSectionProps {\n title: string;\n subtitle?: string;\n stats: Stat[];\n columns?: 2 | 3 | 4;\n className?: string;\n background?: 'dark' | 'card' | 'gradient';\n}\n\nexport const StatsSection: React.FC<StatsSectionProps> = ({\n title,\n subtitle,\n stats,\n columns = 4,\n className,\n background = 'dark'\n}) => {\n const getGridClasses = () => {\n switch (columns) {\n case 2:\n return 'grid-cols-1 sm:grid-cols-2';\n case 3:\n return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';\n case 4:\n return 'grid-cols-2 sm:grid-cols-2 lg:grid-cols-4';\n default:\n return 'grid-cols-2 sm:grid-cols-2 lg:grid-cols-4';\n }\n };\n\n const getBackgroundClasses = () => {\n switch (background) {\n case 'dark':\n return 'bg-background';\n case 'card':\n return 'gradient-card';\n case 'gradient':\n return 'gradient-subtle';\n default:\n return 'bg-background';\n }\n };\n\n return (\n <section className={cn('py-12 sm:py-16 lg:py-24', getBackgroundClasses(), className)}>\n <div className=\"w-full px-4 sm:px-6 lg:px-8\">\n <div className=\"text-center mb-12 sm:mb-16 animate-fade-in\">\n <h2 className=\"text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-4 sm:mb-6\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-base sm:text-lg md:text-xl text-muted-foreground max-w-3xl mx-auto px-2\">\n {subtitle}\n </p>\n )}\n </div>\n \n <div className={cn('grid gap-6 sm:gap-8', getGridClasses())}>\n {stats.map((stat, index) => (\n <Card \n key={index} \n className=\"text-center hover:shadow-large transition-all duration-300 animate-scale-in backdrop-blur-sm border-border/50 hover:border-primary/30 group\"\n style={{ animationDelay: `${index * 0.1}s` }}\n >\n <CardContent className=\"p-6 sm:p-8\">\n {stat.icon && (\n <div className=\"w-12 h-12 sm:w-16 sm:h-16 bg-primary/10 text-primary rounded-lg flex items-center justify-center mx-auto mb-4 sm:mb-6 group-hover:scale-110 group-hover:bg-primary/20 transition-all duration-300\">\n <div className=\"text-xl sm:text-2xl\">\n {stat.icon}\n </div>\n </div>\n )}\n <div className=\"text-3xl sm:text-4xl lg:text-5xl font-bold text-foreground mb-2 sm:mb-3 group-hover:text-primary transition-colors duration-300\">\n {stat.number}\n </div>\n <div className=\"text-sm sm:text-base text-muted-foreground font-medium\">\n {stat.label}\n </div>\n {stat.description && (\n <p className=\"text-xs sm:text-sm text-muted-foreground mt-2\">\n {stat.description}\n </p>\n )}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </section>\n );\n}; ","'use client';\n\nimport React, { useMemo } from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\nexport type BackgroundVariant =\n | 'aurora-borealis'\n | 'mesh-gradient'\n | 'floating-orbs'\n | 'geometric-flow'\n | 'liquid-gradient'\n | 'spotlight'\n | 'none'\n // Legacy aliases\n | 'gradient-mesh'\n | 'dot-matrix'\n | 'grid-lines'\n | 'aurora'\n | 'particles'\n | 'waves';\n\ninterface AnimatedBackgroundProps {\n variant?: BackgroundVariant;\n className?: string;\n intensity?: 'subtle' | 'medium' | 'strong';\n /** Color scheme - 'vibrant' uses multiple colors, 'monochrome' uses primary only */\n colorScheme?: 'vibrant' | 'monochrome' | 'cool' | 'warm';\n}\n\n// Map legacy variants to new ones\nconst variantMap: Record<string, BackgroundVariant> = {\n 'gradient-mesh': 'mesh-gradient',\n 'dot-matrix': 'geometric-flow',\n 'grid-lines': 'geometric-flow',\n 'aurora': 'aurora-borealis',\n 'particles': 'floating-orbs',\n 'waves': 'liquid-gradient',\n};\n\nexport const AnimatedBackground: React.FC<AnimatedBackgroundProps> = ({\n variant = 'mesh-gradient',\n className,\n intensity = 'medium',\n colorScheme = 'vibrant',\n}) => {\n // Map legacy variants\n const resolvedVariant = variantMap[variant] || variant;\n\n const intensityConfig = useMemo(() => ({\n subtle: { opacity: 0.15, blur: 'blur-3xl', scale: 0.8 },\n medium: { opacity: 0.25, blur: 'blur-2xl', scale: 1 },\n strong: { opacity: 0.4, blur: 'blur-xl', scale: 1.2 },\n }[intensity]), [intensity]);\n\n // Color palettes using CSS variables\n const colors = useMemo(() => {\n const palettes = {\n vibrant: [\n 'hsl(var(--chart-1))', // Blue\n 'hsl(var(--chart-2))', // Green\n 'hsl(var(--chart-3))', // Purple\n 'hsl(var(--chart-4))', // Orange\n 'hsl(var(--chart-5))', // Red\n ],\n monochrome: [\n 'hsl(var(--primary))',\n 'hsl(var(--primary) / 0.8)',\n 'hsl(var(--primary) / 0.6)',\n ],\n cool: [\n 'hsl(var(--chart-1))', // Blue\n 'hsl(var(--chart-3))', // Purple\n 'hsl(210 100% 50%)', // Bright blue\n 'hsl(260 100% 60%)', // Violet\n ],\n warm: [\n 'hsl(var(--chart-4))', // Orange\n 'hsl(var(--chart-5))', // Red\n 'hsl(35 100% 55%)', // Gold\n 'hsl(350 100% 60%)', // Rose\n ],\n };\n return palettes[colorScheme];\n }, [colorScheme]);\n\n if (resolvedVariant === 'none') {\n return null;\n }\n\n return (\n <div\n className={cn(\"absolute overflow-hidden pointer-events-none\", className)}\n style={{ inset: 0, width: '100%', height: '100%' }}\n >\n {resolvedVariant === 'aurora-borealis' && (\n <AuroraBorealis colors={colors} intensity={intensityConfig} />\n )}\n\n {resolvedVariant === 'mesh-gradient' && (\n <MeshGradient colors={colors} intensity={intensityConfig} />\n )}\n\n {resolvedVariant === 'floating-orbs' && (\n <FloatingOrbs colors={colors} intensity={intensityConfig} />\n )}\n\n {resolvedVariant === 'geometric-flow' && (\n <GeometricFlow colors={colors} intensity={intensityConfig} />\n )}\n\n {resolvedVariant === 'liquid-gradient' && (\n <LiquidGradient colors={colors} intensity={intensityConfig} />\n )}\n\n {resolvedVariant === 'spotlight' && (\n <Spotlight colors={colors} intensity={intensityConfig} />\n )}\n\n <AnimationStyles />\n </div>\n );\n};\n\n// =============================================================================\n// Aurora Borealis - Flowing northern lights effect\n// =============================================================================\n\ninterface VariantProps {\n colors: string[];\n intensity: { opacity: number; blur: string; scale: number };\n}\n\nconst AuroraBorealis: React.FC<VariantProps> = ({ colors, intensity }) => (\n <>\n {/* Base layer - subtle gradient */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(135deg, ${colors[0]} 0%, transparent 50%, ${colors[1]} 100%)`,\n opacity: intensity.opacity * 0.3,\n }}\n />\n\n {/* Aurora bands */}\n <div\n className={cn(\"absolute inset-0\", intensity.blur)}\n style={{\n background: `linear-gradient(110deg,\n transparent 0%,\n ${colors[0]} 20%,\n ${colors[2] || colors[0]} 35%,\n ${colors[1]} 50%,\n ${colors[3] || colors[1]} 65%,\n ${colors[0]} 80%,\n transparent 100%\n )`,\n opacity: intensity.opacity,\n animation: 'aurora-shift 15s ease-in-out infinite',\n transform: `translateY(-30%) scaleY(${intensity.scale})`,\n }}\n />\n\n {/* Secondary aurora layer */}\n <div\n className={cn(\"absolute inset-0\", intensity.blur)}\n style={{\n background: `linear-gradient(70deg,\n transparent 0%,\n ${colors[1]} 25%,\n ${colors[2] || colors[0]} 50%,\n ${colors[0]} 75%,\n transparent 100%\n )`,\n opacity: intensity.opacity * 0.7,\n animation: 'aurora-shift 20s ease-in-out infinite reverse',\n animationDelay: '-5s',\n transform: `translateY(-20%) scaleY(${intensity.scale * 0.8})`,\n }}\n />\n\n {/* Shimmer overlay */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `radial-gradient(ellipse 100% 50% at 50% 0%,\n ${colors[2] || colors[0]} 0%,\n transparent 70%\n )`,\n opacity: intensity.opacity * 0.4,\n animation: 'aurora-shimmer 8s ease-in-out infinite',\n }}\n />\n </>\n);\n\n// =============================================================================\n// Mesh Gradient - Modern Apple-style gradient mesh\n// =============================================================================\n\nconst MeshGradient: React.FC<VariantProps> = ({ colors, intensity }) => (\n <>\n {/* Large gradient orbs with different colors */}\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '60%',\n height: '60%',\n top: '-10%',\n right: '-10%',\n background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,\n opacity: intensity.opacity,\n animation: 'mesh-float-1 25s ease-in-out infinite',\n transform: `scale(${intensity.scale})`,\n }}\n />\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '50%',\n height: '50%',\n bottom: '-5%',\n left: '-5%',\n background: `radial-gradient(circle, ${colors[1]} 0%, transparent 70%)`,\n opacity: intensity.opacity,\n animation: 'mesh-float-2 30s ease-in-out infinite',\n transform: `scale(${intensity.scale})`,\n }}\n />\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '40%',\n height: '40%',\n top: '30%',\n left: '25%',\n background: `radial-gradient(circle, ${colors[2] || colors[0]} 0%, transparent 70%)`,\n opacity: intensity.opacity * 0.8,\n animation: 'mesh-float-3 20s ease-in-out infinite',\n transform: `scale(${intensity.scale})`,\n }}\n />\n {colors[3] && (\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '35%',\n height: '35%',\n bottom: '20%',\n right: '15%',\n background: `radial-gradient(circle, ${colors[3]} 0%, transparent 70%)`,\n opacity: intensity.opacity * 0.6,\n animation: 'mesh-float-4 22s ease-in-out infinite',\n transform: `scale(${intensity.scale})`,\n }}\n />\n )}\n </>\n);\n\n// =============================================================================\n// Floating Orbs - Animated glowing spheres\n// =============================================================================\n\nconst FloatingOrbs: React.FC<VariantProps> = ({ colors, intensity }) => {\n const orbs = useMemo(() => {\n return Array.from({ length: 12 }).map((_, i) => ({\n id: i,\n size: 60 + (i % 4) * 40,\n x: (i * 23) % 100,\n y: (i * 31) % 100,\n color: colors[i % colors.length],\n duration: 15 + (i % 5) * 5,\n delay: i * 1.5,\n }));\n }, [colors]);\n\n return (\n <>\n {orbs.map((orb) => (\n <div\n key={orb.id}\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: `${orb.size * intensity.scale}px`,\n height: `${orb.size * intensity.scale}px`,\n left: `${orb.x}%`,\n top: `${orb.y}%`,\n background: `radial-gradient(circle at 30% 30%, ${orb.color}, transparent 70%)`,\n opacity: intensity.opacity * (0.5 + (orb.id % 3) * 0.2),\n animation: `orb-float-${(orb.id % 4) + 1} ${orb.duration}s ease-in-out infinite`,\n animationDelay: `${orb.delay}s`,\n }}\n />\n ))}\n </>\n );\n};\n\n// =============================================================================\n// Geometric Flow - Clean geometric patterns\n// =============================================================================\n\nconst GeometricFlow: React.FC<VariantProps> = ({ colors, intensity }) => (\n <>\n {/* Gradient base */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(135deg,\n ${colors[0]} 0%,\n transparent 30%,\n transparent 70%,\n ${colors[1]} 100%\n )`,\n opacity: intensity.opacity * 0.3,\n }}\n />\n\n {/* Animated grid */}\n <div\n className=\"absolute inset-0\"\n style={{\n backgroundImage: `\n linear-gradient(${colors[0]}20 1px, transparent 1px),\n linear-gradient(90deg, ${colors[0]}20 1px, transparent 1px)\n `,\n backgroundSize: '60px 60px',\n animation: 'grid-drift 30s linear infinite',\n opacity: intensity.opacity,\n }}\n />\n\n {/* Diagonal lines */}\n <div\n className=\"absolute inset-0\"\n style={{\n backgroundImage: `repeating-linear-gradient(\n 45deg,\n transparent,\n transparent 80px,\n ${colors[2] || colors[0]}10 80px,\n ${colors[2] || colors[0]}10 82px\n )`,\n animation: 'diagonal-shift 20s linear infinite',\n opacity: intensity.opacity,\n }}\n />\n\n {/* Glowing intersection points */}\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '40%',\n height: '40%',\n top: '20%',\n left: '50%',\n transform: 'translateX(-50%)',\n background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,\n opacity: intensity.opacity * 0.5,\n animation: 'pulse-glow 8s ease-in-out infinite',\n }}\n />\n </>\n);\n\n// =============================================================================\n// Liquid Gradient - Smooth flowing liquid effect\n// =============================================================================\n\nconst LiquidGradient: React.FC<VariantProps> = ({ colors, intensity }) => (\n <>\n {/* Base gradient */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(180deg,\n transparent 0%,\n ${colors[0]}15 30%,\n ${colors[1]}20 50%,\n ${colors[2] || colors[0]}15 70%,\n transparent 100%\n )`,\n opacity: intensity.opacity,\n }}\n />\n\n {/* Liquid blob 1 */}\n <div\n className={cn(\"absolute\", intensity.blur)}\n style={{\n width: '120%',\n height: '50%',\n bottom: '-10%',\n left: '-10%',\n background: `linear-gradient(90deg,\n ${colors[0]} 0%,\n ${colors[1]} 33%,\n ${colors[2] || colors[0]} 66%,\n ${colors[0]} 100%\n )`,\n opacity: intensity.opacity,\n borderRadius: '50% 50% 0 0',\n animation: 'liquid-flow-1 12s ease-in-out infinite',\n transform: `scaleY(${intensity.scale})`,\n }}\n />\n\n {/* Liquid blob 2 */}\n <div\n className={cn(\"absolute\", intensity.blur)}\n style={{\n width: '100%',\n height: '40%',\n bottom: '-5%',\n left: '0',\n background: `linear-gradient(90deg,\n ${colors[1]} 0%,\n ${colors[2] || colors[0]} 50%,\n ${colors[3] || colors[1]} 100%\n )`,\n opacity: intensity.opacity * 0.8,\n borderRadius: '60% 40% 0 0',\n animation: 'liquid-flow-2 15s ease-in-out infinite',\n transform: `scaleY(${intensity.scale * 0.9})`,\n }}\n />\n\n {/* Floating bubbles */}\n {Array.from({ length: 6 }).map((_, i) => (\n <div\n key={i}\n className=\"absolute rounded-full\"\n style={{\n width: `${12 + i * 4}px`,\n height: `${12 + i * 4}px`,\n left: `${15 + i * 15}%`,\n bottom: '10%',\n background: `radial-gradient(circle at 30% 30%,\n ${colors[i % colors.length]}80,\n ${colors[i % colors.length]}20\n )`,\n border: `1px solid ${colors[i % colors.length]}40`,\n opacity: intensity.opacity,\n animation: `bubble-float ${8 + i * 2}s ease-in-out infinite`,\n animationDelay: `${i * 2}s`,\n }}\n />\n ))}\n </>\n);\n\n// =============================================================================\n// Spotlight - Dramatic spotlight effect\n// =============================================================================\n\nconst Spotlight: React.FC<VariantProps> = ({ colors, intensity }) => (\n <>\n {/* Main spotlight */}\n <div\n className={cn(\"absolute\", intensity.blur)}\n style={{\n width: '80%',\n height: '80%',\n top: '-20%',\n left: '50%',\n transform: 'translateX(-50%)',\n background: `conic-gradient(from 180deg at 50% 50%,\n ${colors[0]} 0deg,\n ${colors[1]} 60deg,\n ${colors[2] || colors[0]} 120deg,\n ${colors[3] || colors[1]} 180deg,\n ${colors[0]} 240deg,\n ${colors[1]} 300deg,\n ${colors[0]} 360deg\n )`,\n opacity: intensity.opacity,\n animation: 'spotlight-rotate 30s linear infinite',\n }}\n />\n\n {/* Center fade */}\n <div\n className=\"absolute inset-0\"\n style={{\n background: `radial-gradient(circle at 50% 30%,\n transparent 0%,\n hsl(var(--background)) 70%\n )`,\n }}\n />\n\n {/* Accent glow */}\n <div\n className={cn(\"absolute rounded-full\", intensity.blur)}\n style={{\n width: '50%',\n height: '50%',\n top: '10%',\n left: '25%',\n background: `radial-gradient(circle, ${colors[0]} 0%, transparent 70%)`,\n opacity: intensity.opacity * 0.5,\n animation: 'pulse-glow 6s ease-in-out infinite',\n }}\n />\n </>\n);\n\n// =============================================================================\n// Animation Styles\n// =============================================================================\n\nconst AnimationStyles: React.FC = () => (\n <style>{`\n @keyframes aurora-shift {\n 0%, 100% {\n transform: translateX(-10%) translateY(-30%) scaleX(1.1);\n }\n 50% {\n transform: translateX(10%) translateY(-25%) scaleX(0.9);\n }\n }\n\n @keyframes aurora-shimmer {\n 0%, 100% {\n opacity: 0.2;\n transform: scale(1);\n }\n 50% {\n opacity: 0.4;\n transform: scale(1.05);\n }\n }\n\n @keyframes mesh-float-1 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(-5%, 10%) scale(1.05); }\n 50% { transform: translate(5%, 5%) scale(0.95); }\n 75% { transform: translate(-3%, -5%) scale(1.02); }\n }\n\n @keyframes mesh-float-2 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 33% { transform: translate(8%, -8%) scale(1.08); }\n 66% { transform: translate(-6%, 6%) scale(0.92); }\n }\n\n @keyframes mesh-float-3 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 50% { transform: translate(10%, 10%) scale(1.1); }\n }\n\n @keyframes mesh-float-4 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(5%, -10%) scale(0.95); }\n 75% { transform: translate(-8%, 5%) scale(1.05); }\n }\n\n @keyframes orb-float-1 {\n 0%, 100% { transform: translate(0, 0); }\n 50% { transform: translate(30px, -40px); }\n }\n\n @keyframes orb-float-2 {\n 0%, 100% { transform: translate(0, 0); }\n 50% { transform: translate(-25px, 35px); }\n }\n\n @keyframes orb-float-3 {\n 0%, 100% { transform: translate(0, 0); }\n 33% { transform: translate(40px, 20px); }\n 66% { transform: translate(-20px, -30px); }\n }\n\n @keyframes orb-float-4 {\n 0%, 100% { transform: translate(0, 0); }\n 25% { transform: translate(-35px, -25px); }\n 75% { transform: translate(25px, 40px); }\n }\n\n @keyframes grid-drift {\n 0% { transform: translate(0, 0); }\n 100% { transform: translate(60px, 60px); }\n }\n\n @keyframes diagonal-shift {\n 0% { transform: translateX(0); }\n 100% { transform: translateX(160px); }\n }\n\n @keyframes pulse-glow {\n 0%, 100% { opacity: 0.3; transform: translateX(-50%) scale(1); }\n 50% { opacity: 0.6; transform: translateX(-50%) scale(1.1); }\n }\n\n @keyframes liquid-flow-1 {\n 0%, 100% {\n transform: translateY(0) scaleX(1);\n border-radius: 50% 50% 0 0;\n }\n 25% {\n transform: translateY(-30px) scaleX(1.05);\n border-radius: 45% 55% 0 0;\n }\n 50% {\n transform: translateY(-50px) scaleX(0.95);\n border-radius: 55% 45% 0 0;\n }\n 75% {\n transform: translateY(-25px) scaleX(1.02);\n border-radius: 48% 52% 0 0;\n }\n }\n\n @keyframes liquid-flow-2 {\n 0%, 100% {\n transform: translateY(0) scaleX(1);\n border-radius: 60% 40% 0 0;\n }\n 33% {\n transform: translateY(-40px) scaleX(1.08);\n border-radius: 40% 60% 0 0;\n }\n 66% {\n transform: translateY(-60px) scaleX(0.92);\n border-radius: 55% 45% 0 0;\n }\n }\n\n @keyframes bubble-float {\n 0%, 100% {\n transform: translateY(0) scale(1);\n opacity: 0.6;\n }\n 50% {\n transform: translateY(-100px) scale(1.2);\n opacity: 0.3;\n }\n }\n\n @keyframes spotlight-rotate {\n 0% { transform: translateX(-50%) rotate(0deg); }\n 100% { transform: translateX(-50%) rotate(360deg); }\n }\n `}</style>\n);\n","'use client';\n\nimport React, { useEffect, useRef, useState, useCallback, useMemo } from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\nexport type MouseFollowerVariant =\n | 'glow'\n | 'spotlight'\n | 'gradient-blob'\n | 'ring'\n | 'trail';\n\ninterface MouseFollowerProps {\n /** Visual style of the follower */\n variant?: MouseFollowerVariant;\n /** Size of the effect in pixels */\n size?: number;\n /** Color - can be CSS color or 'primary' to use theme */\n color?: string;\n /** Smoothness of following (0.05 = very smooth, 0.3 = snappy) */\n smoothness?: number;\n /** Opacity of the effect (0-1) */\n opacity?: number;\n /** Blur amount for glow effects */\n blur?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n /** Additional className for the container */\n className?: string;\n /** Whether to show on mobile (touch devices) */\n showOnMobile?: boolean;\n /** Disable the effect */\n disabled?: boolean;\n}\n\ninterface Position {\n x: number;\n y: number;\n}\n\nconst blurMap = {\n sm: 'blur-sm',\n md: 'blur-md',\n lg: 'blur-lg',\n xl: 'blur-xl',\n '2xl': 'blur-2xl',\n '3xl': 'blur-3xl',\n};\n\nexport const MouseFollower: React.FC<MouseFollowerProps> = ({\n variant = 'glow',\n size = 300,\n color = 'primary',\n smoothness = 0.1,\n opacity = 0.3,\n blur = '2xl',\n className,\n showOnMobile = false,\n disabled = false,\n}) => {\n const [mounted, setMounted] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n const positionRef = useRef<Position>({ x: 0, y: 0 });\n const targetRef = useRef<Position>({ x: 0, y: 0 });\n const elementRef = useRef<HTMLDivElement>(null);\n const rafRef = useRef<number>(0);\n\n // Resolve color\n const resolvedColor = useMemo(() => {\n if (color === 'primary') return 'hsl(var(--primary))';\n if (color === 'secondary') return 'hsl(var(--secondary))';\n if (color === 'accent') return 'hsl(var(--accent))';\n return color;\n }, [color]);\n\n // Check if mobile\n useEffect(() => {\n setMounted(true);\n const checkMobile = () => {\n setIsMobile('ontouchstart' in window || navigator.maxTouchPoints > 0);\n };\n checkMobile();\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\n\n // Animation loop with lerp\n const animate = useCallback(() => {\n const dx = targetRef.current.x - positionRef.current.x;\n const dy = targetRef.current.y - positionRef.current.y;\n\n positionRef.current.x += dx * smoothness;\n positionRef.current.y += dy * smoothness;\n\n if (elementRef.current) {\n elementRef.current.style.transform = `translate(${positionRef.current.x - size / 2}px, ${positionRef.current.y - size / 2}px)`;\n }\n\n rafRef.current = requestAnimationFrame(animate);\n }, [smoothness, size]);\n\n // Mouse move handler\n useEffect(() => {\n if (disabled || !mounted) return;\n if (isMobile && !showOnMobile) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n targetRef.current = { x: e.clientX, y: e.clientY };\n if (!isVisible) setIsVisible(true);\n };\n\n const handleMouseLeave = () => {\n setIsVisible(false);\n };\n\n const handleMouseEnter = () => {\n setIsVisible(true);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseleave', handleMouseLeave);\n document.addEventListener('mouseenter', handleMouseEnter);\n\n rafRef.current = requestAnimationFrame(animate);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseleave', handleMouseLeave);\n document.removeEventListener('mouseenter', handleMouseEnter);\n cancelAnimationFrame(rafRef.current);\n };\n }, [disabled, mounted, isMobile, showOnMobile, animate, isVisible]);\n\n if (!mounted || disabled) return null;\n if (isMobile && !showOnMobile) return null;\n\n return (\n <div\n className={cn(\n 'fixed inset-0 pointer-events-none overflow-hidden z-0',\n className\n )}\n >\n <div\n ref={elementRef}\n className={cn(\n 'absolute top-0 left-0 transition-opacity duration-300',\n isVisible ? 'opacity-100' : 'opacity-0'\n )}\n style={{ width: size, height: size }}\n >\n {variant === 'glow' && (\n <GlowEffect\n size={size}\n color={resolvedColor}\n opacity={opacity}\n blur={blurMap[blur]}\n />\n )}\n\n {variant === 'spotlight' && (\n <SpotlightEffect\n size={size}\n color={resolvedColor}\n opacity={opacity}\n blur={blurMap[blur]}\n />\n )}\n\n {variant === 'gradient-blob' && (\n <GradientBlobEffect\n size={size}\n color={resolvedColor}\n opacity={opacity}\n blur={blurMap[blur]}\n />\n )}\n\n {variant === 'ring' && (\n <RingEffect\n size={size}\n color={resolvedColor}\n opacity={opacity}\n />\n )}\n\n {variant === 'trail' && (\n <TrailEffect\n size={size}\n color={resolvedColor}\n opacity={opacity}\n blur={blurMap[blur]}\n />\n )}\n </div>\n </div>\n );\n};\n\n// =============================================================================\n// Effect Variants\n// =============================================================================\n\ninterface EffectProps {\n size: number;\n color: string;\n opacity: number;\n blur?: string;\n}\n\nconst GlowEffect: React.FC<EffectProps> = ({ size, color, opacity, blur }) => (\n <div\n className={cn('w-full h-full rounded-full', blur)}\n style={{\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n opacity,\n }}\n />\n);\n\nconst SpotlightEffect: React.FC<EffectProps> = ({ size, color, opacity, blur }) => (\n <>\n {/* Main spotlight cone */}\n <div\n className={cn('absolute inset-0', blur)}\n style={{\n background: `conic-gradient(from 180deg at 50% 50%,\n transparent 0deg,\n ${color} 150deg,\n ${color} 210deg,\n transparent 360deg\n )`,\n opacity: opacity * 0.6,\n }}\n />\n {/* Center glow */}\n <div\n className={cn('absolute rounded-full', blur)}\n style={{\n width: '40%',\n height: '40%',\n top: '30%',\n left: '30%',\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n opacity,\n }}\n />\n </>\n);\n\nconst GradientBlobEffect: React.FC<EffectProps> = ({ size, color, opacity, blur }) => (\n <>\n {/* Animated blob shape */}\n <div\n className={cn('w-full h-full', blur)}\n style={{\n background: `radial-gradient(ellipse 60% 40% at 50% 50%, ${color} 0%, transparent 70%)`,\n opacity,\n animation: 'blob-morph 8s ease-in-out infinite',\n }}\n />\n {/* Secondary blob */}\n <div\n className={cn('absolute inset-0', blur)}\n style={{\n background: `radial-gradient(ellipse 40% 60% at 50% 50%, ${color} 0%, transparent 60%)`,\n opacity: opacity * 0.5,\n animation: 'blob-morph 8s ease-in-out infinite reverse',\n animationDelay: '-4s',\n }}\n />\n <style>{`\n @keyframes blob-morph {\n 0%, 100% { transform: scale(1) rotate(0deg); border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }\n 25% { transform: scale(1.1) rotate(90deg); border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }\n 50% { transform: scale(0.9) rotate(180deg); border-radius: 50% 60% 30% 60% / 30% 60% 70% 40%; }\n 75% { transform: scale(1.05) rotate(270deg); border-radius: 60% 40% 50% 40% / 70% 30% 50% 60%; }\n }\n `}</style>\n </>\n);\n\nconst RingEffect: React.FC<EffectProps> = ({ size, color, opacity }) => (\n <>\n {/* Outer ring */}\n <div\n className=\"absolute inset-0 rounded-full\"\n style={{\n border: `2px solid ${color}`,\n opacity: opacity * 0.3,\n }}\n />\n {/* Middle ring */}\n <div\n className=\"absolute rounded-full\"\n style={{\n inset: '15%',\n border: `2px solid ${color}`,\n opacity: opacity * 0.5,\n animation: 'ring-pulse 2s ease-in-out infinite',\n }}\n />\n {/* Inner ring */}\n <div\n className=\"absolute rounded-full\"\n style={{\n inset: '30%',\n border: `2px solid ${color}`,\n opacity: opacity * 0.7,\n animation: 'ring-pulse 2s ease-in-out infinite',\n animationDelay: '-1s',\n }}\n />\n {/* Center dot */}\n <div\n className=\"absolute rounded-full\"\n style={{\n width: '8px',\n height: '8px',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n background: color,\n opacity,\n }}\n />\n <style>{`\n @keyframes ring-pulse {\n 0%, 100% { opacity: 0.3; transform: scale(1); }\n 50% { opacity: 0.7; transform: scale(1.05); }\n }\n `}</style>\n </>\n);\n\nconst TrailEffect: React.FC<EffectProps> = ({ size, color, opacity, blur }) => (\n <>\n {/* Multiple trailing circles */}\n {Array.from({ length: 5 }).map((_, i) => (\n <div\n key={i}\n className={cn('absolute rounded-full', blur)}\n style={{\n width: `${100 - i * 15}%`,\n height: `${100 - i * 15}%`,\n top: `${i * 7.5}%`,\n left: `${i * 7.5}%`,\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n opacity: opacity * (1 - i * 0.15),\n transition: `transform ${0.1 + i * 0.05}s ease-out`,\n }}\n />\n ))}\n </>\n);\n","/**\n * ThemeProvider - Universal theme management\n *\n * Re-exports next-themes ThemeProvider with sensible defaults.\n * Supports light, dark, and system themes with localStorage persistence.\n *\n * @example\n * ```tsx\n * // In app/layout.tsx\n * import { ThemeProvider } from '@djangocfg/ui-nextjs';\n *\n * <ThemeProvider\n * attribute=\"class\"\n * defaultTheme=\"system\"\n * enableSystem\n * >\n * {children}\n * </ThemeProvider>\n * ```\n */\n\n'use client';\n\nimport { ThemeProvider as NextThemesProvider, useTheme as useNextTheme } from 'next-themes';\n\nimport type { ThemeProviderProps as NextThemesProviderProps } from 'next-themes';\n\n// Re-export types\nexport type Theme = 'light' | 'dark' | 'system';\nexport type ThemeProviderProps = NextThemesProviderProps;\n\n/**\n * ThemeProvider wraps next-themes with sensible defaults\n */\nexport function ThemeProvider({\n children,\n attribute = 'class',\n defaultTheme = 'system',\n enableSystem = true,\n disableTransitionOnChange = true,\n ...props\n}: ThemeProviderProps) {\n return (\n <NextThemesProvider\n attribute={attribute}\n defaultTheme={defaultTheme}\n enableSystem={enableSystem}\n disableTransitionOnChange={disableTransitionOnChange}\n {...props}\n >\n {children}\n </NextThemesProvider>\n );\n}\n\n/**\n * Hook to access theme context\n * Returns theme, setTheme, resolvedTheme, systemTheme, and themes\n */\nexport function useThemeContext() {\n const { theme, setTheme, resolvedTheme, systemTheme, themes } = useNextTheme();\n\n const toggleTheme = () => {\n // Toggle between light and dark (ignore system)\n const currentResolved = resolvedTheme || 'light';\n setTheme(currentResolved === 'light' ? 'dark' : 'light');\n };\n\n return {\n theme: theme as Theme | undefined,\n setTheme,\n resolvedTheme: resolvedTheme as 'light' | 'dark' | undefined,\n systemTheme: systemTheme as 'light' | 'dark' | undefined,\n themes,\n toggleTheme,\n };\n}\n","/**\n * ThemeToggle - Theme switcher component\n *\n * Switches between light and dark themes.\n * Must be used within ThemeProvider.\n *\n * @example\n * ```tsx\n * import { ThemeToggle } from '@djangocfg/ui-nextjs';\n *\n * // Default\n * <ThemeToggle />\n *\n * // Compact (for mobile/tight spaces)\n * <ThemeToggle size=\"compact\" />\n *\n * // Custom className\n * <ThemeToggle className=\"ml-auto\" />\n * ```\n */\n\n'use client';\n\nimport { Moon, Sun } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport { Button } from '@djangocfg/ui-core/components';\nimport { useIsMobile } from '@djangocfg/ui-core/hooks';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { useThemeContext } from './ThemeProvider';\n\nexport interface ThemeToggleProps {\n /** Custom className */\n className?: string;\n /** Size variant (auto-detects mobile if not specified) */\n size?: 'default' | 'compact' | 'auto';\n}\n\nexport function ThemeToggle({ className, size = 'auto' }: ThemeToggleProps) {\n const { resolvedTheme, toggleTheme } = useThemeContext();\n const [mounted, setMounted] = useState(false);\n const isMobile = useIsMobile();\n\n // Prevent hydration mismatch\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Determine actual size based on prop and screen size\n const actualSize = size === 'auto' ? (isMobile ? 'compact' : 'default') : size;\n const buttonSize = actualSize === 'compact' ? 'h-8 w-8' : 'h-9 w-9';\n const iconSize = actualSize === 'compact' ? 'h-3.5 w-3.5' : 'h-4 w-4';\n\n if (!mounted) {\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(buttonSize, className)}\n disabled\n >\n <Sun className={iconSize} />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n );\n }\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={toggleTheme}\n className={cn(buttonSize, className)}\n title={`Switch to ${resolvedTheme === 'light' ? 'dark' : 'light'} theme`}\n >\n {resolvedTheme === 'light' ? (\n <Sun className={iconSize} />\n ) : (\n <Moon className={iconSize} />\n )}\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n );\n}\n","/**\n * ForceTheme - Force a specific theme for a section\n *\n * Wraps content to override the global theme setting.\n * Works by adding both the theme class and inline CSS variables\n * to ensure proper theme application regardless of parent context.\n */\n\n'use client';\n\nimport React, { ReactNode } from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface ForceThemeProps {\n theme: 'light' | 'dark';\n children: ReactNode;\n className?: string;\n}\n\n// Dark theme CSS variables\nconst darkThemeVars = {\n // Base HSL values\n '--background': '0 0% 4%',\n '--foreground': '0 0% 98%',\n '--card': '0 0% 8%',\n '--card-foreground': '0 0% 98%',\n '--popover': '0 0% 12%',\n '--popover-foreground': '0 0% 98%',\n '--primary': '217 91% 60%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '0 0% 98%',\n '--secondary-foreground': '0 0% 9%',\n '--muted': '0 0% 10%',\n '--muted-foreground': '0 0% 60%',\n '--accent': '0 0% 15%',\n '--accent-foreground': '0 0% 98%',\n '--destructive': '0 84% 60%',\n '--destructive-foreground': '0 0% 98%',\n '--border': '0 0% 15%',\n '--input': '0 0% 15%',\n '--ring': '217 91% 60%',\n // Tailwind color tokens (used by bg-*, text-*, etc)\n '--color-background': 'hsl(0 0% 4%)',\n '--color-foreground': 'hsl(0 0% 98%)',\n '--color-card': 'hsl(0 0% 8%)',\n '--color-card-foreground': 'hsl(0 0% 98%)',\n '--color-primary': 'hsl(217 91% 60%)',\n '--color-primary-foreground': 'hsl(0 0% 100%)',\n '--color-secondary': 'hsl(0 0% 98%)',\n '--color-secondary-foreground': 'hsl(0 0% 9%)',\n '--color-muted': 'hsl(0 0% 10%)',\n '--color-muted-foreground': 'hsl(0 0% 60%)',\n '--color-accent': 'hsl(0 0% 15%)',\n '--color-accent-foreground': 'hsl(0 0% 98%)',\n '--color-destructive': 'hsl(0 84% 60%)',\n '--color-destructive-foreground': 'hsl(0 0% 98%)',\n '--color-border': 'hsl(0 0% 15%)',\n '--color-input': 'hsl(0 0% 15%)',\n '--color-ring': 'hsl(217 91% 60%)',\n} as React.CSSProperties;\n\n// Light theme CSS variables\nconst lightThemeVars = {\n // Base HSL values\n '--background': '0 0% 96%',\n '--foreground': '0 0% 9%',\n '--card': '0 0% 100%',\n '--card-foreground': '0 0% 9%',\n '--popover': '0 0% 100%',\n '--popover-foreground': '0 0% 9%',\n '--primary': '217 91% 60%',\n '--primary-foreground': '0 0% 100%',\n '--secondary': '0 0% 9%',\n '--secondary-foreground': '0 0% 98%',\n '--muted': '0 0% 96%',\n '--muted-foreground': '0 0% 40%',\n '--accent': '0 0% 92%',\n '--accent-foreground': '0 0% 9%',\n '--destructive': '0 84% 60%',\n '--destructive-foreground': '0 0% 98%',\n '--border': '0 0% 90%',\n '--input': '0 0% 90%',\n '--ring': '217 91% 60%',\n // Tailwind color tokens (used by bg-*, text-*, etc)\n '--color-background': 'hsl(0 0% 96%)',\n '--color-foreground': 'hsl(0 0% 9%)',\n '--color-card': 'hsl(0 0% 100%)',\n '--color-card-foreground': 'hsl(0 0% 9%)',\n '--color-primary': 'hsl(217 91% 60%)',\n '--color-primary-foreground': 'hsl(0 0% 100%)',\n '--color-secondary': 'hsl(0 0% 9%)',\n '--color-secondary-foreground': 'hsl(0 0% 98%)',\n '--color-muted': 'hsl(0 0% 96%)',\n '--color-muted-foreground': 'hsl(0 0% 40%)',\n '--color-accent': 'hsl(0 0% 92%)',\n '--color-accent-foreground': 'hsl(0 0% 9%)',\n '--color-destructive': 'hsl(0 84% 60%)',\n '--color-destructive-foreground': 'hsl(0 0% 98%)',\n '--color-border': 'hsl(0 0% 90%)',\n '--color-input': 'hsl(0 0% 90%)',\n '--color-ring': 'hsl(217 91% 60%)',\n} as React.CSSProperties;\n\nexport function ForceTheme({ theme, children, className }: ForceThemeProps) {\n const themeVars = theme === 'dark' ? darkThemeVars : lightThemeVars;\n\n return (\n <div\n className={cn(theme, className)}\n style={themeVars}\n >\n {children}\n </div>\n );\n}\n","\"use client\"\n\nimport { ArrowRight, Sparkles, Wand2 } from 'lucide-react';\nimport React from 'react';\n\nimport {\n Button, ButtonLink, CopyButton, Sticky, Tooltip, TooltipContent, TooltipTrigger\n} from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport { AnimatedBackground, BackgroundVariant} from '../animations';\nimport { ForceTheme } from '../theme';\n\ninterface HeroFeature {\n icon: React.ReactNode;\n text: string;\n}\n\ninterface StatItem {\n number: string;\n label: string;\n icon?: React.ReactNode;\n}\n\ninterface SuperHeroProps {\n badge?: {\n icon?: React.ReactNode;\n text: string;\n };\n title: string;\n titleGradient?: string;\n subtitle: string;\n features?: HeroFeature[];\n primaryAction?: {\n label: string;\n href?: string;\n onClick?: () => void;\n };\n secondaryAction?: {\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: React.ReactNode;\n };\n stats?: StatItem[];\n floatingElements?: React.ReactNode;\n backgroundVariant?: BackgroundVariant;\n backgroundIntensity?: 'subtle' | 'medium' | 'strong';\n showBackgroundSwitcher?: boolean;\n /** Single command (for backwards compatibility) */\n codeCommand?: string;\n /** Array of commands to display with copy buttons */\n codeCommands?: string[];\n className?: string;\n}\n\nconst BACKGROUND_VARIANTS: BackgroundVariant[] = [\n 'aurora-borealis',\n 'mesh-gradient',\n 'floating-orbs',\n 'geometric-flow',\n 'liquid-gradient',\n 'spotlight',\n 'none'\n];\n\nconst VARIANT_LABELS: Partial<Record<BackgroundVariant, string>> = {\n 'aurora-borealis': 'Aurora Borealis',\n 'mesh-gradient': 'Mesh Gradient',\n 'floating-orbs': 'Floating Orbs',\n 'geometric-flow': 'Geometric Flow',\n 'liquid-gradient': 'Liquid Gradient',\n 'spotlight': 'Spotlight',\n 'none': 'None',\n // Legacy labels for backwards compatibility\n 'gradient-mesh': 'Gradient Mesh',\n 'dot-matrix': 'Dot Matrix',\n 'grid-lines': 'Grid Lines',\n 'aurora': 'Aurora',\n 'particles': 'Particles',\n 'waves': 'Waves',\n};\n\nexport const SuperHero: React.FC<SuperHeroProps> = ({\n badge,\n title,\n titleGradient,\n subtitle,\n features = [],\n primaryAction,\n secondaryAction,\n stats = [],\n floatingElements,\n backgroundVariant = 'mesh-gradient',\n backgroundIntensity = 'medium',\n showBackgroundSwitcher = false,\n codeCommand,\n codeCommands,\n className\n}) => {\n const [currentVariant, setCurrentVariant] = React.useState<BackgroundVariant>(backgroundVariant);\n const [isMenuOpen, setIsMenuOpen] = React.useState(false);\n const [heroTheme, setHeroTheme] = React.useState<'light' | 'dark'>('dark');\n\n // Merge codeCommand (deprecated) with codeCommands for backwards compatibility\n const commands = React.useMemo(() => {\n if (codeCommands && codeCommands.length > 0) return codeCommands;\n if (codeCommand) return [codeCommand];\n return [];\n }, [codeCommand, codeCommands]);\n\n // Pre-compute title lines to avoid repeated split in JSX\n const titleLines = React.useMemo(() => title.split('\\n'), [title]);\n \n // Show background switcher in development mode or if explicitly enabled\n const isDevelopment = process.env.NODE_ENV === 'development';\n const shouldShowSwitcher = showBackgroundSwitcher || isDevelopment;\n\n const cycleBackground = () => {\n const currentIndex = BACKGROUND_VARIANTS.indexOf(currentVariant);\n const nextIndex = (currentIndex + 1) % BACKGROUND_VARIANTS.length;\n setCurrentVariant(BACKGROUND_VARIANTS[nextIndex]);\n };\n\n return (\n <ForceTheme theme={heroTheme}>\n <section\n className={cn(\n \"relative overflow-hidden bg-background text-foreground z-0 isolate\",\n className\n )}\n >\n {/* Animated Background */}\n <div className=\"absolute inset-0 -z-10\">\n <AnimatedBackground variant={currentVariant} intensity={backgroundIntensity} />\n </div>\n\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 sm:py-24 lg:py-32 relative z-10\">\n <div className=\"text-center\">\n {/* Enhanced Badge */}\n {badge && (\n <div className=\"inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full text-sm font-medium mb-6 border border-primary/20 hover:bg-primary/20 transition-all duration-300\">\n {badge.icon || <Sparkles className=\"w-4 h-4\" />}\n {badge.text}\n </div>\n )}\n\n {/* Enhanced Main Title */}\n <h1 className=\"text-4xl sm:text-5xl lg:text-6xl xl:text-7xl font-bold text-foreground mb-6 leading-tight\">\n {titleLines.map((line, index) => (\n <React.Fragment key={index}>\n {line}\n {index < titleLines.length - 1 && <br />}\n </React.Fragment>\n ))}\n {titleGradient && (\n <>\n <br />\n <span className=\"bg-gradient-to-r from-primary via-primary/80 to-secondary bg-clip-text text-transparent animate-pulse\">\n {titleGradient}\n </span>\n </>\n )}\n </h1>\n\n {/* Enhanced Subtitle */}\n <p className=\"text-xl sm:text-2xl lg:text-3xl text-muted-foreground mb-8 max-w-4xl mx-auto leading-relaxed\">\n {subtitle}\n </p>\n\n {/* Code Commands */}\n {commands.length > 0 && (\n <div className=\"flex flex-col items-center gap-2 mb-8\">\n {commands.map((cmd, index) => (\n <div\n key={index}\n className=\"inline-flex items-center gap-3 px-6 py-3 bg-background/50 backdrop-blur-md border border-primary/20 rounded-xl shadow-lg hover:border-primary/40 transition-colors group\"\n >\n <span className=\"text-muted-foreground font-mono text-sm select-none\">$</span>\n <code className=\"font-mono text-lg text-primary font-semibold\">\n {cmd}\n </code>\n <CopyButton\n value={cmd}\n variant=\"ghost\"\n className=\"p-1.5 h-auto rounded-md bg-primary/10 text-primary hover:bg-primary hover:text-primary-foreground transition-colors\"\n iconClassName=\"w-4 h-4\"\n />\n </div>\n ))}\n </div>\n )}\n\n {/* Enhanced Features */}\n {features.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-6 mb-8\">\n {features.map((feature, index) => (\n <div\n key={index}\n className=\"flex items-center gap-2 text-sm text-muted-foreground bg-card/50 px-4 py-2 rounded-full border border-border/50 hover:border-primary/30 hover:bg-card transition-all duration-300\"\n >\n {feature.icon}\n <span>{feature.text}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Enhanced CTA Buttons */}\n {(primaryAction || secondaryAction) && (\n <div className=\"flex flex-col sm:flex-row gap-4 justify-center mb-12\">\n {primaryAction && (\n <ButtonLink\n href={primaryAction.href || '#'}\n onClick={primaryAction.onClick}\n size=\"huge\"\n className=\"group\"\n >\n {primaryAction.label}\n <ArrowRight className=\"group-hover:translate-x-1 transition-transform duration-300\" />\n </ButtonLink>\n )}\n {secondaryAction && (\n <ButtonLink\n href={secondaryAction.href || '#'}\n onClick={secondaryAction.onClick}\n variant=\"outline\"\n size=\"huge\"\n className=\"group\"\n >\n {secondaryAction.label}\n {secondaryAction.icon && (\n <span className=\"group-hover:rotate-12 transition-transform duration-300\">\n {secondaryAction.icon}\n </span>\n )}\n </ButtonLink>\n )}\n </div>\n )}\n\n {/* Enhanced Stats Preview */}\n {stats.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-x-6 gap-y-3 md:gap-x-8 md:gap-y-4 max-w-3xl mx-auto\">\n {stats.map((stat, index) => (\n <div\n key={index}\n className=\"text-center min-w-[80px] md:min-w-[100px] px-4 py-2 md:px-5 md:py-3 rounded-lg border border-foreground/8 bg-background/10 backdrop-blur-sm\"\n >\n <div className=\"text-lg md:text-xl font-bold text-foreground mb-0.5 md:mb-1\">\n {stat.number}\n </div>\n <div className=\"text-[10px] md:text-xs text-foreground/50 uppercase tracking-wide\">\n {stat.label}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* Floating Elements */}\n {floatingElements}\n\n {/* Sticky Background Switcher Bar */}\n {shouldShowSwitcher && (\n <Sticky \n bottom \n offsetBottom={32}\n className=\"w-full flex justify-center pointer-events-none\"\n zIndex={50}\n >\n <div className=\"inline-flex items-center gap-2 px-4 py-2 bg-background/90 backdrop-blur-md border border-border rounded-full shadow-lg pointer-events-auto\">\n {/* Current Background Label */}\n <span className=\"text-xs text-muted-foreground font-medium\">\n {VARIANT_LABELS[currentVariant] || currentVariant}\n </span>\n \n {/* Separator */}\n <div className=\"w-px h-4 bg-border\" />\n \n {/* Cycle Background Button */}\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={cycleBackground}\n className=\"h-7 w-7 p-0\"\n >\n <Wand2 className=\"w-3.5 h-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Cycle background</p>\n </TooltipContent>\n </Tooltip>\n\n {/* Background Menu */}\n <div className=\"relative\">\n {isMenuOpen && (\n <div className=\"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 bg-card border border-border rounded-lg shadow-xl p-2 min-w-[180px]\">\n <div className=\"text-xs font-semibold text-muted-foreground mb-2 px-2\">\n Background Style\n </div>\n <div className=\"space-y-1\">\n {BACKGROUND_VARIANTS.map((variant) => (\n <button\n key={variant}\n onClick={() => {\n setCurrentVariant(variant);\n setIsMenuOpen(false);\n }}\n className={cn(\n \"w-full text-left px-3 py-2 rounded-md text-sm transition-colors\",\n currentVariant === variant\n ? \"bg-primary text-primary-foreground\"\n : \"hover:bg-accent hover:text-accent-foreground\"\n )}\n >\n {VARIANT_LABELS[variant] || variant}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n className=\"h-7 w-7 p-0\"\n >\n <Sparkles className=\"w-3.5 h-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Choose background</p>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n </Sticky>\n )}\n </section>\n </ForceTheme>\n );\n}; ","import React from 'react';\n\nimport { Card, CardContent } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\n\ninterface Testimonial {\n content: string;\n author: {\n name: string;\n title?: string;\n company?: string;\n avatar?: string;\n };\n rating?: number;\n}\n\ninterface TestimonialSectionProps {\n title?: string;\n subtitle?: string;\n testimonials: Testimonial[];\n columns?: 1 | 2 | 3;\n className?: string;\n background?: 'dark' | 'card' | 'gradient';\n}\n\nexport const TestimonialSection: React.FC<TestimonialSectionProps> = ({\n title,\n subtitle,\n testimonials,\n columns = 3,\n className,\n background = 'dark'\n}) => {\n // Simple Tailwind 4 classes only - no custom utilities\n const gridClasses = {\n 1: 'grid-cols-1 max-w-4xl mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n };\n\n const backgroundClasses = {\n dark: 'bg-background',\n card: 'bg-muted/30',\n gradient: 'bg-gradient-to-b from-background via-muted/10 to-background',\n };\n\n const renderStars = (rating: number) => {\n return Array.from({ length: 5 }, (_, i) => (\n <span key={i} className={i < rating ? 'text-yellow-400' : 'text-neutral-400'}>\n ★\n </span>\n ));\n };\n\n return (\n <section className={cn(\n 'relative py-16 sm:py-20 md:py-24 lg:py-32',\n backgroundClasses[background],\n className\n )}>\n <div className=\"container max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12 sm:mb-14 md:mb-16\">\n {title && (\n <h2 className=\"text-3xl sm:text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-4 sm:mb-6\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg sm:text-xl text-muted-foreground max-w-3xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n <div className={cn('grid gap-6 sm:gap-8', gridClasses[columns])}>\n {testimonials.map((testimonial, index) => (\n <Card\n key={index}\n className=\"h-full hover:shadow-lg transition-all duration-300 backdrop-blur-sm border-border/50 hover:border-primary/30 group\"\n >\n <CardContent className=\"p-8\">\n {testimonial.rating && (\n <div className=\"flex mb-6 text-lg\">\n {renderStars(testimonial.rating)}\n </div>\n )}\n \n <blockquote className=\"text-foreground mb-8 italic text-lg leading-relaxed group-hover:text-primary transition-colors duration-300\">\n \"{testimonial.content}\"\n </blockquote>\n \n <div className=\"flex items-center\">\n {testimonial.author.avatar && (\n <img\n src={testimonial.author.avatar}\n alt={testimonial.author.name}\n className=\"w-14 h-14 rounded-full mr-4 ring-2 ring-primary/20 group-hover:ring-primary/40 transition-all duration-300\"\n />\n )}\n \n <div>\n <div className=\"font-semibold text-foreground group-hover:text-primary transition-colors duration-300\">\n {testimonial.author.name}\n </div>\n {testimonial.author.title && (\n <div className=\"text-sm text-muted-foreground\">\n {testimonial.author.title}\n {testimonial.author.company && ` at ${testimonial.author.company}`}\n </div>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </section>\n );\n}; "]}