nexoreui-cli 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/add.ts","../src/utils/detect.ts","../src/utils/copy.ts","../src/registry/button.ts","../src/registry/modal.ts","../src/registry/card.ts","../src/registry/alert.ts","../src/registry/badge.ts","../src/registry/morphing-geometry.ts","../src/registry/aurora-border-fx.ts","../src/registry/aurora-search-pill.ts","../src/registry/template-ai-startup.ts","../src/registry/template-modern-saas.ts","../src/registry/template-analytics-dashboard.ts","../src/registry/template-devtools-cli.ts","../src/registry/template-creative-portfolio.ts","../src/registry/template-fintech-app.ts","../src/registry/template-ecommerce-store.ts","../src/registry/template-agency-creative.ts","../src/registry/template-ai-chat.ts","../src/registry/template-project-management.ts","../src/registry/template-startup-waitlist.ts","../src/registry/template-docs-platform.ts","../src/registry/template-healthcare-portal.ts","../src/registry/template-web3-dex.ts","../src/registry/template-edtech-learning.ts","../src/registry/template-conference-event.ts","../src/registry/template-audio-podcast.ts","../src/registry/template-real-estate.ts","../src/registry/template-uptime-status.ts","../src/registry/template-agent-workflow.ts","../src/registry/template-restaurant-culinary.ts","../src/registry/template-help-center.ts","../src/registry/template-fitness-athletics.ts","../src/registry/template-wilderness-travel.ts","../src/registry/template-devops-kubernetes.ts","../src/registry/template-audio-daw.ts","../src/registry/template-gamified-habits.ts","../src/registry/template-global-logistics.ts","../src/registry/template-gaming-esports.ts","../src/registry/template-architecture-spatial.ts","../src/registry/template-cybersecurity-soc.ts","../src/registry/template-cleantech-agriculture.ts","../src/registry/template-juris-vault.ts","../src/registry/template-orbitalx-mission.ts","../src/registry/template-cineboard-studio.ts","../src/registry/template-domus-living.ts","../src/registry/template-hyperion-ev.ts","../src/registry/template-sovereign-auctions.ts","../src/registry/template-scholaris-archive.ts","../src/registry/template-talentorbit-hr.ts","../src/registry/template-miseenplace-kds.ts","../src/registry/template-aurasolace-sanctuary.ts","../src/registry/index.ts","../src/commands/list.ts","../src/commands/init.ts","../src/utils/config.ts","../src/commands/create.ts","../src/index.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { execSync } from 'child_process';\nimport { detectProject } from '../utils/detect.js';\nimport { ensureCnUtil, copyComponentFile, ensureDir } from '../utils/copy.js';\nimport { registry } from '../registry/index.js';\n\nfunction askQuestion(query: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) =>\n rl.question(query, (ans) => {\n rl.close();\n resolve(ans);\n })\n );\n}\n\nexport interface AddOptions {\n yes?: boolean;\n all?: boolean;\n overwrite?: boolean;\n}\n\nexport async function addCommand(components: string[], options: AddOptions = {}) {\n const allRegistryKeys = Object.keys(registry);\n\n // If --all flag is passed, select all registered components\n let targetComponents = [...components];\n if (options.all || targetComponents.includes('--all')) {\n targetComponents = allRegistryKeys;\n console.log(`\\n\\x1b[36m⚡ Adding all ${targetComponents.length} components from NexoreUI registry...\\x1b[0m`);\n }\n\n if (targetComponents.length === 0) {\n console.error('\\x1b[31mError: Please specify components to add or use --all.\\x1b[0m');\n console.log('Example: npx nexoreui add button modal table --all');\n return;\n }\n\n // 1. Detect project structure\n const project = detectProject(process.cwd());\n console.log(`\\n\\x1b[34mDetected project type:\\x1b[0m ${project.projectType.toUpperCase()}`);\n console.log(`\\x1b[34mDetected package manager:\\x1b[0m ${project.packageManager}\\n`);\n\n // Read nexore.json config if exists\n let customComponentsDir: string | undefined;\n let customUtilsFile: string | undefined;\n try {\n const configPath = path.join(project.baseDir, 'nexore.json');\n if (fs.existsSync(configPath)) {\n const cfg = JSON.parse(fs.readFileSync(configPath, 'utf8'));\n if (cfg.aliases?.components) {\n customComponentsDir = cfg.aliases.components.replace(/^@\\//, project.hasSrcDir ? 'src/' : '');\n }\n if (cfg.aliases?.utils) {\n const utilBase = cfg.aliases.utils.replace(/^@\\//, project.hasSrcDir ? 'src/' : '');\n customUtilsFile = utilBase.endsWith('.ts') || utilBase.endsWith('.js') ? utilBase : `${utilBase}.ts`;\n }\n }\n } catch {\n // Fallback to default detection\n }\n\n // 2. Validate component names and determine all components to install\n const componentsToInstall = new Set<string>();\n const invalidComponents: string[] = [];\n\n const queue = [...targetComponents.filter((c) => c !== '--all')];\n while (queue.length > 0) {\n const compName = queue.shift()!;\n const registryItem = registry[compName];\n if (!registryItem) {\n invalidComponents.push(compName);\n continue;\n }\n\n if (!componentsToInstall.has(compName)) {\n componentsToInstall.add(compName);\n if (registryItem.componentsDependencies) {\n for (const dep of registryItem.componentsDependencies) {\n queue.push(dep);\n }\n }\n }\n }\n\n if (invalidComponents.length > 0) {\n console.error(`\\x1b[31mError: Component(s) not found in registry: ${invalidComponents.join(', ')}\\x1b[0m`);\n console.log('Run \\x1b[32mnpx nexoreui list\\x1b[0m to see all available components.');\n return;\n }\n\n // 3. Determine paths\n const defaultComponentsDir = customComponentsDir || (project.hasSrcDir ? 'src/components/ui' : 'components/ui');\n const defaultUtilsFile = customUtilsFile || (project.hasSrcDir ? 'src/lib/utils.ts' : 'lib/utils.ts');\n\n let componentsDirInput = defaultComponentsDir;\n let utilsFileInput = defaultUtilsFile;\n\n if (!options.yes && !customComponentsDir) {\n const compPrompt = await askQuestion(`Where would you like to install the components? (default: ${defaultComponentsDir}): `);\n componentsDirInput = compPrompt.trim() || defaultComponentsDir;\n\n const utilsPrompt = await askQuestion(`Where should we create the utilities file (cn helper)? (default: ${defaultUtilsFile}): `);\n utilsFileInput = utilsPrompt.trim() || defaultUtilsFile;\n }\n\n const absoluteComponentsDir = path.resolve(project.baseDir, componentsDirInput);\n const absoluteUtilsFile = path.resolve(project.baseDir, utilsFileInput);\n\n console.log(`\\x1b[33mInstalling components to:\\x1b[0m ${absoluteComponentsDir}`);\n console.log(`\\x1b[33mUsing cn helper from:\\x1b[0m ${absoluteUtilsFile}\\n`);\n\n ensureDir(absoluteComponentsDir);\n\n // 4. Ensure cn helper exists\n const didCreateCn = ensureCnUtil(absoluteUtilsFile);\n if (didCreateCn) {\n console.log(`\\x1b[32m✔ Created utilities file (cn helper) at:\\x1b[0m ${utilsFileInput}`);\n }\n\n // 5. Copy component files\n const npmDependencies = new Set<string>();\n npmDependencies.add('clsx');\n npmDependencies.add('tailwind-merge');\n npmDependencies.add('lucide-react');\n npmDependencies.add('framer-motion');\n\n for (const compName of componentsToInstall) {\n const registryItem = registry[compName];\n const targetPath = path.join(absoluteComponentsDir, registryItem.fileName);\n\n copyComponentFile(registryItem.content, targetPath, absoluteUtilsFile);\n console.log(`\\x1b[32m✔ Added component:\\x1b[0m ${compName} -> ${path.join(componentsDirInput, registryItem.fileName)}`);\n\n registryItem.dependencies.forEach((dep) => npmDependencies.add(dep));\n }\n\n // 6. Install collected npm dependencies\n const depsArray = Array.from(npmDependencies);\n let depsToInstall = [...depsArray];\n try {\n const packageJsonPath = path.join(project.baseDir, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n const existingDeps = { ...packageJson.dependencies, ...packageJson.devDependencies };\n depsToInstall = depsArray.filter((dep) => !existingDeps[dep]);\n }\n } catch {\n // Ignore and proceed\n }\n\n if (depsToInstall.length > 0) {\n console.log(`\\n\\x1b[33mInstalling external dependencies:\\x1b[0m ${depsToInstall.join(', ')}...`);\n let installCmd = 'npm install';\n if (project.packageManager === 'pnpm') installCmd = 'pnpm add';\n else if (project.packageManager === 'yarn') installCmd = 'yarn add';\n else if (project.packageManager === 'bun') installCmd = 'bun add';\n\n try {\n execSync(`${installCmd} ${depsToInstall.join(' ')}`, {\n stdio: 'inherit',\n cwd: project.baseDir,\n });\n console.log('\\x1b[32m✔ Dependencies installed successfully!\\x1b[0m');\n } catch {\n console.error('\\x1b[31mFailed to install dependencies automatically. Please run:\\x1b[0m');\n console.log(` ${installCmd} ${depsToInstall.join(' ')}`);\n }\n }\n\n console.log(`\\n\\x1b[32m\\x1b[1m🎉 Done! ${componentsToInstall.size} NexoreUI component(s) ready to use.\\x1b[0m\\n`);\n}\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\r\nexport type ProjectType = 'next' | 'vite' | 'cra' | 'unknown';\r\n\r\nexport interface ProjectInfo {\r\n packageManager: PackageManager;\r\n projectType: ProjectType;\r\n hasSrcDir: boolean;\r\n baseDir: string;\r\n}\r\n\r\nexport function detectProject(cwd: string = process.cwd()): ProjectInfo {\r\n let packageManager: PackageManager = 'npm';\r\n let projectType: ProjectType = 'unknown';\r\n let hasSrcDir = false;\r\n\r\n // Determine base project directory (walk up to find package.json)\r\n let currentDir = cwd;\r\n let baseDir = cwd;\r\n while (currentDir !== path.parse(currentDir).root) {\r\n if (fs.existsSync(path.join(currentDir, 'package.json'))) {\r\n baseDir = currentDir;\r\n break;\r\n }\r\n currentDir = path.dirname(currentDir);\r\n }\r\n\r\n // Detect Package Manager\r\n if (fs.existsSync(path.join(baseDir, 'pnpm-lock.yaml'))) {\r\n packageManager = 'pnpm';\r\n } else if (fs.existsSync(path.join(baseDir, 'yarn.lock'))) {\r\n packageManager = 'yarn';\r\n } else if (fs.existsSync(path.join(baseDir, 'bun.lockb')) || fs.existsSync(path.join(baseDir, 'bun.lock'))) {\r\n packageManager = 'bun';\r\n }\r\n\r\n // Detect Source Directory\r\n if (fs.existsSync(path.join(baseDir, 'src'))) {\r\n hasSrcDir = true;\r\n }\r\n\r\n // Detect Project Type (Framework)\r\n try {\r\n const packageJsonPath = path.join(baseDir, 'package.json');\r\n if (fs.existsSync(packageJsonPath)) {\r\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\r\n const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };\r\n\r\n if (deps['next']) {\r\n projectType = 'next';\r\n } else if (deps['vite'] || deps['@tailwindcss/vite']) {\r\n projectType = 'vite';\r\n } else if (deps['react-scripts']) {\r\n projectType = 'cra';\r\n }\r\n }\r\n } catch (err) {\r\n // Ignore and fallback to unknown\r\n }\r\n\r\n return {\r\n packageManager,\r\n projectType,\r\n hasSrcDir,\r\n baseDir,\r\n };\r\n}\r\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nconst CN_TEMPLATE = `import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n`;\r\n\r\n/**\r\n * Ensures a directory exists.\r\n */\r\nexport function ensureDir(dirPath: string) {\r\n if (!fs.existsSync(dirPath)) {\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes relative path for imports (using forward slashes, stripping extension).\r\n */\r\nexport function getRelativeImportPath(fromDir: string, toFile: string): string {\r\n let relativePath = path.relative(fromDir, toFile);\r\n \r\n // Replace Windows backslashes with forward slashes\r\n relativePath = relativePath.replace(/\\\\/g, '/');\r\n \r\n // Remove file extension\r\n relativePath = relativePath.replace(/\\.(ts|tsx|js|jsx)$/, '');\r\n \r\n // Ensure it starts with \"./\" or \"../\"\r\n if (!relativePath.startsWith('.')) {\r\n relativePath = './' + relativePath;\r\n }\r\n \r\n return relativePath;\r\n}\r\n\r\n/**\r\n * Checks if cn utility exists, writes it if it doesn't.\r\n */\r\nexport function ensureCnUtil(utilsPath: string): boolean {\r\n const dir = path.dirname(utilsPath);\r\n ensureDir(dir);\r\n \r\n if (!fs.existsSync(utilsPath)) {\r\n fs.writeFileSync(utilsPath, CN_TEMPLATE, 'utf8');\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Copies a component template file to target directory, rewriting its cn import.\r\n */\r\nexport function copyComponentFile(\r\n content: string,\r\n targetFilePath: string,\r\n utilsFilePath: string\r\n) {\r\n const targetDir = path.dirname(targetFilePath);\r\n ensureDir(targetDir);\r\n \r\n // Compute relative path from target component to utils\r\n const relativeImport = getRelativeImportPath(targetDir, utilsFilePath);\r\n \r\n // Rewrite the import path in the template code\r\n // Handles import { cn } from \"../utils/cn\" or import { cn } from '../utils/cn'\r\n const rewrittenContent = content.replace(\r\n /['\"]\\.\\.\\/utils\\/cn['\"]/g,\r\n `\"${relativeImport}\"`\r\n );\r\n \r\n fs.writeFileSync(targetFilePath, rewrittenContent, 'utf8');\r\n}\r\n","export const button = {\n name: \"button\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"button.tsx\",\n content: `'use client';\r\n\r\nimport * as React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\nimport { motion, HTMLMotionProps } from 'framer-motion';\r\nimport { Loader2 } from 'lucide-react';\r\n\r\nconst buttonVariants = cva(\r\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 active:scale-95\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\r\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 border border-border/50\",\r\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm\",\r\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n // Premium variants\r\n premium: \"bg-gradient-to-r from-violet-600 via-pink-600 to-orange-500 text-white shadow-lg shadow-purple-500/20 hover:shadow-xl hover:shadow-purple-500/30\",\r\n neon: \"bg-background border-2 border-primary text-foreground shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))] hover:shadow-[0_0_calc(var(--glow-radius)*1.5)_rgba(var(--glow-color),calc(var(--glow-strength)*1.5))]\",\r\n glass: \"backdrop-blur-md bg-zinc-900/10 dark:bg-zinc-100/10 border border-zinc-900/20 dark:border-zinc-100/20 text-zinc-900 dark:text-zinc-50 hover:bg-zinc-900/20 dark:hover:bg-zinc-100/20 shadow-md\",\r\n shimmer: \"relative overflow-hidden bg-slate-900 text-white dark:bg-white dark:text-black\",\r\n // New requested variants\r\n gradient: \"bg-gradient-to-r from-indigo-600 via-purple-600 to-violet-600 dark:from-indigo-500 dark:via-purple-500 dark:to-violet-500 text-white shadow-lg shadow-indigo-500/20 hover:shadow-xl hover:shadow-indigo-500/30 hover:opacity-95\",\r\n glow: \"bg-primary text-primary-foreground shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))] hover:shadow-[0_0_calc(var(--glow-radius)*1.5)_rgba(var(--glow-color),calc(var(--glow-strength)*1.5))] border border-primary/20\",\r\n magnetic: \"bg-gradient-to-br from-violet-600 to-indigo-600 text-white shadow-md hover:shadow-lg\",\r\n loading: \"bg-primary/80 text-primary-foreground/80 pointer-events-none cursor-wait\",\r\n },\r\n size: {\r\n default: \"h-10 px-5 py-2\",\r\n sm: \"h-9 rounded-lg px-3 text-xs\",\r\n lg: \"h-11 rounded-xl px-8 text-base\",\r\n icon: \"h-10 w-10 rounded-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n);\r\n\r\n/**\r\n * Props for the Button component\r\n */\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n /** \r\n * Enable hover/tap spring motion animation\r\n * @default true \r\n */\r\n animate?: boolean;\r\n /** \r\n * Enable shimmer light animation effect\r\n * @default false\r\n */\r\n shimmer?: boolean;\r\n /** \r\n * Enable neon glow effect\r\n * @default false\r\n */\r\n glow?: boolean;\r\n /** \r\n * Display loading spinner icon and disable actions\r\n * @default false\r\n */\r\n isLoading?: boolean;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n animate = true,\r\n shimmer = false,\r\n glow = false,\r\n isLoading = false,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const isShimmer = variant === 'shimmer' || shimmer;\r\n const isMagnetic = variant === 'magnetic';\r\n const isGlow = variant === 'glow' || glow;\r\n\r\n // Track mouse coords for magnetic hover movement\r\n const [magneticPos, setMagneticPos] = React.useState({ x: 0, y: 0 });\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!isMagnetic) return;\r\n const { clientX, clientY, currentTarget } = e;\r\n const { left, top, width, height } = currentTarget.getBoundingClientRect();\r\n const x = clientX - (left + width / 2);\r\n const y = clientY - (top + height / 2);\r\n // spring weight multiplier\r\n setMagneticPos({ x: x * 0.35, y: y * 0.35 });\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (!isMagnetic) return;\r\n setMagneticPos({ x: 0, y: 0 });\r\n };\r\n\r\n const buttonContent = (\r\n <>\r\n {isShimmer && (\r\n <motion.div\r\n className=\"absolute inset-0 w-[200%] bg-gradient-to-r from-transparent via-white/20 to-transparent\"\r\n initial={{ x: '-100%' }}\r\n animate={{ x: '100%' }}\r\n transition={{\r\n repeat: Infinity,\r\n repeatType: 'loop',\r\n duration: 2,\r\n ease: 'linear',\r\n }}\r\n style={{ transform: 'skewX(-20deg)' }}\r\n />\r\n )}\r\n <span className=\"relative z-10 flex items-center justify-center gap-2\">\r\n {isLoading && <Loader2 className=\"animate-spin h-4 w-4 shrink-0\" />}\r\n {children}\r\n </span>\r\n </>\r\n );\r\n\r\n const activeVariant = isLoading ? \"loading\" : variant;\r\n\r\n // Disable button if loading\r\n const disabledState = props.disabled || isLoading;\r\n\r\n // Destructure custom props to avoid passing invalid props down to HTML element\r\n const { ...htmlProps } = props;\r\n\r\n // Setup base styles\r\n const resolvedClassName = cn(\r\n buttonVariants({ variant: activeVariant, size, className }),\r\n isShimmer && \"relative overflow-hidden\",\r\n isGlow && \"shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))]\"\r\n );\r\n\r\n if (!animate) {\r\n return (\r\n <button\r\n ref={ref}\r\n disabled={disabledState}\r\n className={resolvedClassName}\r\n {...(htmlProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {buttonContent}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <motion.button\r\n ref={ref}\r\n disabled={disabledState}\r\n className={resolvedClassName}\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n animate={isMagnetic ? { x: magneticPos.x, y: magneticPos.y } : undefined}\r\n whileHover={{\r\n scale: isMagnetic ? 1.02 : 1.03,\r\n y: isMagnetic ? 0 : -1.5,\r\n shadow: isGlow ? \"0 0 calc(var(--glow-radius)*1.5) rgba(var(--glow-color), calc(var(--glow-strength)*1.5))\" : undefined,\r\n }}\r\n whileTap={{ scale: 0.97 }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 350,\r\n damping: 20,\r\n }}\r\n {...(htmlProps as any)}\r\n >\r\n {buttonContent}\r\n </motion.button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n\r\nexport { Button, buttonVariants };\r\n\r\n// ----------------------------------------------------\r\n// Deprecated button wrappers for backward compatibility\r\n// ----------------------------------------------------\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"neon\">\\` instead.\r\n */\r\nexport const NeonButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"neon\" glow={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nNeonButton.displayName = \"NeonButton\";\r\n\r\n/**\r\n * @deprecated Use custom styles or class variance utilities on the unified \\`<Button>\\` instead.\r\n */\r\nexport const ThreeDButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"shadow-[0_5px_0_hsl(var(--primary-dark,240_5.9%_30%))] hover:shadow-[0_2px_0_hsl(var(--primary-dark,240_5.9%_30%))] active:translate-y-[3px] active:shadow-[0_0px_0_transparent] transition-all\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n )\r\n);\r\nThreeDButton.displayName = \"ThreeDButton\";\r\n\r\n/**\r\n * @deprecated Use custom ripple animations on the unified \\`<Button>\\` instead.\r\n */\r\nexport const RippleButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"relative overflow-hidden group active:scale-95 transition-transform\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute inset-0 bg-white/20 scale-0 rounded-full group-active:scale-[2] transition-transform duration-500 origin-center\"></span>\r\n <span className=\"relative z-10\">{children}</span>\r\n </Button>\r\n )\r\n);\r\nRippleButton.displayName = \"RippleButton\";\r\n\r\n/**\r\n * @deprecated Use standard utility classes on the unified \\`<Button>\\` instead.\r\n */\r\nexport const CyberpunkButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"bg-yellow-400 text-black font-extrabold uppercase tracking-widest border-2 border-black hover:bg-black hover:text-yellow-400 hover:border-yellow-400 transition-colors shadow-[4px_4px_0_0_#000] rounded-none hover:shadow-[4px_4px_0_0_#fff]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n )\r\n);\r\nCyberpunkButton.displayName = \"CyberpunkButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"magnetic\">\\` instead.\r\n */\r\nexport const MagneticButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"magnetic\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nMagneticButton.displayName = \"MagneticButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"shimmer\">\\` instead.\r\n */\r\nexport const ShimmerButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"shimmer\" shimmer={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nShimmerButton.displayName = \"ShimmerButton\";\r\n\r\n/**\r\n * @deprecated Use a custom hover effect on the unified \\`<Button>\\` instead.\r\n */\r\nexport const BorderBeamButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n variant=\"outline\"\r\n className={cn(\r\n \"relative overflow-hidden border border-border group\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"absolute inset-0 bg-gradient-to-r from-primary to-transparent opacity-0 group-hover:opacity-20 transition-opacity\"></div>\r\n <div className=\"absolute top-0 left-0 w-full h-[2px] bg-primary scale-x-0 group-hover:scale-x-100 transition-transform origin-left\"></div>\r\n <span className=\"relative z-10\">{children}</span>\r\n </Button>\r\n )\r\n);\r\nBorderBeamButton.displayName = \"BorderBeamButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button isLoading={...}>\\` instead.\r\n */\r\nexport const LoadingButton = React.forwardRef<HTMLButtonElement, ButtonProps & { isLoading?: boolean }>(\r\n ({ children, isLoading = true, ...props }, ref) => (\r\n <Button ref={ref} isLoading={isLoading} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nLoadingButton.displayName = \"LoadingButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"destructive\" glow>\\` instead.\r\n */\r\nexport const DestructiveGlowButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"destructive\" glow={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nDestructiveGlowButton.displayName = \"DestructiveGlowButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"outline\">\\` instead.\r\n */\r\nexport const GhostOutlineButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"outline\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGhostOutlineButton.displayName = \"GhostOutlineButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"glow\">\\` instead.\r\n */\r\nexport const GlowButton = React.forwardRef<HTMLButtonElement, ButtonProps & { glowColor?: string }>(\r\n ({ children, glowColor = \"rgba(139, 92, 246, 0.15)\", className, ...props }, ref) => (\r\n <div className=\"relative group inline-block\">\r\n <div\r\n className=\"absolute -inset-0.5 bg-gradient-to-r from-primary to-purple-600 rounded-lg blur opacity-75 group-hover:opacity-100 transition duration-1000 group-hover:duration-200\"\r\n style={{ backgroundColor: glowColor }}\r\n />\r\n <Button ref={ref} className={cn(\"relative bg-background\", className)} {...props}>\r\n {children}\r\n </Button>\r\n </div>\r\n )\r\n);\r\nGlowButton.displayName = \"GlowButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button shimmer>\\` instead.\r\n */\r\nexport const ShinyButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} shimmer={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nShinyButton.displayName = \"ShinyButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"gradient\">\\` instead.\r\n */\r\nexport const GradientButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"gradient\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGradientButton.displayName = \"GradientButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"glass\">\\` instead.\r\n */\r\nexport const GlassButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"glass\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGlassButton.displayName = \"GlassButton\";\r\n\r\n`\n};\n","export const modal = {\n name: \"modal\",\n dependencies: [\n \"@radix-ui/react-dialog\",\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"lucide-react\",\n \"framer-motion\"\n],\n componentsDependencies: [\n \"button\"\n],\n fileName: \"modal.tsx\",\n content: `\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X, AlertTriangle, CheckCircle, Star } from \"lucide-react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"../utils/cn\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst dialogContentVariants = cva(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background/95 backdrop-blur-md p-6 shadow-2xl duration-200 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]:scale-95 data-[state=open]:scale-100 data-[state=closed]:translate-y-[-48%] data-[state=open]:translate-y-[-50%] rounded-2xl\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-border/50\",\r\n glass: \"bg-white/10 backdrop-blur-xl border-white/20 shadow-2xl\",\r\n destructive: \"border-destructive/20\",\r\n success: \"border-green-500/20\",\r\n fullscreen: \"max-w-full h-screen rounded-none\",\r\n drawer: \"sm:max-w-full sm:h-[50vh] sm:rounded-b-none sm:rounded-t-[20px] fixed bottom-0 top-auto translate-y-0 data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n },\r\n size: {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-md\",\r\n lg: \"max-w-lg\",\r\n xl: \"max-w-xl\",\r\n \"2xl\": \"max-w-2xl\",\r\n full: \"max-w-[95vw] md:max-w-[90vw]\",\r\n },\r\n scrollable: {\r\n true: \"max-h-[80vh] overflow-y-auto\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"lg\",\r\n scrollable: false,\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogContentProps\r\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\r\n VariantProps<typeof dialogContentVariants> {}\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n DialogContentProps\r\n>(({ className, variant, size, scrollable, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(dialogContentVariants({ variant, size, scrollable, className }))}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-full p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-xl font-semibold leading-none tracking-tight bg-gradient-to-br from-foreground to-foreground/70 bg-clip-text text-transparent\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n`\n};\n","export const card = {\n name: \"card\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"card.tsx\",\n content: `'use client';\r\n\r\nimport * as React from \"react\"\r\nimport { cn } from \"../utils/cn\"\r\nimport { motion, useMotionValue, useSpring, useTransform, HTMLMotionProps } from \"framer-motion\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Heart, Share2, MapPin, Star } from \"lucide-react\"\r\n\r\nconst cardVariants = cva(\r\n \"rounded-2xl text-card-foreground transition-all duration-300 overflow-hidden\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-card text-card-foreground shadow-sm hover:shadow-md\",\r\n glass: \"backdrop-blur-md bg-white/10 dark:bg-black/20 border border-white/20 dark:border-white/10 shadow-lg\",\r\n gradient: \"bg-gradient-to-br from-violet-500/10 via-pink-500/10 to-orange-500/10 border border-purple-500/20 shadow-lg shadow-purple-500/5\",\r\n glow: \"bg-card border-2 border-primary/20 shadow-[0_0_15px_rgba(var(--primary-rgb),0.1)] hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.2)]\",\r\n // New variants\r\n bento: \"border border-border/60 bg-gradient-to-br from-card to-muted/20 text-card-foreground shadow-md hover:shadow-lg hover:border-primary/30 relative\",\r\n spotlight: \"border bg-card text-card-foreground relative hover:border-primary/20\",\r\n flip: \"bg-transparent border-0 shadow-none overflow-visible relative\",\r\n tilt: \"border bg-card text-card-foreground shadow-md\",\r\n },\r\n hover: {\r\n none: \"\",\r\n lift: \"hover:-translate-y-1.5 hover:shadow-lg\",\r\n glow: \"hover:border-primary/50 hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.25)]\",\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n hover: \"lift\",\r\n }\r\n }\r\n)\r\n\r\n/**\r\n * Props for the Card component\r\n */\r\nexport interface CardProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\r\n VariantProps<typeof cardVariants> {\r\n /**\r\n * Whether to enable hover spring animations\r\n * @default true\r\n */\r\n animate?: boolean;\r\n /**\r\n * Back content displayed when using the \\`flip\\` variant on hover\r\n */\r\n backContent?: React.ReactNode;\r\n /**\r\n * Custom radial spotlight background color (e.g., rgba(168, 85, 247, 0.15))\r\n * @default \"rgba(139, 92, 246, 0.15)\"\r\n */\r\n spotlightColor?: string;\r\n}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n hover,\r\n animate = true,\r\n backContent,\r\n spotlightColor = \"rgba(139, 92, 246, 0.15)\",\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n // Feature toggles based on variants\r\n const isSpotlight = variant === \"spotlight\";\r\n const isFlip = variant === \"flip\";\r\n const isTilt = variant === \"tilt\";\r\n\r\n // Spotlight mouse tracking state\r\n const [mousePos, setMousePos] = React.useState({ x: 0, y: 0 });\r\n const handleMouseMoveSpotlight = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!isSpotlight) return;\r\n const { currentTarget, clientX, clientY } = e;\r\n const { left, top } = currentTarget.getBoundingClientRect();\r\n setMousePos({ x: clientX - left, y: clientY - top });\r\n };\r\n\r\n // Tilt mouse tracking state\r\n const [tiltPos, setTiltPos] = React.useState({ rotateX: 0, rotateY: 0 });\r\n const handleMouseMoveTilt = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!isTilt) return;\r\n const { currentTarget, clientX, clientY } = e;\r\n const { left, top, width, height } = currentTarget.getBoundingClientRect();\r\n const x = clientX - left;\r\n const y = clientY - top;\r\n const maxTilt = 12; // degrees max rotation\r\n const rotateX = ((y - height / 2) / (height / 2)) * -maxTilt;\r\n const rotateY = ((x - width / 2) / (width / 2)) * maxTilt;\r\n setTiltPos({ rotateX, rotateY });\r\n };\r\n\r\n const handleMouseLeaveTilt = () => {\r\n if (!isTilt) return;\r\n setTiltPos({ rotateX: 0, rotateY: 0 });\r\n };\r\n\r\n // Flip card hover state\r\n const [isFlipped, setIsFlipped] = React.useState(false);\r\n\r\n // Destructure custom props to avoid DOM validation warnings\r\n const { ...htmlProps } = props;\r\n\r\n // Flip Variant Render\r\n if (isFlip) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant, hover, className }), \"perspective-1000 w-full h-full\")}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n {...(htmlProps as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n <motion.div\r\n className=\"relative w-full h-full transition-all duration-500 preserve-3d\"\r\n animate={{ rotateY: isFlipped ? 180 : 0 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 22 }}\r\n >\r\n {/* Front Face */}\r\n <div className=\"absolute inset-0 backface-hidden border bg-card text-card-foreground rounded-2xl shadow-sm flex flex-col justify-between overflow-hidden\">\r\n {children}\r\n </div>\r\n\r\n {/* Back Face */}\r\n <div className=\"absolute inset-0 backface-hidden rotate-y-180 border bg-gradient-to-br from-primary/10 to-primary/5 text-card-foreground rounded-2xl shadow-sm flex flex-col p-6 items-center justify-center text-center overflow-hidden\">\r\n {backContent || (\r\n <div className=\"text-sm font-medium text-muted-foreground\">\r\n Flip side content placeholder\r\n </div>\r\n )}\r\n </div>\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n // Spotlight Variant Render Extra Element\r\n const spotlightEffect = isSpotlight && (\r\n <div\r\n className=\"pointer-events-none absolute -inset-px rounded-2xl opacity-0 hover:opacity-100 group-hover:opacity-100 transition-opacity duration-300\"\r\n style={{\r\n background: \\`radial-gradient(400px circle at \\${mousePos.x}px \\${mousePos.y}px, \\${spotlightColor}, transparent 80%)\\`,\r\n }}\r\n />\r\n );\r\n\r\n // Build the resolved element attributes\r\n const cardClass = cn(cardVariants({ variant, hover: isFlip || isTilt ? \"none\" : hover, className }), isSpotlight && \"group\");\r\n\r\n if (animate || isTilt) {\r\n return (\r\n <motion.div\r\n ref={ref}\r\n className={cardClass}\r\n onMouseMove={(e) => {\r\n if (isSpotlight) handleMouseMoveSpotlight(e);\r\n if (isTilt) handleMouseMoveTilt(e);\r\n }}\r\n onMouseLeave={() => {\r\n if (isTilt) handleMouseLeaveTilt();\r\n }}\r\n animate={\r\n isTilt\r\n ? { rotateX: tiltPos.rotateX, rotateY: tiltPos.rotateY }\r\n : undefined\r\n }\r\n whileHover={isTilt ? undefined : { scale: 1.015 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 20 }}\r\n {...(htmlProps as any)}\r\n >\r\n {spotlightEffect}\r\n {children}\r\n </motion.div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cardClass}\r\n {...(htmlProps as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n)\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\"font-semibold leading-none tracking-tight text-xl bg-gradient-to-br from-foreground to-foreground/75 bg-clip-text text-transparent\", className)}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed mt-1\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0 leading-relaxed text-sm text-foreground/90\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0 border-t border-border/10 mt-auto\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n\r\nexport const GlassCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"glass\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGlassCard.displayName = \"GlassCard\";\r\n\r\nexport const GlowCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"glow\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGlowCard.displayName = \"GlowCard\";\r\n\r\nexport const GradientCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"gradient\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGradientCard.displayName = \"GradientCard\";\r\n\r\nexport const HoverCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} hover=\"lift\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nHoverCard.displayName = \"HoverCard\";\r\n\r\nexport const SpotlightCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"spotlight\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nSpotlightCard.displayName = \"SpotlightCard\";\r\n\r\n\r\n\r\n\r\n`\n};\n","export const alert = {\n name: \"alert\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"alert.tsx\",\n content: `\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"../utils/cn\"\r\nimport { motion, AnimatePresence } from \"framer-motion\"\r\nimport { AlertCircle, Info, CheckCircle2, XCircle, Cookie, BellRing, WifiOff, AlertTriangle, X } from \"lucide-react\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-2xl border p-4 [&>svg~*]:pl-7 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 transition-all duration-300 shadow-sm\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background/50 border-border text-foreground\",\r\n destructive: \"border-red-500/20 bg-red-500/10 text-red-600 dark:text-red-400 [&>svg]:text-red-600 dark:[&>svg]:text-red-400\",\r\n success: \"border-emerald-500/20 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400\",\r\n warning: \"border-amber-500/20 bg-amber-500/10 text-amber-600 dark:text-amber-400 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400\",\r\n info: \"border-blue-500/20 bg-blue-500/10 text-blue-600 dark:text-blue-400 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400\",\r\n glass: \"backdrop-blur-md bg-white/5 dark:bg-black/20 border-white/10 dark:border-white/5 text-foreground\",\r\n floating: \"fixed bottom-5 right-5 z-50 max-w-sm bg-card/95 backdrop-blur-md border border-border/80 text-foreground shadow-[0_10px_30px_rgba(0,0,0,0.25)] animate-slide-up\",\r\n minimal: \"border-0 bg-muted/40 p-3 text-sm rounded-xl text-foreground hover:bg-muted/60 shadow-none [&>svg]:top-3.5\",\r\n neon: \"border-purple-500/50 bg-purple-500/10 text-purple-200 shadow-[0_0_15px_rgba(168,85,247,0.3)] [&>svg]:text-purple-400\",\r\n cyberpunk: \"border-l-4 border-yellow-400 bg-black text-yellow-400 shadow-[4px_4px_0_0_rgba(250,204,21,1)] rounded-none font-mono uppercase [&>svg]:text-yellow-400\",\r\n gradient: \"bg-gradient-to-r from-blue-500/10 to-indigo-500/10 border-blue-500/20 text-foreground [&>svg]:text-blue-500\",\r\n banner: \"w-full bg-indigo-600 text-white border-0 shadow-md rounded-none sm:rounded-xl [&>svg]:text-white\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface AlertProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\r\n VariantProps<typeof alertVariants> {\r\n /**\n * Описание для animate\n * @default undefined\n */\n animate?: boolean;\r\n /**\n * Описание для title\n * @default undefined\n */\n title?: React.ReactNode;\r\n /**\n * Описание для description\n * @default undefined\n */\n description?: React.ReactNode;\r\n /**\n * Описание для icon\n * @default undefined\n */\n icon?: React.ReactNode;\r\n /**\n * Описание для dismissible\n * @default undefined\n */\n dismissible?: boolean;\r\n /**\n * Описание для onDismiss\n * @default undefined\n */\n onDismiss?: () => void;\r\n /**\n * Описание для actionText\n * @default undefined\n */\n actionText?: string;\r\n /**\n * Описание для onAction\n * @default undefined\n */\n onAction?: () => void;\r\n}\r\n\r\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n animate = true,\r\n title,\r\n description,\r\n icon,\r\n dismissible = false,\r\n onDismiss,\r\n actionText,\r\n onAction,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [isOpen, setIsOpen] = React.useState(true);\r\n\r\n if (!isOpen) return null;\r\n\r\n const isMinimal = variant === \"minimal\";\r\n const isBanner = variant === \"banner\";\r\n\r\n const defaultIcon = icon || (\r\n variant === \"destructive\" ? <XCircle className=\"h-4 w-4\" /> :\r\n variant === \"success\" ? <CheckCircle2 className=\"h-4 w-4\" /> :\r\n variant === \"warning\" ? <AlertTriangle className=\"h-4 w-4\" /> :\r\n variant === \"info\" ? <Info className=\"h-4 w-4\" /> :\r\n variant === \"default\" ? <AlertCircle className=\"h-4 w-4\" /> :\r\n null\r\n );\r\n\r\n const content = (\r\n <>\r\n {defaultIcon && <div className={cn(\"absolute left-4\", isMinimal ? \"top-3\" : \"top-4\")}>{defaultIcon}</div>}\r\n <div className={cn(defaultIcon ? \"pl-7\" : \"\", \"pr-8\")}>\r\n {title && <AlertTitle>{title}</AlertTitle>}\r\n {description && <AlertDescription>{description}</AlertDescription>}\r\n {!title && !description && children}\r\n </div>\r\n {isBanner && actionText && (\r\n <button\r\n onClick={onAction}\r\n className=\"absolute right-12 top-1/2 -translate-y-1/2 text-xs font-bold bg-white text-indigo-600 px-3 py-1.5 rounded-md hover:bg-indigo-50 transition-colors\"\r\n >\r\n {actionText}\r\n </button>\r\n )}\r\n {dismissible && (\r\n <button\r\n onClick={() => {\r\n setIsOpen(false);\r\n onDismiss?.();\r\n }}\r\n className=\"absolute right-4 top-4 opacity-50 hover:opacity-100 transition-opacity p-0.5 rounded-md hover:bg-muted\"\r\n aria-label=\"Dismiss\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n </>\r\n );\r\n\r\n const alertClass = cn(alertVariants({ variant }), className);\r\n\r\n if (animate) {\r\n return (\r\n <motion.div\r\n ref={ref}\r\n role=\"alert\"\r\n initial={{ opacity: 0, y: variant === \"floating\" ? 30 : 15, scale: variant === \"floating\" ? 0.95 : 1 }}\r\n animate={{ opacity: 1, y: 0, scale: 1 }}\r\n exit={{ opacity: 0, y: variant === \"floating\" ? 20 : 10, scale: 0.95 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 24 }}\r\n className={alertClass}\r\n {...(props as any)}\r\n >\r\n {content}\r\n </motion.div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={alertClass}\r\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n {content}\r\n </div>\r\n );\r\n }\r\n)\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"mb-1 font-semibold leading-none tracking-tight text-base text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed mt-1 opacity-90 [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\n// ----------------------------------------------------\r\n// Merged subcomponents and wrappers\r\n// ----------------------------------------------------\r\n\r\n// 1. ToastAlertWrapper\r\nexport const ToastAlertWrapper = ({ children, className, title, description, time }: any) => (\r\n <div className={cn(\"max-w-sm w-full bg-background border border-border/80 shadow-xl rounded-2xl p-4 flex gap-4 items-start relative\", className)}>\r\n <CheckCircle2 className=\"h-5 w-5 text-green-500 shrink-0 mt-0.5\" />\r\n <div className=\"flex-1\">\r\n {title && <h4 className=\"font-semibold text-sm\">{title}</h4>}\r\n {description && <p className=\"text-sm text-muted-foreground mt-1\">{description}</p>}\r\n {children}\r\n </div>\r\n {time && <span className=\"text-xs text-muted-foreground/60\">{time}</span>}\r\n </div>\r\n)\r\n\r\n// 2. CookieAlert\r\nexport const CookieAlert = ({ onAccept, onDecline }: { onAccept?: () => void; onDecline?: () => void }) => {\r\n const [visible, setVisible] = React.useState(true)\r\n if (!visible) return null\r\n return (\r\n <div className=\"max-w-md bg-card border rounded-2xl p-6 shadow-2xl space-y-4\">\r\n <div className=\"flex items-center gap-3\">\r\n <Cookie className=\"h-6 w-6 text-orange-500 animate-bounce\" />\r\n <h4 className=\"font-bold text-lg\">Cookie Preferences</h4>\r\n </div>\r\n <p className=\"text-sm text-muted-foreground\">\r\n We use cookies to improve your experience. By continuing to visit this site you agree to our use of cookies.\r\n </p>\r\n <div className=\"flex gap-3 pt-2\">\r\n <button \r\n onClick={() => { setVisible(false); onAccept?.(); }}\r\n className=\"flex-1 px-4 py-2 bg-primary text-primary-foreground hover:bg-primary/95 transition-colors rounded-xl text-sm font-semibold shadow-md shadow-primary/10\"\r\n >\r\n Accept All\r\n </button>\r\n <button \r\n onClick={() => { setVisible(false); onDecline?.(); }}\r\n className=\"flex-1 px-4 py-2 border rounded-xl text-sm font-semibold hover:bg-muted transition-colors\"\r\n >\r\n Decline\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// 3. OfflineBanner\r\nexport const OfflineBanner = () => (\r\n <div className=\"w-full bg-red-600 text-white p-3.5 flex justify-center items-center gap-2 text-sm font-semibold shadow-md sm:rounded-xl\">\r\n <WifiOff className=\"w-4 h-4 animate-pulse\" /> You are currently offline. Some features may be unavailable.\r\n </div>\r\n)\r\n\r\n// 4. RateLimitAlert\r\nexport const RateLimitAlert = () => (\r\n <div className=\"border border-orange-500/30 bg-orange-500/10 p-5 rounded-2xl flex gap-3 items-start max-w-md shadow-sm\">\r\n <AlertTriangle className=\"w-5 h-5 text-orange-500 shrink-0 mt-0.5 animate-pulse\" />\r\n <div className=\"flex-1\">\r\n <h4 className=\"font-bold text-orange-600 dark:text-orange-400\">Rate Limit Exceeded</h4>\r\n <p className=\"text-sm text-orange-600/80 dark:text-orange-400/80 mt-1 mb-4\">\r\n You have made too many requests. Please wait 45 seconds before trying again.\r\n </p>\r\n <div className=\"w-full h-1.5 bg-orange-500/20 rounded-full overflow-hidden\">\r\n <motion.div animate={{ width: [\"100%\", \"0%\"] }} transition={{ duration: 45, ease: \"linear\" }} className=\"h-full bg-orange-500\" />\r\n </div>\r\n </div>\r\n </div>\r\n)\r\n\r\n// Re-export original/merged components\r\nexport { Alert, AlertTitle, AlertDescription }\r\n/**\r\n * @deprecated Use the unified \\`<Alert variant=\"cyberpunk\">\\` instead.\r\n */\r\nexport const CyberAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"cyberpunk\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"success\">\\` or \\`<Alert variant=\"info\">\\` instead.\r\n */\r\nexport const SoftAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant={variant === \"success\" ? \"success\" : \"info\"} title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"minimal\">\\` instead.\r\n */\r\nexport const MinimalAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"minimal\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert className=\"border-l-4 ...\">\\` instead.\r\n */\r\nexport const LeftBorderAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant={variant === \"warning\" ? \"warning\" : \"default\"} className=\"border-l-4 border-l-primary\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use custom styled layouts or standard elements instead.\r\n */\r\nexport const IconTopAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <div className=\"flex flex-col items-center text-center p-6 bg-card border rounded-2xl\" {...props}>\r\n <div className=\"h-12 w-12 rounded-full bg-destructive/10 text-destructive flex items-center justify-center mb-4\">\r\n <AlertCircle className=\"h-6 w-6\" />\r\n </div>\r\n <h4 className=\"font-bold text-lg mb-2\">{title}</h4>\r\n <p className=\"text-sm text-muted-foreground\">{description}</p>\r\n </div>\r\n)\r\n\r\n/**\r\n * @deprecated Use standard tailwind background colors on unified \\`<Alert>\\` instead.\r\n */\r\nexport const SolidAlert = ({ title, description, variant = \"default\", ...props }: any) => {\r\n const bgClasses: Record<string, string> = {\r\n error: \"bg-red-600 text-white border-0\",\r\n success: \"bg-emerald-600 text-white border-0\",\r\n warning: \"bg-amber-500 text-black border-0\",\r\n default: \"bg-primary text-primary-foreground border-0\",\r\n }\r\n const bgClass = bgClasses[variant] || bgClasses.default\r\n return (\r\n <div className={cn(\"p-4 rounded-xl shadow-lg flex gap-3 items-start\", bgClass)} {...props}>\r\n <Info className=\"h-5 w-5 shrink-0 mt-0.5\" />\r\n <div>\r\n <h4 className=\"font-bold\">{title}</h4>\r\n <p className=\"text-sm opacity-90 mt-1\">{description}</p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"banner\">\\` instead.\r\n */\r\nexport const BannerAlert = ({ message, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"banner\" title={message} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"neon\">\\` instead.\r\n */\r\nexport const NeonAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"neon\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"glass\">\\` instead.\r\n */\r\nexport const GlassAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"glass\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert dismissible={true}>\\` instead.\r\n */\r\nexport const DismissibleAlert = ({ variant = \"default\", title, description, ...props }: any) => (\r\n <Alert variant={variant} title={title || \"Attention\"} description={description || \"Action required\"} dismissible={true} {...props} />\r\n)\r\n\r\n`\n};\n","export const badge = {\n name: \"badge\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"badge.tsx\",\n content: `'use client';\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../utils/cn\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border font-semibold transition-all focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-default\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground border-border hover:bg-accent\",\n gradient: \"border-transparent bg-gradient-to-r from-violet-600 to-pink-600 dark:from-violet-500 dark:to-pink-500 text-white shadow-sm\",\n neon: \"border-primary/50 bg-primary/10 text-primary shadow-[0_0_10px_rgba(var(--primary-rgb),0.3)]\",\n success: \"border-transparent bg-emerald-500/20 text-emerald-600 dark:text-emerald-400\",\n warning: \"border-transparent bg-amber-500/20 text-amber-600 dark:text-amber-400\",\n info: \"border-transparent bg-blue-500/20 text-blue-600 dark:text-blue-400\",\n },\n size: {\n default: \"px-2.5 py-0.5 text-xs\",\n sm: \"px-1.5 py-0.5 text-[10px]\",\n lg: \"px-3 py-1 text-sm\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Описание для pulse\n * @default undefined\n */\n pulse?: boolean;\n /**\n * Описание для dot\n * @default undefined\n */\n dot?: boolean;\n /**\n * Описание для text\n * @default undefined\n */\n text?: string;\n}\n\nfunction Badge({ className, variant, size, pulse = false, dot = false, children, text, ...props }: BadgeProps) {\n const showDot = dot || pulse;\n \n return (\n <div className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {showDot && (\n <span className=\"relative flex h-2 w-2 mr-1\">\n {pulse && (\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-current opacity-75\"></span>\n )}\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-current\"></span>\n </span>\n )}\n {children || text}\n </div>\n )\n}\n\nexport { Badge, badgeVariants }\n`\n};\n","export const morphingGeometry = {\n name: \"morphing-geometry\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n ],\n fileName: \"morphing-geometry.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { motion, HTMLMotionProps } from 'framer-motion';\nimport { Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport type MorphingShape = 'pill' | 'circle' | 'square' | 'squircle' | 'custom';\nexport type MorphingVariant = 'gradient' | 'aurora' | 'neon' | 'glass' | 'outline' | 'subtle';\nexport type MorphingColor = 'violet' | 'cyan' | 'emerald' | 'rose' | 'amber' | 'rainbow' | 'mono';\nexport type MorphingSize = 'sm' | 'md' | 'lg' | 'xl' | 'custom';\n\nexport interface MorphingGeometryProps extends Omit<HTMLMotionProps<'div'>, 'children'> {\n shape?: MorphingShape;\n radius?: number | string;\n variant?: MorphingVariant;\n color?: MorphingColor;\n size?: MorphingSize;\n dimension?: number;\n spin?: boolean;\n spinDuration?: number;\n interactive?: boolean;\n glow?: boolean;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport const MorphingGeometry = React.forwardRef<HTMLDivElement, MorphingGeometryProps>(\n (\n {\n shape = 'squircle',\n radius,\n variant = 'gradient',\n color = 'violet',\n size = 'md',\n dimension,\n spin = false,\n spinDuration = 6,\n interactive = false,\n glow = true,\n icon,\n children,\n className,\n style,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <motion.div\n ref={ref}\n animate={spin ? { rotate: [0, 90, 180, 270, 360] } : { rotate: 0 }}\n transition={{ rotate: { duration: spinDuration, repeat: Infinity, ease: 'linear' }, borderRadius: { duration: 0.4 } }}\n className={cn('relative flex items-center justify-center select-none overflow-hidden transition-all duration-300 w-24 h-24', className)}\n style={{ borderRadius: radius || '24%', ...style }}\n {...props}\n >\n <div className=\"relative z-10 flex flex-col items-center justify-center p-2 text-center\">\n {icon || children || <Sparkles className=\"w-6 h-6 text-white\" />}\n </div>\n </motion.div>\n );\n }\n);\n\nMorphingGeometry.displayName = 'MorphingGeometry';\nexport default MorphingGeometry;\n`\n};\n","export const auroraBorderFX = {\n name: \"aurora-border-fx\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n ],\n fileName: \"aurora-border-fx.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport { Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport type AuroraFXColor = 'violet' | 'cyan' | 'emerald' | 'rose' | 'amber' | string;\nexport type AuroraFXGlow = 'none' | 'subtle' | 'medium' | 'strong';\nexport type AuroraFXRadius = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface AuroraColorOption {\n name: string;\n hex: string;\n}\n\nexport const defaultAuroraColors: AuroraColorOption[] = [\n { name: 'Violet', hex: '#8b5cf6' },\n { name: 'Cyan', hex: '#06b6d4' },\n { name: 'Emerald', hex: '#10b981' },\n { name: 'Rose', hex: '#f43f5e' },\n { name: 'Amber', hex: '#f59e0b' },\n];\n\nconst colorPresetMap: Record<string, string> = {\n violet: '#8b5cf6',\n cyan: '#06b6d4',\n emerald: '#10b981',\n rose: '#f43f5e',\n amber: '#f59e0b',\n};\n\nconst radiusMap: Record<AuroraFXRadius, { outer: string; inner: string }> = {\n sm: { outer: 'rounded-lg', inner: 'rounded-[calc(0.5rem-1px)]' },\n md: { outer: 'rounded-xl', inner: 'rounded-[calc(0.75rem-1px)]' },\n lg: { outer: 'rounded-2xl', inner: 'rounded-[calc(1rem-1px)]' },\n xl: { outer: 'rounded-3xl', inner: 'rounded-[calc(1.5rem-1.5px)]' },\n full: { outer: 'rounded-full', inner: 'rounded-full' },\n};\n\nconst glowOpacityMap: Record<AuroraFXGlow, number> = {\n none: 0,\n subtle: 0.25,\n medium: 0.45,\n strong: 0.75,\n};\n\nexport interface AuroraBorderFXProps extends React.HTMLAttributes<HTMLDivElement> {\n color?: AuroraFXColor;\n glow?: AuroraFXGlow;\n radius?: AuroraFXRadius;\n badgeText?: string;\n badgeIcon?: React.ReactNode;\n title?: string;\n description?: string;\n showColorPicker?: boolean;\n colors?: AuroraColorOption[];\n activeColor?: string;\n onColorChange?: (colorHex: string) => void;\n previewSlot?: React.ReactNode;\n footerSlot?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport const AuroraBorderFX = React.forwardRef<HTMLDivElement, AuroraBorderFXProps>(\n (\n {\n color = 'violet',\n glow = 'medium',\n radius = 'lg',\n badgeText = 'Aurora Border FX',\n badgeIcon = <Sparkles className=\"w-3 h-3\" />,\n title = 'Reactive Aurora Borders',\n description = 'Smooth multi-color conic gradients that dynamically track and react with zero JavaScript canvas lag.',\n showColorPicker = true,\n colors = defaultAuroraColors,\n activeColor: controlledColor,\n onColorChange,\n previewSlot,\n footerSlot,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const resolvedInitialColor = colorPresetMap[color] || color || '#8b5cf6';\n const [internalColor, setInternalColor] = React.useState<string>(resolvedInitialColor);\n\n React.useEffect(() => {\n if (colorPresetMap[color]) {\n setInternalColor(colorPresetMap[color]);\n } else if (color) {\n setInternalColor(color);\n }\n }, [color]);\n\n const currentColor = controlledColor !== undefined ? controlledColor : internalColor;\n const radiusConfig = radiusMap[radius] || radiusMap.lg;\n const glowOpacity = glowOpacityMap[glow] ?? 0.45;\n\n const handleSelectColor = (hex: string) => {\n if (controlledColor === undefined) {\n setInternalColor(hex);\n }\n onColorChange?.(hex);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative isolate p-5 sm:p-6 overflow-hidden flex flex-col justify-between group transition-all duration-300',\n 'border border-border/80 bg-card/60 backdrop-blur-xl shadow-xl',\n radiusConfig.outer,\n className\n )}\n {...props}\n >\n {glow !== 'none' && (\n <div\n className=\"absolute -top-12 -right-12 w-48 h-48 rounded-full blur-[85px] pointer-events-none transition-colors duration-500 -z-10\"\n style={{\n backgroundColor: currentColor,\n opacity: glowOpacity,\n }}\n />\n )}\n\n {glow !== 'none' && glow !== 'subtle' && (\n <div\n className=\"absolute -bottom-10 -left-10 w-40 h-40 rounded-full blur-[90px] pointer-events-none transition-colors duration-700 -z-10\"\n style={{\n backgroundColor: currentColor,\n opacity: glowOpacity * 0.4,\n }}\n />\n )}\n\n {children ? (\n <div className=\"relative z-10 w-full h-full\">{children}</div>\n ) : (\n <div className=\"relative z-10 flex flex-col justify-between h-full space-y-5\">\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n {badgeText && (\n <div\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-[11px] font-semibold border transition-all duration-300 shadow-xs\"\n style={{\n backgroundColor: \\`\\${currentColor}18\\`,\n borderColor: \\`\\${currentColor}40\\`,\n color: currentColor,\n }}\n >\n {badgeIcon}\n <span>{badgeText}</span>\n </div>\n )}\n\n {showColorPicker && colors && colors.length > 0 && (\n <div className=\"flex items-center gap-1.5 bg-muted/60 dark:bg-muted/40 p-1 rounded-full border border-border/60 backdrop-blur-md\">\n {colors.map((c) => {\n const isActive = currentColor.toLowerCase() === c.hex.toLowerCase();\n return (\n <button\n key={c.name}\n type=\"button\"\n onClick={() => handleSelectColor(c.hex)}\n className={cn(\n 'w-3.5 h-3.5 rounded-full transition-all duration-200 cursor-pointer',\n isActive\n ? 'scale-125 ring-2 ring-foreground/40 shadow-xs'\n : 'hover:scale-110 opacity-70 hover:opacity-100'\n )}\n style={{ backgroundColor: c.hex }}\n title={\\`Switch to \\${c.name}\\`}\n aria-label={\\`Switch glow to \\${c.name}\\`}\n />\n );\n })}\n </div>\n )}\n </div>\n\n <div>\n {title && (\n <h3 className=\"text-base sm:text-lg font-bold tracking-tight text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-xs sm:text-sm text-muted-foreground leading-relaxed mt-1\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"pt-2 flex items-center justify-center\">\n {previewSlot ? (\n previewSlot\n ) : (\n <div\n className={cn(\n 'relative p-[1.5px] overflow-hidden transition-all duration-300 w-full max-w-[280px]',\n radiusConfig.inner\n )}\n style={{\n background: \\`linear-gradient(135deg, \\${currentColor}, transparent 60%, \\${currentColor}90)\\`,\n }}\n >\n <div\n className={cn(\n 'bg-card/90 dark:bg-card/80 px-4 py-3 flex items-center justify-between backdrop-blur-md shadow-inner',\n radiusConfig.inner\n )}\n >\n <div className=\"flex items-center gap-2.5\">\n <div\n className=\"w-2.5 h-2.5 rounded-full animate-pulse shrink-0\"\n style={{ backgroundColor: currentColor }}\n />\n <span className=\"text-xs font-mono font-semibold text-foreground\">\n Interactive Aurora Pill\n </span>\n </div>\n <span\n className=\"text-[10px] font-mono px-2 py-0.5 rounded-md font-medium border\"\n style={{\n backgroundColor: \\`\\${currentColor}12\\`,\n borderColor: \\`\\${currentColor}30\\`,\n color: currentColor,\n }}\n >\n {currentColor.toUpperCase()}\n </span>\n </div>\n </div>\n )}\n </div>\n\n {footerSlot && <div className=\"pt-2 border-t border-border/50\">{footerSlot}</div>}\n </div>\n )}\n </div>\n );\n }\n);\n\nAuroraBorderFX.displayName = 'AuroraBorderFX';\n`\n};\n","export const auroraSearchPill = {\n name: \"auroraSearchPill\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"aurora-search-pill.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { Globe, Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\n// Register hardware angle property once for conic gradient rotation\nif (typeof window !== 'undefined' && typeof (window as any).CSS !== 'undefined' && 'registerProperty' in (window as any).CSS) {\n try {\n (window as any).CSS.registerProperty({\n name: '--aurora-deg',\n syntax: '<angle>',\n inherits: false,\n initialValue: '0deg',\n });\n } catch {}\n}\n\nexport interface AuroraSearchSource {\n /** Unique key for the source badge */\n id: string;\n /** Label or tooltip text for the source */\n label?: string;\n /** Direct avatar image URL (e.g. favicon, PNG, SVG) */\n avatarUrl?: string;\n /** Custom icon or element */\n icon?: React.ReactNode;\n /** Text initials to display inside badge */\n initials?: string;\n /** Built-in preset type or custom */\n type?: 'globe' | 'gradient' | 'github' | 'claude' | 'chatgpt' | 'perplexity' | 'custom';\n /** Custom background CSS string or hex */\n bg?: string;\n}\n\nexport type AuroraSearchPillSize = 'sm' | 'md' | 'lg';\nexport type AuroraSearchPillSpeed = 'slow' | 'normal' | 'fast';\nexport type AuroraSearchPillTheme = 'light' | 'dark' | 'auto';\nexport type AuroraSearchPillGlow = 'subtle' | 'medium' | 'strong' | 'none';\nexport type AuroraSpinMode = 'always' | 'searching' | 'hover' | 'never';\n\nexport interface AuroraSearchPillProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onToggle'> {\n /** Controlled searching state */\n isSearching?: boolean;\n /** Uncontrolled default searching state */\n defaultSearching?: boolean;\n /** Callback fired when searching state toggles */\n onToggle?: (searching: boolean) => void;\n /** Main search title text shown when active (default: \"Search...\") */\n searchLabel?: string;\n /** List of badge sources to render in the active state */\n sources?: AuroraSearchSource[];\n /** Shortcut array of avatar image URLs */\n sourceAvatars?: string[];\n /** Color theme for the pill body: light, dark, or auto (follows dark mode) */\n theme?: AuroraSearchPillTheme;\n /** Size scale of the pill */\n size?: AuroraSearchPillSize;\n /** Glow intensity of the surrounding ambient aurora */\n glowIntensity?: AuroraSearchPillGlow;\n /** Speed of the rotating aurora beam */\n speed?: AuroraSearchPillSpeed;\n /**\n * When the aurora beam should rotate:\n * - 'always' (default): continuously rotates the aurora light wave all the time\n * - 'searching': only spins while searching/active, remains calm when idle\n * - 'hover': spins on cursor hover / focus\n * - 'never': static gradient, no rotation\n */\n spinMode?: AuroraSpinMode;\n /** Manually override spinning state */\n isSpinning?: boolean;\n /** Automatically toggle searching state at a set interval (demo mode) */\n autoCycle?: boolean;\n /** Interval in ms for autoCycle (default: 2400) */\n cycleInterval?: number;\n}\n\nconst DEFAULT_SOURCES: AuroraSearchSource[] = [\n { id: 'web', type: 'globe', label: 'Web' },\n { id: 'gradient', type: 'gradient', label: 'Neural Index' },\n { id: 'github', type: 'github', label: 'GitHub' },\n];\n\nconst SPEED_MAP: Record<AuroraSearchPillSpeed, string> = {\n slow: '5s',\n normal: '3.2s',\n fast: '1.8s',\n};\n\nconst GLOW_OPACITY: Record<AuroraSearchPillGlow, number> = {\n none: 0,\n subtle: 0.45,\n medium: 0.75,\n strong: 0.95,\n};\n\nconst SIZE_CONFIG: Record<\n AuroraSearchPillSize,\n {\n height: string;\n paddingDots: string;\n paddingSearch: string;\n dotSize: string;\n dotGap: string;\n fontSize: string;\n badgeSize: string;\n badgeMargin: string;\n minWidthSearch: string;\n }\n> = {\n sm: {\n height: 'h-10',\n paddingDots: 'px-4',\n paddingSearch: 'px-4',\n dotSize: 'w-1.5 h-1.5',\n dotGap: 'gap-1.5',\n fontSize: 'text-xs',\n badgeSize: 'w-4 h-4',\n badgeMargin: '-ml-1',\n minWidthSearch: 'min-w-[160px]',\n },\n md: {\n height: 'h-12',\n paddingDots: 'px-5',\n paddingSearch: 'px-5',\n dotSize: 'w-[6.5px] h-[6.5px]',\n dotGap: 'gap-[7px]',\n fontSize: 'text-sm sm:text-base',\n badgeSize: 'w-[22px] h-[22px]',\n badgeMargin: '-ml-1.5',\n minWidthSearch: 'min-w-[190px]',\n },\n lg: {\n height: 'h-14',\n paddingDots: 'px-6',\n paddingSearch: 'px-6',\n dotSize: 'w-2 h-2',\n dotGap: 'gap-2',\n fontSize: 'text-base sm:text-lg',\n badgeSize: 'w-6 h-6',\n badgeMargin: '-ml-2',\n minWidthSearch: 'min-w-[220px]',\n },\n};\n\n/**\n * AuroraSearchPill Component\n *\n * An ultra-premium AI search pill with an ambient rotating aurora conic glow,\n * 1.5px illuminated border track, and smooth transition between pulsing dots and\n * active search query with source badges.\n */\nexport const AuroraSearchPill = React.forwardRef<HTMLDivElement, AuroraSearchPillProps>(\n (\n {\n isSearching: controlledSearching,\n defaultSearching = false,\n onToggle,\n searchLabel = 'Search...',\n sources = DEFAULT_SOURCES,\n sourceAvatars,\n theme = 'auto',\n size = 'md',\n glowIntensity = 'medium',\n speed = 'normal',\n spinMode = 'always',\n isSpinning: controlledSpinning,\n autoCycle = false,\n cycleInterval = 2400,\n className,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props\n },\n ref\n ) => {\n const isControlled = controlledSearching !== undefined;\n const [uncontrolledSearching, setUncontrolledSearching] = React.useState(defaultSearching);\n const active = isControlled ? controlledSearching : uncontrolledSearching;\n\n const [isHovered, setIsHovered] = React.useState(false);\n\n // Unique style injection ID for CSS custom property and keyframes\n const instanceId = React.useId().replace(/:/g, '');\n\n // Resolve active sources list (support direct sourceAvatars list)\n const activeSources = React.useMemo<AuroraSearchSource[]>(() => {\n if (sourceAvatars && sourceAvatars.length > 0) {\n return sourceAvatars.map((url, i): AuroraSearchSource => ({\n id: \\`avatar-\\${i}\\`,\n avatarUrl: url,\n label: \\`Source \\${i + 1}\\`,\n type: 'custom',\n }));\n }\n return sources;\n }, [sourceAvatars, sources]);\n\n // Determine whether the aurora beam should actively rotate (default: always on)\n const shouldSpin = React.useMemo(() => {\n if (controlledSpinning !== undefined) return controlledSpinning;\n if (spinMode === 'never') return false;\n if (spinMode === 'searching') return active;\n if (spinMode === 'hover') return isHovered;\n // Default: 'always' -> continuously rotates in both idle (dots) and searching states\n return true;\n }, [controlledSpinning, spinMode, isHovered, active]);\n\n // Auto demo cycling\n React.useEffect(() => {\n if (!autoCycle) return;\n const interval = setInterval(() => {\n if (isControlled) {\n onToggle?.(!active);\n } else {\n setUncontrolledSearching((prev) => {\n const next = !prev;\n onToggle?.(next);\n return next;\n });\n }\n }, cycleInterval);\n\n return () => clearInterval(interval);\n }, [autoCycle, cycleInterval, active, isControlled, onToggle]);\n\n const handleToggle = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (!isControlled) {\n setUncontrolledSearching(!active);\n }\n onToggle?.(!active);\n };\n\n const sizeStyle = SIZE_CONFIG[size] || SIZE_CONFIG.md;\n const animationDuration = SPEED_MAP[speed] || SPEED_MAP.normal;\n const glowAlpha = GLOW_OPACITY[glowIntensity] ?? GLOW_OPACITY.medium;\n\n // Theme resolution for pill body\n const bodyThemeClass =\n theme === 'light'\n ? 'bg-white text-slate-900 border-white/60 shadow-sm'\n : theme === 'dark'\n ? 'bg-[#090d16] text-white border-white/10 shadow-lg shadow-black/40'\n : 'bg-white text-slate-900 dark:bg-[#090d16] dark:text-white border-white/60 dark:border-white/10 shadow-sm dark:shadow-black/40';\n\n const dotsColorClass =\n theme === 'light'\n ? 'bg-slate-900'\n : theme === 'dark'\n ? 'bg-white'\n : 'bg-slate-900 dark:bg-white';\n\n return (\n <div\n ref={ref}\n onClick={handleToggle}\n onMouseEnter={(e) => {\n setIsHovered(true);\n onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n setIsHovered(false);\n onMouseLeave?.(e);\n }}\n role=\"button\"\n tabIndex={0}\n aria-pressed={active}\n aria-label={active ? \\`Searching: \\${searchLabel}\\` : 'Activate AI Search'}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }}\n className={cn(\n 'relative inline-flex items-center justify-center cursor-pointer select-none isolate outline-none group',\n 'transition-transform duration-200 ease-out active:scale-[0.96] focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2',\n className\n )}\n {...props}\n >\n {/* Scoped CSS for hardware accelerated conic rotation and pulse */}\n <style dangerouslySetInnerHTML={{\n __html: \\`\n @property --aurora-deg {\n syntax: '<angle>';\n initial-value: 0deg;\n inherits: false;\n }\n @keyframes spinAurora {\n from {\n --aurora-deg: 0deg;\n }\n to {\n --aurora-deg: 360deg;\n }\n }\n @keyframes dotPulse {\n 0%, 80%, 100% {\n opacity: 0.35;\n transform: scale(0.75);\n }\n 40% {\n opacity: 1;\n transform: scale(1.15);\n }\n }\n \\`,\n }} />\n\n {/* 1. Ambient Volumetric Glow (Aurora Ambient Glow) */}\n {glowIntensity !== 'none' && (\n <div\n className=\"absolute -inset-1.5 rounded-full pointer-events-none blur-md z-0 transition-opacity duration-300\"\n style={{\n opacity: glowAlpha,\n background: \\`conic-gradient(\n from var(--aurora-deg, 0deg) at 50% 50%,\n transparent 0deg,\n rgba(59, 130, 246, 0.75) 60deg,\n rgba(139, 92, 246, 0.9) 110deg,\n rgba(236, 72, 153, 0.95) 160deg,\n rgba(244, 63, 94, 0.8) 200deg,\n transparent 250deg,\n transparent 360deg\n )\\`,\n animation: shouldSpin\n ? \\`spinAurora \\${animationDuration} linear infinite\\`\n : undefined,\n }}\n />\n )}\n\n {/* 2. Sharp 1.5px Conic Border Track */}\n <div\n className=\"relative z-10 p-[1.5px] rounded-full transition-shadow duration-300 shadow-sm\"\n style={{\n background: \\`conic-gradient(\n from var(--aurora-deg, 0deg) at 50% 50%,\n rgba(226, 232, 240, 0.8) 0deg,\n rgba(59, 130, 246, 0.85) 60deg,\n rgba(139, 92, 246, 1) 110deg,\n rgba(236, 72, 153, 1) 160deg,\n rgba(244, 63, 94, 0.85) 200deg,\n rgba(226, 232, 240, 0.6) 260deg,\n rgba(226, 232, 240, 0.8) 360deg\n )\\`,\n animation: shouldSpin\n ? \\`spinAurora \\${animationDuration} linear infinite\\`\n : undefined,\n }}\n >\n {/* 3. Center Pill Body */}\n <div\n className={cn(\n 'relative z-20 rounded-full flex items-center justify-center overflow-hidden border',\n sizeStyle.height,\n active ? cn(sizeStyle.paddingSearch, sizeStyle.minWidthSearch) : sizeStyle.paddingDots,\n bodyThemeClass,\n 'transition-all duration-500 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]'\n )}\n >\n {/* STATE 1: Pulsing Dots (Idle/Listening) */}\n <div\n className={cn(\n 'flex items-center',\n sizeStyle.dotGap,\n 'transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]',\n active\n ? 'opacity-0 scale-50 -translate-y-2 pointer-events-none absolute'\n : 'opacity-100 scale-100 translate-y-0'\n )}\n >\n {[0, 1, 2].map((idx) => (\n <span\n key={idx}\n className={cn('rounded-full inline-block', sizeStyle.dotSize, dotsColorClass)}\n style={{\n animation: \\`dotPulse 1.4s ease-in-out infinite both\\`,\n animationDelay: \\`\\${idx === 0 ? -0.32 : idx === 1 ? -0.16 : 0}s\\`,\n }}\n />\n ))}\n </div>\n\n {/* STATE 2: Active Search Label + Overlapping Sources */}\n <div\n className={cn(\n 'flex items-center gap-2.5 whitespace-nowrap',\n 'transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]',\n active\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-90 translate-y-2 pointer-events-none absolute'\n )}\n >\n {/* Search Title */}\n <span className={cn('font-medium tracking-tight', sizeStyle.fontSize)}>\n {searchLabel}\n </span>\n\n {/* Overlapping Sources Row */}\n {activeSources && activeSources.length > 0 && (\n <div className=\"inline-flex items-center pl-0.5\">\n {activeSources.map((src, i) => {\n const isFirst = i === 0;\n\n return (\n <div\n key={src.id || i}\n title={src.label || src.id}\n className={cn(\n 'rounded-full border-[1.5px] border-white dark:border-zinc-900 flex items-center justify-center shrink-0 shadow-xs overflow-hidden',\n sizeStyle.badgeSize,\n !isFirst && sizeStyle.badgeMargin\n )}\n style={{\n backgroundColor:\n src.type === 'globe'\n ? '#0b1120'\n : src.type === 'github'\n ? '#ffffff'\n : src.type === 'claude'\n ? '#d97757'\n : src.type === 'chatgpt'\n ? '#10a37f'\n : src.type === 'perplexity'\n ? '#1fb8cd'\n : src.type === 'custom' && src.bg\n ? src.bg\n : undefined,\n background:\n src.type === 'gradient'\n ? 'linear-gradient(135deg, #06b6d4 45%, #3b82f6 55%)'\n : undefined,\n }}\n >\n {src.avatarUrl ? (\n <img\n src={src.avatarUrl}\n alt={src.label || src.id}\n className=\"w-full h-full object-cover\"\n />\n ) : src.icon ? (\n src.icon\n ) : src.type === 'globe' ? (\n <Globe className=\"w-3 h-3 text-sky-400 stroke-[2.5]\" />\n ) : src.type === 'github' ? (\n <svg className=\"w-3.5 h-3.5 fill-[#181717]\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n ) : src.type === 'claude' ? (\n <Sparkles className=\"w-2.5 h-2.5 text-white\" />\n ) : src.type === 'chatgpt' ? (\n <div className=\"w-2 h-2 rounded-full bg-white\" />\n ) : src.type === 'perplexity' ? (\n <Sparkles className=\"w-2.5 h-2.5 text-white\" />\n ) : src.initials ? (\n <span className=\"text-[8px] font-bold text-white uppercase\">\n {src.initials}\n </span>\n ) : null}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n);\n\nAuroraSearchPill.displayName = 'AuroraSearchPill';\n`\n};\n","export const templateAiStartup = {\n name: \"template-ai-startup\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ai-startup.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n Sparkles,\n ArrowRight,\n Cpu,\n Zap,\n Shield,\n Check,\n ChevronRight,\n Send,\n Terminal,\n Activity,\n} from \"lucide-react\";\n\nexport default function AiStartupTemplate() {\n const [selectedModel, setSelectedModel] = useState<\"DeepSeek-R1\" | \"Claude-3.5\" | \"GPT-4o\">(\"DeepSeek-R1\");\n const [promptText, setPromptText] = useState(\"Synthesize an edge-routed vector indexing service\");\n const [isGenerating, setIsGenerating] = useState(false);\n const [generatedOutput, setGeneratedOutput] = useState<string | null>(\n \"✓ Tensor graph compiled. 4 regions provisioned. TTFT: 14ms. Throughput: 142 tok/s.\"\n );\n const [billingCycle, setBillingCycle] = useState<\"monthly\" | \"annual\">(\"annual\");\n\n const handleSynthesize = (e: React.FormEvent) => {\n e.preventDefault();\n if (!promptText.trim()) return;\n setIsGenerating(true);\n setGeneratedOutput(null);\n setTimeout(() => {\n setIsGenerating(false);\n setGeneratedOutput(\n \\`✓ [\\${selectedModel}] execution complete. 2,140 tokens streamed with zero-copy serialization. Latency: 1.1ms.\\`\n );\n }, 900);\n };\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans selection:bg-indigo-500/30\">\n <header className=\"sticky top-0 z-30 backdrop-blur-xl border-b border-white/10 bg-[#08090d]/80\">\n <div className=\"max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"h-7 w-7 rounded-lg bg-indigo-600 flex items-center justify-center text-white\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <span className=\"font-bold text-sm\">Synthetix AI</span>\n </div>\n <button className=\"text-xs font-semibold px-3.5 py-1.5 rounded-lg bg-indigo-600 text-white hover:bg-indigo-500\">\n Get API Key\n </button>\n </div>\n </header>\n\n <section className=\"pt-20 pb-16 px-4 sm:px-6 max-w-5xl mx-auto text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-indigo-500/30 bg-indigo-500/10 text-indigo-400 text-xs font-mono mb-6\">\n <Cpu className=\"h-3 w-3\" />\n <span>Next-Gen Autonomous Inference Engine</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-extrabold tracking-tight mb-5 leading-tight\">\n Zero Latency. Real Autonomous Intelligence.\n </h1>\n\n <p className=\"text-sm sm:text-base text-zinc-400 max-w-2xl mx-auto mb-10\">\n Stream deep reasoning tokens directly to edge clients. Synthesize complex backend architectures,\n fine-tune proprietary weights, and run microsecond telemetry without cold starts.\n </p>\n\n <form\n onSubmit={handleSynthesize}\n className=\"max-w-2xl mx-auto p-2 rounded-2xl bg-zinc-900 border border-white/10 flex flex-col sm:flex-row gap-2 shadow-2xl\"\n >\n <input\n type=\"text\"\n value={promptText}\n onChange={(e) => setPromptText(e.target.value)}\n className=\"flex-1 bg-transparent px-3 py-2 text-xs text-white focus:outline-none\"\n />\n <button\n type=\"submit\"\n disabled={isGenerating}\n className=\"px-4 py-2 rounded-xl bg-indigo-600 text-white text-xs font-semibold shrink-0\"\n >\n {isGenerating ? \"Synthesizing...\" : \"Execute\"}\n </button>\n </form>\n\n <AnimatePresence>\n {generatedOutput && (\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mt-4 p-3.5 rounded-xl border border-indigo-500/30 bg-indigo-950/20 text-xs font-mono text-indigo-300 max-w-2xl mx-auto text-left\"\n >\n {generatedOutput}\n </motion.div>\n )}\n </AnimatePresence>\n </section>\n </div>\n );\n}\n`,\n};\n","export const templateModernSaas = {\n name: \"template-modern-saas\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-modern-saas.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Command, Search, GitBranch, CheckCircle2, ArrowUpRight, ChevronRight, Zap } from \"lucide-react\";\n\nexport default function ModernSaasTemplate() {\n const [activeTab, setActiveTab] = useState<\"branch\" | \"edge\" | \"telemetry\">(\"branch\");\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans\">\n <header className=\"sticky top-0 z-30 border-b border-white/10 bg-[#090b10]/80 backdrop-blur-xl\">\n <div className=\"max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between\">\n <span className=\"font-bold text-sm\">Aura Cloud</span>\n <button className=\"text-xs px-3 py-1.5 rounded-lg bg-white/10 hover:bg-white/20 text-white font-medium\">\n Console\n </button>\n </div>\n </header>\n\n <section className=\"pt-20 pb-16 px-4 sm:px-6 max-w-5xl mx-auto text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-blue-500/30 bg-blue-500/10 text-blue-400 text-xs font-mono mb-5\">\n <GitBranch className=\"h-3 w-3\" />\n <span>Continuous Edge Infrastructure</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-extrabold tracking-tight mb-5 leading-tight\">\n The Developer Cloud for Ultra-Fast Teams.\n </h1>\n\n <p className=\"text-sm sm:text-base text-zinc-400 max-w-xl mx-auto mb-10\">\n Push code, spawn instant ephemeral preview environments, and deploy across 300 global edge locations\n with zero configuration.\n </p>\n </section>\n </div>\n );\n}\n`,\n};\n","export const templateAnalyticsDashboard = {\n name: \"template-analytics-dashboard\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-analytics-dashboard.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BarChart3, TrendingUp, Users, CreditCard, ArrowUpRight, Download } from \"lucide-react\";\n\nexport default function AnalyticsDashboardTemplate() {\n const [dateRange, setDateRange] = useState(\"30D\");\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 flex flex-col md:flex-row font-sans\">\n <aside className=\"w-full md:w-56 border-r border-white/10 p-4 shrink-0 bg-[#08090d]\">\n <div className=\"font-bold text-sm mb-6\">Prism Analytics</div>\n <nav className=\"space-y-1 text-xs\">\n <button className=\"w-full text-left px-3 py-2 rounded-lg bg-emerald-600 text-white font-semibold\">\n Overview\n </button>\n <button className=\"w-full text-left px-3 py-2 rounded-lg text-zinc-400 hover:text-white\">\n Inflows\n </button>\n </nav>\n </aside>\n <main className=\"flex-1 p-6\">\n <h1 className=\"text-2xl font-bold mb-4\">Executive Telemetry</h1>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateDevtoolsCli = {\n name: \"template-devtools-cli\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-devtools-cli.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Terminal, Copy, Check, Star } from \"lucide-react\";\n\nexport default function DevtoolsCliTemplate() {\n const [copied, setCopied] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#090a10] text-zinc-100 font-mono p-6\">\n <header className=\"flex justify-between items-center mb-12\">\n <span className=\"font-bold text-sm\">HyperTerminal</span>\n </header>\n </div>\n );\n}\n`,\n};\n","export const templateCreativePortfolio = {\n name: \"template-creative-portfolio\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-creative-portfolio.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ArrowUpRight, Award, X } from \"lucide-react\";\n\nexport default function CreativePortfolioTemplate() {\n return (\n <div className=\"min-h-screen bg-[#09090b] text-zinc-100 font-serif p-8\">\n <header className=\"flex justify-between items-center mb-16 font-sans\">\n <span className=\"font-bold uppercase tracking-tight\">Studio Monolith</span>\n </header>\n <h1 className=\"text-5xl font-light leading-tight mb-12\">\n Sculpting singular digital experiences for luxury institutions.\n </h1>\n </div>\n );\n}\n`,\n};\n","export const templateFintechApp = {\n name: \"template-fintech-app\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-fintech-app.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { CreditCard, Send, Lock, Unlock, ShieldCheck } from \"lucide-react\";\n\nexport default function FintechAppTemplate() {\n const [frozen, setFrozen] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6\">\n <h1 className=\"text-2xl font-bold mb-4\">Apex Treasury</h1>\n </div>\n );\n}\n`,\n};\n","export const templateEcommerceStore = {\n name: \"template-ecommerce-store\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ecommerce-store.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ShoppingBag, Heart, Truck, RotateCcw } from \"lucide-react\";\n\nexport default function EcommerceStoreTemplate() {\n return (\n <div className=\"min-h-screen bg-[#0c0d12] text-zinc-100 p-8\">\n <h1 className=\"text-3xl font-bold\">Atelier Objects</h1>\n </div>\n );\n}\n`,\n};\n","export const templateAgencyCreative = {\n name: \"template-agency-creative\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-agency-creative.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ArrowUpRight, Sparkles } from \"lucide-react\";\n\nexport default function AgencyCreativeTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-8 font-sans\">\n <h1 className=\"text-6xl font-black uppercase\">Vanguard Digital</h1>\n </div>\n );\n}\n`,\n};\n","export const templateAiChat = {\n name: \"template-ai-chat\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ai-chat.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Send, Cpu, Copy, Check } from \"lucide-react\";\n\nexport default function AiChatTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 flex p-4 font-sans\">\n <div className=\"flex-1\">Cortex AI Assistant</div>\n </div>\n );\n}\n`,\n};\n","export const templateProjectManagement = {\n name: \"template-project-management\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-project-management.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Plus, Kanban } from \"lucide-react\";\n\nexport default function ProjectManagementTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-6 font-sans\">\n <h1 className=\"text-xl font-bold\">Orbit Flow</h1>\n </div>\n );\n}\n`,\n};\n","export const templateStartupWaitlist = {\n name: \"template-startup-waitlist\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-startup-waitlist.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ArrowRight, Clock, Users } from \"lucide-react\";\n\nexport default function StartupWaitlistTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-8 text-center flex flex-col justify-center\">\n <h1 className=\"text-5xl font-extrabold mb-4\">Genesis Stealth</h1>\n </div>\n );\n}\n`,\n};\n","export const templateDocsPlatform = {\n name: \"template-docs-platform\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-docs-platform.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Search, Code2, Send } from \"lucide-react\";\n\nexport default function DocsPlatformTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-6\">\n <h1 className=\"text-3xl font-bold\">Codex Documentation</h1>\n </div>\n );\n}\n`,\n};\n","export const templateHealthcarePortal = {\n name: \"template-healthcare-portal\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-healthcare-portal.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Activity, Heart, Calendar, Pill, CheckCircle2, Video, TrendingUp } from \"lucide-react\";\n\nexport default function HealthcarePortalTemplate() {\n const [checkedMeds, setCheckedMeds] = useState<string[]>([\"med-1\"]);\n\n const vitals = [\n { label: \"Resting Heart Rate\", value: \"64\", unit: \"BPM\", delta: \"-3 bpm vs avg\", status: \"Optimal\" },\n { label: \"Blood Oxygen (SpO2)\", value: \"98.8\", unit: \"%\", delta: \"+0.4% healthy\", status: \"Optimal\" },\n { label: \"Sleep Recovery\", value: \"88\", unit: \"/100\", delta: \"7h 42m deep sleep\", status: \"High\" },\n { label: \"Heart Rate Var.\", value: \"58\", unit: \"ms\", delta: \"+7ms resilience\", status: \"Normal\" },\n ];\n\n const medications = [\n { id: \"med-1\", name: \"Atorvastatin Calcium\", dose: \"20mg • Morning with meal\", days: \"24 days left\" },\n { id: \"med-2\", name: \"Omega-3 Pure EPA/DHA\", dose: \"1000mg • Midday with water\", days: \"18 days left\" },\n { id: \"med-3\", name: \"Magnesium Glycinate\", dose: \"400mg • Evening before sleep\", days: \"6 days left\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8\">\n <header className=\"max-w-6xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div>\n <span className=\"text-xs uppercase font-mono tracking-widest text-teal-400\">PulseCare Telehealth</span>\n <h1 className=\"text-2xl font-bold\">Patient Health Telemetry</h1>\n </div>\n <button className=\"px-4 py-2 rounded-xl text-xs font-semibold bg-teal-600 hover:bg-teal-500 text-white flex items-center gap-2\">\n <Video className=\"h-3.5 w-3.5\" />\n <span>Book Specialist</span>\n </button>\n </header>\n\n <main className=\"max-w-6xl mx-auto py-8 space-y-6\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {vitals.map((v) => (\n <div key={v.label} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c]\">\n <span className=\"text-xs text-zinc-400\">{v.label}</span>\n <div className=\"text-2xl sm:text-3xl font-bold font-mono my-1\">\n {v.value} <span className=\"text-xs font-normal opacity-60\">{v.unit}</span>\n </div>\n <span className=\"text-xs text-teal-400 font-semibold flex items-center gap-1\">\n <TrendingUp className=\"h-3 w-3\" />\n {v.delta}\n </span>\n </div>\n ))}\n </div>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4\">\n <h2 className=\"font-bold text-base flex items-center gap-2\">\n <Pill className=\"h-4 w-4 text-teal-400\" />\n <span>Daily Prescriptions</span>\n </h2>\n <div className=\"space-y-2\">\n {medications.map((m) => {\n const isDone = checkedMeds.includes(m.id);\n return (\n <div\n key={m.id}\n onClick={() =>\n setCheckedMeds((prev) =>\n prev.includes(m.id) ? prev.filter((i) => i !== m.id) : [...prev, m.id]\n )\n }\n className=\"p-3.5 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between cursor-pointer hover:border-white/20\"\n >\n <div className=\"flex items-center gap-3\">\n <div\n className={\\`w-5 h-5 rounded-lg border flex items-center justify-center \\${\n isDone ? \"bg-teal-600 border-teal-600 text-white\" : \"border-zinc-500\"\n }\\`}\n >\n {isDone && <CheckCircle2 className=\"h-3.5 w-3.5\" />}\n </div>\n <div>\n <div className={\\`text-xs font-semibold \\${isDone ? \"line-through opacity-50\" : \"\"}\\`}>\n {m.name}\n </div>\n <div className=\"text-[10px] text-zinc-400\">{m.dose}</div>\n </div>\n </div>\n <span className=\"text-xs font-mono text-zinc-400\">{m.days}</span>\n </div>\n );\n })}\n </div>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateWeb3Dex = {\n name: \"template-web3-dex\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-web3-dex.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ArrowDownUp, Zap, Wallet, TrendingUp } from \"lucide-react\";\n\nexport default function Web3DexTemplate() {\n const [fromAmount, setFromAmount] = useState(\"1.5\");\n const [isSwapping, setIsSwapping] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 flex flex-col items-center justify-center\">\n <div className=\"w-full max-w-md p-6 rounded-3xl border border-white/10 bg-[#12141c] space-y-4 shadow-2xl\">\n <div className=\"flex justify-between items-center\">\n <span className=\"font-bold text-base\">NovaSwap DEX</span>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-cyan-500/10 text-cyan-400 font-mono\">12 Gwei</span>\n </div>\n\n <div className=\"p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1\">\n <div className=\"flex justify-between text-xs text-zinc-400\">\n <span>You Pay</span>\n <span>Balance: 4.82 ETH</span>\n </div>\n <div className=\"flex justify-between items-center\">\n <input\n type=\"text\"\n value={fromAmount}\n onChange={(e) => setFromAmount(e.target.value)}\n className=\"text-2xl font-mono font-bold bg-transparent outline-none w-1/2\"\n />\n <span className=\"px-3 py-1 rounded-xl bg-white/10 font-bold text-xs\">ETH</span>\n </div>\n </div>\n\n <div className=\"flex justify-center -my-2\">\n <div className=\"p-2 rounded-xl bg-[#12141c] border border-white/10\">\n <ArrowDownUp className=\"h-4 w-4 text-cyan-400\" />\n </div>\n </div>\n\n <div className=\"p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1\">\n <div className=\"flex justify-between text-xs text-zinc-400\">\n <span>You Receive (Est.)</span>\n <span>Balance: 14,850 USDC</span>\n </div>\n <div className=\"flex justify-between items-center\">\n <div className=\"text-2xl font-mono font-bold\">\n {(parseFloat(fromAmount || \"0\") * 2640.5).toFixed(2)}\n </div>\n <span className=\"px-3 py-1 rounded-xl bg-white/10 font-bold text-xs\">USDC</span>\n </div>\n </div>\n\n <button\n onClick={() => {\n setIsSwapping(true);\n setTimeout(() => setIsSwapping(false), 1200);\n }}\n className=\"w-full py-3.5 rounded-xl font-bold text-xs text-white bg-cyan-600 hover:bg-cyan-500 shadow-lg flex items-center justify-center gap-2 transition-transform active:scale-95\"\n >\n <Zap className=\"h-4 w-4\" />\n <span>{isSwapping ? \"Routing via Smart Contract...\" : \"Swap Tokens\"}</span>\n </button>\n </div>\n </div>\n );\n}\n`,\n};\n","export const templateEdtechLearning = {\n name: \"template-edtech-learning\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-edtech-learning.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BookOpen, CheckCircle2, Code2, Award, Flame, Play } from \"lucide-react\";\n\nexport default function EdtechLearningTemplate() {\n const [selectedIdx, setSelectedIdx] = useState<number | null>(1);\n const [isDone, setIsDone] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2\">\n <BookOpen className=\"h-5 w-5 text-emerald-400\" />\n <span className=\"font-bold text-base\">Polymath Academy</span>\n </div>\n <div className=\"flex items-center gap-1.5 px-3 py-1 rounded-full bg-amber-500/10 text-amber-400 text-xs font-semibold\">\n <Flame className=\"h-3.5 w-3.5 fill-current\" />\n <span>14 Day Streak</span>\n </div>\n </header>\n\n <main className=\"max-w-5xl mx-auto py-8 grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4\">\n <div className=\"text-xs font-mono text-zinc-400\">Module 2 • Lesson 2.2</div>\n <h1 className=\"text-2xl font-bold\">Raft Consensus & Majority Quorums</h1>\n <p className=\"text-xs text-zinc-300 leading-relaxed\">\n In Raft, a cluster of 5 nodes requires an affirmative vote from at least 3 nodes before committing any state machine transition.\n </p>\n\n <div className=\"space-y-2 pt-2\">\n {[\n \"Any follower can commit independently without Leader confirmation.\",\n \"A quorum majority (3 of 5 nodes) ensures overlapping sets and prevents split-brain.\",\n \"Logs are replicated only during leader step-down events.\",\n ].map((ans, i) => (\n <button\n key={i}\n onClick={() => setSelectedIdx(i)}\n className={\\`w-full p-3.5 rounded-xl border text-left text-xs transition-colors \\${\n selectedIdx === i\n ? \"border-emerald-500 bg-emerald-500/10 text-white font-semibold\"\n : \"border-white/10 bg-[#181a24] text-zinc-300\"\n }\\`}\n >\n {ans}\n </button>\n ))}\n </div>\n\n <button\n onClick={() => setIsDone(true)}\n className=\"px-5 py-2.5 rounded-xl text-xs font-bold text-white bg-emerald-600 hover:bg-emerald-500 shadow-md flex items-center gap-2 mt-4\"\n >\n <Play className=\"h-3.5 w-3.5 fill-current\" />\n <span>{isDone ? \"Solution Verified ✓ (+150 XP)\" : \"Verify Solution\"}</span>\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateConferenceEvent = {\n name: \"template-conference-event\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-conference-event.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Calendar, MapPin, Ticket, Sparkles, Check } from \"lucide-react\";\n\nexport default function ConferenceEventTemplate() {\n const [selectedDay, setSelectedDay] = useState(\"day-1\");\n\n const schedule = [\n { time: \"09:00 AM\", title: \"Opening Keynote: Autonomous Inference at Edge\", speaker: \"Dr. Elena Vance\" },\n { time: \"11:00 AM\", title: \"Deterministic Design Systems for 100M+ Users\", speaker: \"Marcus Sterling\" },\n { time: \"02:00 PM\", title: \"Zero-Downtime eBPF State Replication\", speaker: \"Hiroshi Tanaka\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090e] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-extrabold text-base tracking-tight\">Vertex Summit 2027</span>\n <button className=\"px-4 py-2 rounded-xl text-xs font-bold text-white bg-purple-600 hover:bg-purple-500 shadow-md\">\n Claim Pass\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-16 text-center space-y-6\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-purple-500/10 border border-purple-500/20 text-purple-400 text-xs font-mono\">\n <Calendar className=\"h-3.5 w-3.5\" />\n <span>October 14–16, 2027 • San Francisco, CA & Virtual</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-black tracking-tight leading-tight\">\n The Convergence of Autonomous Systems\n </h1>\n\n <p className=\"text-sm text-zinc-400 max-w-xl mx-auto\">\n Gathering 4,500+ systems engineers and AI leaders to build the future of software infrastructure.\n </p>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] text-left space-y-3 mt-8\">\n <h2 className=\"font-bold text-sm\">Day 1 Schedule (Oct 14)</h2>\n <div className=\"space-y-2\">\n {schedule.map((item) => (\n <div key={item.time} className=\"p-3 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between text-xs\">\n <div>\n <div className=\"font-bold\">{item.title}</div>\n <div className=\"text-[10px] text-zinc-400\">{item.speaker}</div>\n </div>\n <span className=\"font-mono text-purple-400 font-bold\">{item.time}</span>\n </div>\n ))}\n </div>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateAudioPodcast = {\n name: \"template-audio-podcast\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-audio-podcast.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Headphones, Play, Pause, RotateCcw, RotateCw, Download } from \"lucide-react\";\n\nexport default function AudioPodcastTemplate() {\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentSec, setCurrentSec] = useState(255); // 04:15\n\n const chapters = [\n { time: \"00:00\", title: \"Cold Open & Benchmarks\" },\n { time: \"04:15\", title: \"Lockless Ring Buffers vs Channels\" },\n { time: \"18:40\", title: \"Kernel-Bypass Networking with io_uring\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 pb-24\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2\">\n <Headphones className=\"h-5 w-5 text-indigo-400\" />\n <span className=\"font-bold text-base\">EchoWave Studio</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10\">\n Subscribe RSS\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-10 space-y-6\">\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-3\">\n <span className=\"text-xs font-mono text-indigo-400\">Episode 148 • 54m 20s</span>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">Zero-Cost Abstractions & High-Throughput I/O</h1>\n <p className=\"text-xs text-zinc-400\">Featuring Linus M. Discussing memory barriers and lock-free concurrency queues.</p>\n </div>\n\n <div className=\"space-y-2\">\n <h2 className=\"font-bold text-xs uppercase tracking-wider text-zinc-400\">Chapters</h2>\n {chapters.map((ch) => (\n <div key={ch.time} className=\"p-3.5 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <span>{ch.title}</span>\n <span className=\"font-mono text-indigo-400\">{ch.time}</span>\n </div>\n ))}\n </div>\n </main>\n\n <footer className=\"fixed bottom-0 inset-x-0 p-4 border-t border-white/10 bg-[#08090d]/95 backdrop-blur-xl\">\n <div className=\"max-w-4xl mx-auto flex items-center justify-between gap-4\">\n <button\n onClick={() => setIsPlaying(!isPlaying)}\n className=\"p-3 rounded-full bg-indigo-600 hover:bg-indigo-500 text-white shadow-md\"\n >\n {isPlaying ? <Pause className=\"h-5 w-5\" /> : <Play className=\"h-5 w-5 fill-current ml-0.5\" />}\n </button>\n <span className=\"text-xs font-mono text-zinc-400\">04:15 / 54:20</span>\n </div>\n </footer>\n </div>\n );\n}\n`,\n};\n","export const templateRealEstate = {\n name: \"template-real-estate\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-real-estate.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Building2, MapPin, Calendar, Users, Check } from \"lucide-react\";\n\nexport default function RealEstateTemplate() {\n const [nights, setNights] = useState(4);\n const baseRate = 2450;\n\n return (\n <div className=\"min-h-screen bg-[#0c0d12] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-serif text-base uppercase tracking-widest font-light\">Haven Luxury Estates</span>\n <span className=\"text-xs uppercase tracking-widest font-mono text-zinc-400\">Aspen • Kyoto • Zurich</span>\n </header>\n\n <main className=\"max-w-5xl mx-auto py-12 space-y-8\">\n <div className=\"space-y-3\">\n <div className=\"text-xs font-mono text-zinc-400\">Aspen Valley, Colorado • Residence #04</div>\n <h1 className=\"text-3xl sm:text-5xl font-serif font-light\">The Obsidian Pavilion</h1>\n <p className=\"text-xs sm:text-sm text-zinc-400 max-w-2xl leading-relaxed\">\n A 9,400 sq.ft cantilevered cedar and blackened steel retreat with panoramic mountain views and private helipad.\n </p>\n </div>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#14161f] flex flex-col sm:flex-row justify-between items-center gap-4\">\n <div>\n <div className=\"text-xs text-zinc-400\">Nightly Rate: $2,450 USD</div>\n <div className=\"text-2xl font-serif font-bold mt-0.5\">\n \\${(baseRate * nights).toLocaleString()} USD <span className=\"text-xs font-sans font-normal text-zinc-400\">({nights} nights)</span>\n </div>\n </div>\n <button className=\"px-6 py-3 rounded-xl text-xs font-serif uppercase tracking-wider font-bold bg-white text-black hover:bg-zinc-200 shadow-md\">\n Reserve Residence\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateUptimeStatus = {\n name: \"template-uptime-status\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-uptime-status.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { CheckCircle2, ShieldCheck, Server, Bell, Globe } from \"lucide-react\";\n\nexport default function UptimeStatusTemplate() {\n const services = [\n { name: \"Global Anycast Edge CDN\", uptime: \"100.0%\", ping: \"11ms\" },\n { name: \"Authentication Engine & SSO\", uptime: \"99.99%\", ping: \"24ms\" },\n { name: \"Distributed Vector Indexing\", uptime: \"99.97%\", ping: \"38ms\" },\n { name: \"PostgreSQL Database Clusters\", uptime: \"99.95%\", ping: \"14ms\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2 font-bold text-base\">\n <ShieldCheck className=\"h-5 w-5 text-emerald-500\" />\n <span>Beacon Status</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10 flex items-center gap-1.5\">\n <Bell className=\"h-3.5 w-3.5\" />\n <span>Subscribe</span>\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-10 space-y-6\">\n <div className=\"p-5 rounded-2xl border border-emerald-500/30 bg-emerald-500/10 flex items-center justify-between text-xs text-emerald-400 font-semibold\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5\" />\n <span>All Core Services Operational — 99.994% Availability</span>\n </div>\n <span className=\"font-mono\">Past 90 Days</span>\n </div>\n\n <div className=\"space-y-3\">\n {services.map((s) => (\n <div key={s.name} className=\"p-4 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <div>\n <div className=\"font-bold\">{s.name}</div>\n <div className=\"text-[10px] text-zinc-400 font-mono\">Latency: {s.ping}</div>\n </div>\n <span className=\"text-xs font-mono font-bold text-emerald-400\">{s.uptime}</span>\n </div>\n ))}\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateAgentWorkflow = {\n name: \"template-agent-workflow\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-agent-workflow.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Play, Zap, Database, Cpu, Send, CheckCircle2 } from \"lucide-react\";\n\nexport default function AgentWorkflowTemplate() {\n const [isRunning, setIsRunning] = useState(false);\n const [log, setLog] = useState<string | null>(null);\n\n const handleRun = () => {\n setIsRunning(true);\n setLog(\"Trigger received. Querying vector database...\");\n setTimeout(() => {\n setLog(\"Claude 3.5 Sonnet generated solution. Dispatching webhook...\");\n setTimeout(() => {\n setIsRunning(false);\n setLog(\"✓ Execution completed in 680ms. Payload delivered.\");\n }, 700);\n }, 800);\n };\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-bold text-base\">Nexus Nodes Canvas</span>\n <button\n onClick={handleRun}\n disabled={isRunning}\n className=\"px-4 py-2 rounded-xl text-xs font-bold text-white bg-blue-600 hover:bg-blue-500 flex items-center gap-2 shadow-md\"\n >\n <Play className=\"h-3.5 w-3.5 fill-current\" />\n <span>{isRunning ? \"Running...\" : \"Test Workflow\"}</span>\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-4 gap-3\">\n {[\n { name: \"Webhook Ingress\", icon: Zap, color: \"text-amber-400\" },\n { name: \"Pinecone Retrieval\", icon: Database, color: \"text-cyan-400\" },\n { name: \"Claude 3.5 Reasoning\", icon: Cpu, color: \"text-blue-400\" },\n { name: \"Slack Dispatcher\", icon: Send, color: \"text-emerald-400\" },\n ].map((n) => {\n const Icon = n.icon;\n return (\n <div key={n.name} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c] space-y-2 text-xs\">\n <Icon className={\\`h-4 w-4 \\${n.color}\\`} />\n <div className=\"font-bold\">{n.name}</div>\n </div>\n );\n })}\n </div>\n\n {log && (\n <div className=\"p-4 rounded-xl border border-white/10 bg-[#06070a] font-mono text-xs text-blue-400\">\n {log}\n </div>\n )}\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateRestaurantCulinary = {\n name: \"template-restaurant-culinary\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-restaurant-culinary.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Utensils, Calendar, Users, Award, Wine } from \"lucide-react\";\n\nexport default function RestaurantCulinaryTemplate() {\n const [guests, setGuests] = useState(2);\n const [confirmed, setConfirmed] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#0e0d0b] text-[#f5f2eb] font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-[#2e2b24]\">\n <div>\n <span className=\"text-[10px] uppercase font-mono tracking-widest text-amber-500\">Komorebi Gastronomy</span>\n <h1 className=\"text-xl font-serif\">Contemporary Seasonal Dining</h1>\n </div>\n <div className=\"flex items-center gap-1.5 text-xs text-amber-500 font-serif\">\n <Award className=\"h-4 w-4\" />\n <span>Two Michelin Stars</span>\n </div>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-8\">\n <div className=\"space-y-2 text-center\">\n <h2 className=\"text-3xl sm:text-4xl font-serif font-light\">Autumn Tasting Menu (8 Courses)</h2>\n <p className=\"text-xs text-[#b8b3a5] max-w-xl mx-auto\">\n Hokkaido sea urchin, wild matsutake, and binchotan-charred Miyazaki A5 wagyu tenderloin.\n </p>\n </div>\n\n <div className=\"p-6 rounded-3xl border border-[#2e2b24] bg-[#171512] max-w-md mx-auto space-y-4\">\n <div className=\"font-serif font-bold text-sm\">Table Reservation</div>\n <div className=\"flex gap-2\">\n {[2, 4, 6].map((g) => (\n <button\n key={g}\n onClick={() => setGuests(g)}\n className={\\`flex-1 py-2 rounded-xl border text-xs font-serif \\${\n guests === g ? \"bg-amber-700 text-white border-amber-700\" : \"border-[#2e2b24] text-[#b8b3a5]\"\n }\\`}\n >\n {g} Guests\n </button>\n ))}\n </div>\n\n <button\n onClick={() => setConfirmed(true)}\n className=\"w-full py-3 rounded-xl font-serif uppercase tracking-widest text-xs font-bold text-white bg-amber-700 hover:bg-amber-600 shadow-lg\"\n >\n {confirmed ? \"Table Reserved ✓\" : \"Reserve Table for \" + guests}\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateHelpCenter = {\n name: \"template-help-center\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-help-center.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Search, LifeBuoy, CreditCard, ShieldCheck, Code2, ChevronDown } from \"lucide-react\";\n\nexport default function HelpCenterTemplate() {\n const [query, setQuery] = useState(\"\");\n\n const categories = [\n { title: \"Getting Started\", icon: LifeBuoy, count: \"14 articles\" },\n { title: \"Billing & Invoicing\", icon: CreditCard, count: \"9 articles\" },\n { title: \"Security & 2FA\", icon: ShieldCheck, count: \"18 articles\" },\n { title: \"Developer API\", icon: Code2, count: \"22 articles\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-bold text-base\">Resolv Support Desk</span>\n <button className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold bg-indigo-600 hover:bg-indigo-500 text-white shadow-md\">\n Submit Ticket\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-8 text-center\">\n <h1 className=\"text-3xl sm:text-4xl font-extrabold\">How can our support team help you?</h1>\n\n <div className=\"max-w-md mx-auto relative\">\n <Search className=\"absolute left-3.5 top-3 h-4 w-4 opacity-50\" />\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search guides, 2FA, billing...\"\n className=\"w-full pl-10 pr-4 py-2.5 rounded-xl border border-white/10 bg-[#12141c] text-xs outline-none\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4 text-left\">\n {categories.map((c) => {\n const Icon = c.icon;\n return (\n <div key={c.title} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-xl bg-indigo-500/10 text-indigo-400\">\n <Icon className=\"h-4 w-4\" />\n </div>\n <div>\n <div className=\"font-bold\">{c.title}</div>\n <div className=\"text-[10px] text-zinc-400\">{c.count}</div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateFitnessAthletics = {\n name: \"template-fitness-athletics\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-fitness-athletics.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Activity, Heart, Flame, Trophy, Timer, Plus, CheckCircle2 } from \"lucide-react\";\n\nexport default function FitnessAthleticsTemplate() {\n const [bpm, setBpm] = useState(158);\n const [intervals, setIntervals] = useState([\n { title: \"Dynamic Hip Mobility\", target: \"10 min • Zone 1\", done: true },\n { title: \"Progressive Aerobic Build\", target: \"15 min @ 140 BPM\", done: true },\n { title: \"4 x 1,000m Lactate Repeats\", target: \"4 reps @ 3:42/km\", done: false },\n ]);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Activity className=\"w-5 h-5 text-rose-500\" />\n <span className=\"font-bold text-base\">AeroPulse Athletics</span>\n </div>\n <div className=\"text-xs font-mono px-3 py-1.5 rounded-full border\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n Recovery: 88% Ready\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Daily Strain</span>\n <div className=\"text-2xl font-extrabold mt-1\">14.8 / 21.0</div>\n </div>\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Current Target BPM</span>\n <div className=\"text-2xl font-extrabold text-indigo-600 mt-1\">{bpm} BPM</div>\n </div>\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Resting Heart Rate</span>\n <div className=\"text-2xl font-extrabold text-emerald-600 mt-1\">48 bpm</div>\n </div>\n </div>\n\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Cardio Zone Spectrum</h3>\n <input\n type=\"range\"\n min=\"100\"\n max=\"195\"\n value={bpm}\n onChange={(e) => setBpm(Number(e.target.value))}\n className=\"w-full accent-indigo-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateWildernessTravel = {\n name: \"template-wilderness-travel\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-wilderness-travel.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Compass, Mountain, Scale, Radio, Tent } from \"lucide-react\";\n\nexport default function WildernessTravelTemplate() {\n const [baseWeight, setBaseWeight] = useState(6.4);\n const [foodDays, setFoodDays] = useState(6);\n const totalWeight = (baseWeight + foodDays * 0.75 + 2.0).toFixed(1);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Compass className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">NomadRoute Expeditions</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-emerald-600\">\n Reserve Permits\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-xl font-extrabold mb-1\">Patagonia High Icefield Crossing</h2>\n <p className=\"text-xs opacity-70\">148 km • +6,850m Cumulative Gain • 8 Days</p>\n </div>\n\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"font-bold text-sm\">Skin-Out Pack Weight: {totalWeight} kg</h3>\n <span className=\"text-xs px-2 py-0.5 rounded bg-emerald-500/10 text-emerald-600 font-bold\">Ultralight Load</span>\n </div>\n <input\n type=\"range\"\n min=\"4.0\"\n max=\"12.0\"\n step=\"0.2\"\n value={baseWeight}\n onChange={(e) => setBaseWeight(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateDevopsKubernetes = {\n name: \"template-devops-kubernetes\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-devops-kubernetes.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Server, Cpu, Database, Terminal, Search, SlidersHorizontal } from \"lucide-react\";\n\nexport default function DevopsKubernetesTemplate() {\n const [canary, setCanary] = useState(15);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Server className=\"w-5 h-5 text-indigo-600\" />\n <span className=\"font-bold text-base\">KubeOrbit Cloud</span>\n </div>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 border border-emerald-500/20 font-mono\">\n 242/248 Pods Healthy\n </span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border font-sans\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Canary Ingress Weight: {canary}%</h3>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={canary}\n onChange={(e) => setCanary(Number(e.target.value))}\n className=\"w-full accent-indigo-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateAudioDaw = {\n name: \"template-audio-daw\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-audio-daw.tsx\",\n content: `\"use client\";\n\nimport React, { useState, useEffect } from \"react\";\nimport { Play, Pause, Disc, Sliders, Volume2, ShoppingBag } from \"lucide-react\";\n\nexport default function AudioDawTemplate() {\n const [isPlaying, setIsPlaying] = useState(false);\n const [bpm, setBpm] = useState(140);\n const [step, setStep] = useState(0);\n\n useEffect(() => {\n let interval: NodeJS.Timeout;\n if (isPlaying) {\n interval = setInterval(() => setStep((s) => (s + 1) % 16), (60 / bpm / 4) * 1000);\n }\n return () => clearInterval(interval);\n }, [isPlaying, bpm]);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Disc className=\"w-5 h-5 text-purple-600\" />\n <span className=\"font-bold text-base\">SoundForge Studio</span>\n </div>\n <button onClick={() => setIsPlaying(!isPlaying)} className=\"px-4 py-2 rounded-xl text-xs font-semibold text-white bg-purple-600 flex items-center gap-1.5\">\n {isPlaying ? <Pause className=\"w-3.5 h-3.5\" /> : <Play className=\"w-3.5 h-3.5\" />}\n <span>{isPlaying ? \"Pause\" : \"Play Groove\"}</span>\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex justify-between items-center mb-4\">\n <h3 className=\"font-bold text-sm\">16-Step Beat Grid ({bpm} BPM)</h3>\n <span className=\"font-mono text-xs opacity-60\">Step {step + 1} / 16</span>\n </div>\n <div className=\"grid grid-cols-16 gap-1\">\n {Array.from({ length: 16 }).map((_, i) => (\n <div key={i} className={\\`h-10 rounded border \\${step === i && isPlaying ? \"bg-purple-600 text-white\" : \"bg-zinc-100 dark:bg-zinc-800\"}\\`} />\n ))}\n </div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGamifiedHabits = {\n name: \"template-gamified-habits\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-gamified-habits.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Shield, Sword, Sparkles, Coins, Flame, CheckCircle2 } from \"lucide-react\";\n\nexport default function GamifiedHabitsTemplate() {\n const [xp, setXp] = useState(2450);\n const [gold, setGold] = useState(1420);\n const [quests, setQuests] = useState([\n { id: 1, title: \"Slay 90m Deep Focus Work Block\", xp: 180, done: false },\n { id: 2, title: \"Drink 2.5L Water Elixir\", xp: 60, done: true },\n ]);\n\n const toggle = (id: number, questXp: number) => {\n setQuests((prev) =>\n prev.map((q) => {\n if (q.id === id && !q.done) {\n setXp((x) => x + questXp);\n setGold((g) => g + 40);\n return { ...q, done: true };\n }\n return q;\n })\n );\n };\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Shield className=\"w-5 h-5 text-amber-500\" />\n <span className=\"font-bold text-base\">QuestCraft RPG</span>\n </div>\n <div className=\"text-xs font-mono font-bold text-amber-500 flex items-center gap-1\">\n <Coins className=\"w-3.5 h-3.5\" />\n <span>{gold} Gold</span>\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"font-extrabold text-base mb-1\">Level 14 Paladin • {xp} / 3,000 XP</h2>\n <div className=\"w-full h-2 bg-zinc-200 dark:bg-zinc-800 rounded-full overflow-hidden\">\n <div className=\"h-full bg-amber-500\" style={{ width: \\`\\${(xp / 3000) * 100}%\\` }} />\n </div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGlobalLogistics = {\n name: \"template-global-logistics\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-global-logistics.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Ship, Truck, Thermometer, Anchor, Navigation } from \"lucide-react\";\n\nexport default function GlobalLogisticsTemplate() {\n const [activeStage, setActiveStage] = useState(2);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Anchor className=\"w-5 h-5 text-cyan-600\" />\n <span className=\"font-bold text-base\">Vanguard Logistics</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">14 Vessels Active</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs font-mono opacity-60\">MASTER BILL OF LADING</span>\n <h2 className=\"text-xl font-extrabold font-mono mt-1\">BOL-849204-HKG</h2>\n <p className=\"text-xs opacity-70 mt-1\">Shenzhen (YTN) &rarr; Rotterdam Gateway (RTM)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGamingEsports = {\n name: \"template-gaming-esports\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-gaming-esports.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Trophy, Tv, Users, Target, Crown } from \"lucide-react\";\n\nexport default function GamingEsportsTemplate() {\n const [votes, setVotes] = useState(64);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Trophy className=\"w-5 h-5 text-rose-500\" />\n <span className=\"font-bold text-base\">Valkyrie Esports</span>\n </div>\n <span className=\"text-xs font-bold text-rose-500 font-mono\">LIVE • 284k Viewers</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border flex items-center justify-between\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"font-extrabold text-lg\">Sentinels (11)</div>\n <div className=\"font-mono text-xs opacity-60\">Map 5 Inferno</div>\n <div className=\"font-extrabold text-lg\">Cloud9 (9)</div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateArchitectureSpatial = {\n name: \"template-architecture-spatial\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-architecture-spatial.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Layers, Sun, Building, FileText } from \"lucide-react\";\n\nexport default function ArchitectureSpatialTemplate() {\n const [hour, setHour] = useState(13);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Building className=\"w-5 h-5 text-amber-600\" />\n <span className=\"font-bold text-base\">Arcform Spatial</span>\n </div>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 font-mono\">\n LEED Platinum • 620 m²\n </span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Solar Daylight Azimuth ({hour}:00 JST)</h3>\n <input\n type=\"range\"\n min=\"8\"\n max=\"18\"\n value={hour}\n onChange={(e) => setHour(Number(e.target.value))}\n className=\"w-full accent-amber-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCybersecuritySoc = {\n name: \"template-cybersecurity-soc\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-cybersecurity-soc.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ShieldAlert, Terminal, Lock, CheckCircle2 } from \"lucide-react\";\n\nexport default function CybersecuritySocTemplate() {\n const [quarantined, setQuarantined] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <ShieldAlert className=\"w-5 h-5 text-rose-600\" />\n <span className=\"font-bold text-base\">Aegis SOC</span>\n </div>\n <button\n onClick={() => setQuarantined(!quarantined)}\n className={\\`px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white \\${quarantined ? \"bg-gray-600\" : \"bg-rose-600\"}\\`}\n >\n {quarantined ? \"Host Air-Gapped\" : \"Isolate Host\"}\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-rose-600 font-bold mb-1\">CRITICAL • MITRE T1021.002</div>\n <h2 className=\"text-base font-extrabold font-sans\">Pass-the-Hash Lateral Movement via SMB</h2>\n <p className=\"text-xs opacity-70 mt-1\">Target Host: srv-dc-primary-01.internal (10.240.12.8)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCleantechAgriculture = {\n name: \"template-cleantech-agriculture\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-cleantech-agriculture.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Sprout, Droplets, Sun, Wind, Leaf } from \"lucide-react\";\n\nexport default function CleantechAgricultureTemplate() {\n const [ph, setPh] = useState(6.2);\n const [red, setRed] = useState(65);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Sprout className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">Verdant IoT</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">98.4% Water Recycled</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Hydroponic pH Level: {ph}</h3>\n <input\n type=\"range\"\n min=\"5.5\"\n max=\"7.0\"\n step=\"0.1\"\n value={ph}\n onChange={(e) => setPh(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateJurisVault = {\n name: \"template-juris-vault\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-juris-vault.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Scale, FileText, CheckCircle2, AlertTriangle, PenTool } from \"lucide-react\";\n\nexport default function JurisVaultTemplate() {\n const [signed, setSigned] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Scale className=\"w-5 h-5 text-indigo-600\" />\n <span className=\"font-bold text-base\">JurisVault AI</span>\n </div>\n <button\n onClick={() => setSigned(true)}\n className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-indigo-600 transition-opacity hover:opacity-90\"\n >\n {signed ? \"Executed & Signed\" : \"Approve & E-Sign\"}\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-rose-600 font-bold mb-1\">CRITICAL RISK • SEC-8.2</div>\n <h2 className=\"text-base font-bold\">Limitation of Liability & Consequential Damages</h2>\n <p className=\"text-xs opacity-70 mt-2\">Counterparty proposes uncapped liability. Recommended: Insert 2x ACV fallback clause.</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateOrbitalxMission = {\n name: \"template-orbitalx-mission\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-orbitalx-mission.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Satellite, Radio, Compass, Zap, Terminal } from \"lucide-react\";\n\nexport default function OrbitalXTemplate() {\n const [armed, setArmed] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Satellite className=\"w-5 h-5 text-blue-600\" />\n <span className=\"font-bold text-base\">OrbitalX Operations</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-500 font-bold\">AOS in 04m 12s</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs opacity-60\">ORBITAL VELOCITY: 7.58 km/s • LEO 545 km</div>\n <h2 className=\"text-base font-bold font-sans mt-1\">AstraConstellation-07 (NORAD 58210)</h2>\n <p className=\"text-xs opacity-75 mt-2\">Propellant: 78.4% Hydrazine • Solar: 1,420 W Nominal</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCineboardStudio = {\n name: \"template-cineboard-studio\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-cineboard-studio.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Clapperboard, Film, Camera, Video } from \"lucide-react\";\n\nexport default function CineBoardTemplate() {\n const [ratio, setRatio] = useState(\"2.39:1\");\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Clapperboard className=\"w-5 h-5 text-rose-600\" />\n <span className=\"font-bold text-base\">CineBoard Studio</span>\n </div>\n <div className=\"text-xs font-mono font-bold bg-rose-600/10 text-rose-600 px-2 py-1 rounded\">\n Framing: {ratio}\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">SCENE 14A • SHOT 01 (EXT. HIGHWAY DUSK)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Cooke Anamorphic 40mm T2.3 • Drone Push-In (3.2m/s)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateDomusLiving = {\n name: \"template-domus-living\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-domus-living.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Home, Thermometer, Sun, Zap, ShieldCheck } from \"lucide-react\";\n\nexport default function DomusLivingTemplate() {\n const [temp, setTemp] = useState(21.5);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Home className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">Domus Living</span>\n </div>\n <span className=\"text-xs font-semibold text-emerald-600\">Perimeter Armed</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Living Pavilion Climate: {temp}°C</h3>\n <input\n type=\"range\"\n min=\"18.0\"\n max=\"26.0\"\n step=\"0.5\"\n value={temp}\n onChange={(e) => setTemp(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateHyperionEv = {\n name: \"template-hyperion-ev\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-hyperion-ev.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Car, BatteryCharging, Zap, Gauge } from \"lucide-react\";\n\nexport default function HyperionEvTemplate() {\n const [soc, setSoc] = useState(74);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Car className=\"w-5 h-5 text-cyan-600\" />\n <span className=\"font-bold text-base\">Hyperion Fleet EV</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-cyan-600\">{soc}% SoC</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">Hyperion Freight Hauler Max (CA-941-EV)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Usable Capacity: 210 kWh / 280 kWh • 780V Architecture</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateSovereignAuctions = {\n name: \"template-sovereign-auctions\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-sovereign-auctions.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Gavel, ShieldCheck, DollarSign, Award } from \"lucide-react\";\n\nexport default function SovereignAuctionsTemplate() {\n const [bid, setBid] = useState(2450000);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Gavel className=\"w-5 h-5 text-amber-600\" />\n <span className=\"font-bold text-base\">Sovereign Auctions</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-amber-600\">\\${bid.toLocaleString()}</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs opacity-60\">LOT 24 • EVENING SALE LONDON</div>\n <h2 className=\"text-base font-bold mt-1\">Composition in Cadmium & Cobalt Resonance, 1988</h2>\n <button\n onClick={() => setBid(bid + 50000)}\n className=\"mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-amber-600 transition-opacity hover:opacity-90\"\n >\n Raise Bid +$50,000\n </button>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateScholarisArchive = {\n name: \"template-scholaris-archive\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-scholaris-archive.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BookOpen, FileText, Download, Award } from \"lucide-react\";\n\nexport default function ScholarisArchiveTemplate() {\n const [copied, setCopied] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <BookOpen className=\"w-5 h-5 text-sky-600\" />\n <span className=\"font-bold text-base\">Scholaris Archive</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">Reproducibility: 9.8/10</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-sky-600 font-mono font-bold mb-1\">DOI: 10.1038/s41586-026-09214-x</div>\n <h2 className=\"text-base font-bold\">Sub-Quadratic Attention via Orthogonal State Space Projections</h2>\n <p className=\"text-xs opacity-75 mt-2\">Dr. Evelyn Zhao (Stanford) • Prof. Kenneth Sterling (MIT)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateTalentorbitHr = {\n name: \"template-talentorbit-hr\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-talentorbit-hr.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Users, Calendar, Award, MapPin } from \"lucide-react\";\n\nexport default function TalentOrbitTemplate() {\n const [ptoDays, setPtoDays] = useState(18);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Users className=\"w-5 h-5 text-violet-600\" />\n <span className=\"font-bold text-base\">TalentOrbit HR</span>\n </div>\n <span className=\"text-xs font-semibold text-violet-600\">{ptoDays} Days PTO Left</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">Sophia Lindqvist • VP of Engineering</h2>\n <p className=\"text-xs opacity-70 mt-1\">Stockholm (UTC+1) • 24 Direct Reports • Top Performer (9-Box 1A)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateMiseenplaceKds = {\n name: \"template-miseenplace-kds\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-miseenplace-kds.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { UtensilsCrossed, Flame, Clock, Check } from \"lucide-react\";\n\nexport default function MiseEnPlaceTemplate() {\n const [bumped, setBumped] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <UtensilsCrossed className=\"w-5 h-5 text-orange-600\" />\n <span className=\"font-bold text-base\">MiseEnPlace KDS</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-orange-600\">3 ACTIVE ORDERS</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs font-mono font-bold text-rose-600 mb-1\">TABLE 12 • 04:15 ELAPSED</div>\n <h2 className=\"text-base font-bold\">2x 45-Day Dry Aged Ribeye (Med-Rare)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Station: GRILL • Extra flaky Maldon salt</p>\n <button\n onClick={() => setBumped(true)}\n className=\"mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-orange-600 transition-opacity hover:opacity-90\"\n >\n {bumped ? \"Order Bumped\" : \"Bump Order\"}\n </button>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateAurasolaceSanctuary = {\n name: \"template-aurasolace-sanctuary\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-aurasolace-sanctuary.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Heart, Wind, Volume2, Sparkles } from \"lucide-react\";\n\nexport default function AuraSolaceTemplate() {\n const [phase, setPhase] = useState(\"Inhale (4s)\");\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Heart className=\"w-5 h-5 text-teal-600\" />\n <span className=\"font-bold text-base\">AuraSolace Sanctuary</span>\n </div>\n <span className=\"text-xs font-semibold text-teal-600\">Peaceful Grounded</span>\n </header>\n\n <main className=\"py-8 space-y-6 text-center\">\n <div className=\"p-8 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"w-32 h-32 rounded-full border-2 border-teal-500 mx-auto flex items-center justify-center font-bold text-xs text-teal-600\">\n {phase}\n </div>\n <h2 className=\"text-base font-bold mt-4\">Parasympathetic Nervous System Regulation</h2>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","import { button } from './button';\nimport { modal } from './modal';\nimport { card } from './card';\nimport { alert } from './alert';\nimport { badge } from './badge';\nimport { morphingGeometry } from './morphing-geometry';\nimport { auroraBorderFX } from './aurora-border-fx';\nimport { auroraSearchPill } from './aurora-search-pill';\nimport { templateAiStartup } from './template-ai-startup';\nimport { templateModernSaas } from './template-modern-saas';\nimport { templateAnalyticsDashboard } from './template-analytics-dashboard';\nimport { templateDevtoolsCli } from './template-devtools-cli';\nimport { templateCreativePortfolio } from './template-creative-portfolio';\nimport { templateFintechApp } from './template-fintech-app';\nimport { templateEcommerceStore } from './template-ecommerce-store';\nimport { templateAgencyCreative } from './template-agency-creative';\nimport { templateAiChat } from './template-ai-chat';\nimport { templateProjectManagement } from './template-project-management';\nimport { templateStartupWaitlist } from './template-startup-waitlist';\nimport { templateDocsPlatform } from './template-docs-platform';\nimport { templateHealthcarePortal } from './template-healthcare-portal';\nimport { templateWeb3Dex } from './template-web3-dex';\nimport { templateEdtechLearning } from './template-edtech-learning';\nimport { templateConferenceEvent } from './template-conference-event';\nimport { templateAudioPodcast } from './template-audio-podcast';\nimport { templateRealEstate } from './template-real-estate';\nimport { templateUptimeStatus } from './template-uptime-status';\nimport { templateAgentWorkflow } from './template-agent-workflow';\nimport { templateRestaurantCulinary } from './template-restaurant-culinary';\nimport { templateHelpCenter } from './template-help-center';\nimport { templateFitnessAthletics } from './template-fitness-athletics';\nimport { templateWildernessTravel } from './template-wilderness-travel';\nimport { templateDevopsKubernetes } from './template-devops-kubernetes';\nimport { templateAudioDaw } from './template-audio-daw';\nimport { templateGamifiedHabits } from './template-gamified-habits';\nimport { templateGlobalLogistics } from './template-global-logistics';\nimport { templateGamingEsports } from './template-gaming-esports';\nimport { templateArchitectureSpatial } from './template-architecture-spatial';\nimport { templateCybersecuritySoc } from './template-cybersecurity-soc';\nimport { templateCleantechAgriculture } from './template-cleantech-agriculture';\nimport { templateJurisVault } from './template-juris-vault';\nimport { templateOrbitalxMission } from './template-orbitalx-mission';\nimport { templateCineboardStudio } from './template-cineboard-studio';\nimport { templateDomusLiving } from './template-domus-living';\nimport { templateHyperionEv } from './template-hyperion-ev';\nimport { templateSovereignAuctions } from './template-sovereign-auctions';\nimport { templateScholarisArchive } from './template-scholaris-archive';\nimport { templateTalentorbitHr } from './template-talentorbit-hr';\nimport { templateMiseenplaceKds } from './template-miseenplace-kds';\nimport { templateAurasolaceSanctuary } from './template-aurasolace-sanctuary';\n\nexport interface RegistryItem {\n name: string;\n dependencies: string[];\n componentsDependencies?: string[];\n fileName: string;\n content: string;\n}\n\nexport const registry: Record<string, RegistryItem> = {\n button,\n modal,\n card,\n alert,\n badge,\n 'morphing-geometry': morphingGeometry,\n 'aurora-border-fx': auroraBorderFX,\n 'aurora-search-pill': auroraSearchPill,\n 'template-ai-startup': templateAiStartup,\n 'template-modern-saas': templateModernSaas,\n 'template-analytics-dashboard': templateAnalyticsDashboard,\n 'template-devtools-cli': templateDevtoolsCli,\n 'template-creative-portfolio': templateCreativePortfolio,\n 'template-fintech-app': templateFintechApp,\n 'template-ecommerce-store': templateEcommerceStore,\n 'template-agency-creative': templateAgencyCreative,\n 'template-ai-chat': templateAiChat,\n 'template-project-management': templateProjectManagement,\n 'template-startup-waitlist': templateStartupWaitlist,\n 'template-docs-platform': templateDocsPlatform,\n 'template-healthcare-portal': templateHealthcarePortal,\n 'template-web3-dex': templateWeb3Dex,\n 'template-edtech-learning': templateEdtechLearning,\n 'template-conference-event': templateConferenceEvent,\n 'template-audio-podcast': templateAudioPodcast,\n 'template-real-estate': templateRealEstate,\n 'template-uptime-status': templateUptimeStatus,\n 'template-agent-workflow': templateAgentWorkflow,\n 'template-restaurant-culinary': templateRestaurantCulinary,\n 'template-help-center': templateHelpCenter,\n 'template-fitness-athletics': templateFitnessAthletics,\n 'template-wilderness-travel': templateWildernessTravel,\n 'template-devops-kubernetes': templateDevopsKubernetes,\n 'template-audio-daw': templateAudioDaw,\n 'template-gamified-habits': templateGamifiedHabits,\n 'template-global-logistics': templateGlobalLogistics,\n 'template-gaming-esports': templateGamingEsports,\n 'template-architecture-spatial': templateArchitectureSpatial,\n 'template-cybersecurity-soc': templateCybersecuritySoc,\n 'template-cleantech-agriculture': templateCleantechAgriculture,\n 'template-juris-vault': templateJurisVault,\n 'template-orbitalx-mission': templateOrbitalxMission,\n 'template-cineboard-studio': templateCineboardStudio,\n 'template-domus-living': templateDomusLiving,\n 'template-hyperion-ev': templateHyperionEv,\n 'template-sovereign-auctions': templateSovereignAuctions,\n 'template-scholaris-archive': templateScholarisArchive,\n 'template-talentorbit-hr': templateTalentorbitHr,\n 'template-miseenplace-kds': templateMiseenplaceKds,\n 'template-aurasolace-sanctuary': templateAurasolaceSanctuary,\n};\n\n\n\n","import { registry } from '../registry/index.js';\r\n\r\nexport function listCommand() {\r\n console.log('\\n\\x1b[34m\\x1b[1m=== Available NexoreUI Components ===\\x1b[0m\\n');\r\n \r\n Object.keys(registry).forEach((name) => {\r\n const item = registry[name];\r\n console.log(`- \\x1b[32m\\x1b[1m${name}\\x1b[0m (${item.fileName})`);\r\n if (item.dependencies.length > 0) {\r\n console.log(` \\x1b[90mDependencies: ${item.dependencies.join(', ')}\\x1b[0m`);\r\n }\r\n if (item.componentsDependencies && item.componentsDependencies.length > 0) {\r\n console.log(` \\x1b[33mRequires component: ${item.componentsDependencies.join(', ')}\\x1b[0m`);\r\n }\r\n console.log('');\r\n });\r\n}\r\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { detectProject } from '../utils/detect.js';\nimport { ensureCnUtil, ensureDir } from '../utils/copy.js';\nimport { ensurePathAlias, injectThemeCss, installPeerDependencies, THEME_PALETTES } from '../utils/config.js';\n\nfunction askQuestion(query: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) =>\n rl.question(query, (ans) => {\n rl.close();\n resolve(ans);\n })\n );\n}\n\nexport interface InitOptions {\n yes?: boolean;\n theme?: string;\n radius?: string;\n install?: boolean;\n}\n\nexport async function initCommand(options: InitOptions = {}) {\n console.log(`\\n\\x1b[36m\\x1b[1m=== Initializing NexoreUI in your project ===\\x1b[0m\\n`);\n\n const project = detectProject(process.cwd());\n console.log(`\\x1b[32m✔ Detected Project:\\x1b[0m ${project.projectType.toUpperCase()} (${project.packageManager})`);\n\n let theme = options.theme || 'cyan';\n let radius = options.radius || '1.0';\n const defaultComponentsDir = project.hasSrcDir ? 'src/components/ui' : 'components/ui';\n const defaultUtilsFile = project.hasSrcDir ? 'src/lib/utils.ts' : 'lib/utils.ts';\n const defaultCssFile = project.projectType === 'next' \n ? (project.hasSrcDir ? 'src/app/globals.css' : 'app/globals.css') \n : (project.hasSrcDir ? 'src/index.css' : 'src/index.css');\n\n let componentsDir = defaultComponentsDir;\n let utilsFile = defaultUtilsFile;\n\n if (!options.yes) {\n if (!options.theme) {\n const themeAns = await askQuestion(`Which color theme would you like to use? (cyan, indigo, violet, emerald, rose, amber, slate, neon) [default: cyan]: `);\n if (themeAns.trim() && THEME_PALETTES[themeAns.trim().toLowerCase()]) {\n theme = themeAns.trim().toLowerCase();\n }\n }\n\n if (!options.radius) {\n const radiusAns = await askQuestion(`Which radius value would you like to use? (0, 0.3, 0.5, 0.75, 1.0) [default: 1.0]: `);\n if (radiusAns.trim()) {\n radius = radiusAns.trim();\n }\n }\n\n const compAns = await askQuestion(`Where should UI components be created? (default: ${defaultComponentsDir}): `);\n if (compAns.trim()) componentsDir = compAns.trim();\n\n const utilsAns = await askQuestion(`Where should utility functions (cn helper) be placed? (default: ${defaultUtilsFile}): `);\n if (utilsAns.trim()) utilsFile = utilsAns.trim();\n }\n\n const absoluteComponentsDir = path.resolve(project.baseDir, componentsDir);\n const absoluteUtilsFile = path.resolve(project.baseDir, utilsFile);\n\n // 1. Ensure directories & cn helper\n ensureDir(absoluteComponentsDir);\n ensureCnUtil(absoluteUtilsFile);\n\n // 2. Configure Path Aliases (@/) automatically\n const didUpdateAlias = ensurePathAlias(project.baseDir, project.projectType, project.hasSrcDir);\n if (didUpdateAlias) {\n console.log(`\\x1b[32m✔\\x1b[0m Configured path alias \\x1b[1m'@/*'\\x1b[0m in project config`);\n }\n\n // 3. Inject Tailwind CSS v4 source & theme variables\n const didInjectCss = injectThemeCss(project.baseDir, defaultCssFile, theme, radius);\n if (didInjectCss) {\n console.log(`\\x1b[32m✔\\x1b[0m Injected Tailwind CSS v4 @theme tokens into \\x1b[1m${defaultCssFile}\\x1b[0m`);\n }\n\n // 4. Install peer dependencies automatically\n installPeerDependencies(project.baseDir, project.packageManager);\n\n // 5. Write nexore.json config\n const config = {\n $schema: \"https://nexoreui.site/schema.json\",\n style: \"default\",\n theme: theme,\n radius: Number(radius),\n framework: project.projectType,\n packageManager: project.packageManager,\n font: \"system\",\n density: \"default\",\n animation: \"energetic\",\n defaultMode: \"light\",\n tailwind: {\n config: \"tailwind.config.js\",\n css: defaultCssFile,\n baseColor: \"zinc\",\n cssVariables: true,\n },\n aliases: {\n components: `@/${componentsDir.replace(/^src\\//, '')}`,\n utils: `@/${utilsFile.replace(/^src\\//, '').replace(/\\.(ts|js)$/, '')}`,\n },\n };\n\n const configPath = path.join(project.baseDir, 'nexore.json');\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');\n\n console.log(`\\x1b[32m✔\\x1b[0m Generated \\x1b[1mnexore.json\\x1b[0m (Theme: ${theme}, Radius: ${radius}rem)`);\n console.log(`\\x1b[32m✔\\x1b[0m Utilities ready at \\x1b[1m${utilsFile}\\x1b[0m`);\n console.log(`\\x1b[32m✔\\x1b[0m Components directory ready at \\x1b[1m${componentsDir}\\x1b[0m`);\n\n console.log(`\\n\\x1b[32m\\x1b[1m🎉 NexoreUI initialized successfully! You can now add components:\\x1b[0m`);\n console.log(` \\x1b[36mnpx nexoreui add button card modal table --all\\x1b[0m\\n`);\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport type { PackageManager, ProjectType } from './detect.js';\n\nexport const THEME_PALETTES: Record<string, { light: string; dark: string; rgb: string }> = {\n indigo: { light: 'hsl(250 85% 50%)', dark: 'hsl(250 85% 65%)', rgb: '99 60 220' },\n violet: { light: 'hsl(262.1 83.3% 57.8%)', dark: 'hsl(263.4 70% 50.4%)', rgb: '139 92 246' },\n emerald: { light: 'hsl(142.1 76.2% 36.3%)', dark: 'hsl(142.1 70.6% 45.3%)', rgb: '16 185 129' },\n rose: { light: 'hsl(346.8 77.2% 49.8%)', dark: 'hsl(346.8 77.2% 55%)', rgb: '244 63 94' },\n amber: { light: 'hsl(37.7 92.1% 50.2%)', dark: 'hsl(37.7 92.1% 55%)', rgb: '245 158 11' },\n cyan: { light: 'hsl(190.4 95% 39%)', dark: 'hsl(188.7 94.5% 42.7%)', rgb: '6 182 212' },\n slate: { light: 'hsl(240 5.9% 10%)', dark: 'hsl(0 0% 98%)', rgb: '244 244 245' },\n neon: { light: 'hsl(173 80% 40%)', dark: 'hsl(173 100% 50%)', rgb: '0 255 220' },\n};\n\n/**\n * Automatically configures `@` path alias in vite.config or tsconfig if missing.\n */\nexport function ensurePathAlias(baseDir: string, projectType: ProjectType, hasSrcDir: boolean): boolean {\n let updated = false;\n\n // 1. Check TypeScript / JavaScript config\n const tsConfigPath = path.join(baseDir, 'tsconfig.json');\n const jsConfigPath = path.join(baseDir, 'jsconfig.json');\n const targetConfig = fs.existsSync(tsConfigPath) ? tsConfigPath : fs.existsSync(jsConfigPath) ? jsConfigPath : null;\n\n if (targetConfig) {\n try {\n const content = fs.readFileSync(targetConfig, 'utf8');\n const parsed = JSON.parse(content);\n parsed.compilerOptions = parsed.compilerOptions || {};\n parsed.compilerOptions.baseUrl = parsed.compilerOptions.baseUrl || '.';\n parsed.compilerOptions.paths = parsed.compilerOptions.paths || {};\n\n const aliasTarget = hasSrcDir ? ['./src/*'] : ['./*'];\n if (!parsed.compilerOptions.paths['@/*']) {\n parsed.compilerOptions.paths['@/*'] = aliasTarget;\n fs.writeFileSync(targetConfig, JSON.stringify(parsed, null, 2), 'utf8');\n updated = true;\n }\n } catch {\n // If parsing fails due to comments in json, skip to avoid breaking custom configs\n }\n }\n\n // 2. Check Vite Config\n if (projectType === 'vite') {\n const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs'];\n for (const fileName of viteConfigFiles) {\n const vitePath = path.join(baseDir, fileName);\n if (fs.existsSync(vitePath)) {\n let viteContent = fs.readFileSync(vitePath, 'utf8');\n if (!viteContent.includes(\"alias\") && !viteContent.includes(\"'@'\")) {\n // Check if path import exists\n const hasPathImport = viteContent.includes(\"from 'path'\") || viteContent.includes('from \"path\"');\n let headerAdditions = '';\n if (!hasPathImport) {\n headerAdditions += `import path from 'path'\\nimport { fileURLToPath } from 'url'\\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\\n`;\n }\n\n if (viteContent.includes('defineConfig({')) {\n viteContent = headerAdditions + viteContent.replace(\n 'defineConfig({',\n `defineConfig({\\n resolve: {\\n alias: {\\n '@': path.resolve(__dirname, './${hasSrcDir ? 'src' : '.'}'),\\n },\\n },`\n );\n fs.writeFileSync(vitePath, viteContent, 'utf8');\n updated = true;\n }\n }\n\n // Configure @tailwindcss/vite if missing\n if (!viteContent.includes('@tailwindcss/vite')) {\n let updatedVite = `import tailwindcss from '@tailwindcss/vite'\\n` + viteContent;\n if (updatedVite.includes('plugins: [')) {\n updatedVite = updatedVite.replace(/plugins:\\s*\\[/, 'plugins: [tailwindcss(), ');\n fs.writeFileSync(vitePath, updatedVite, 'utf8');\n updated = true;\n }\n }\n break;\n }\n }\n }\n\n return updated;\n}\n\n/**\n * Injects Tailwind CSS v4 source directive and theme variables into the main CSS file.\n */\nexport function injectThemeCss(\n baseDir: string,\n cssRelativePath: string,\n themeName: string,\n radiusValue: string | number\n): boolean {\n const cssAbsolutePath = path.join(baseDir, cssRelativePath);\n const palette = THEME_PALETTES[themeName] || THEME_PALETTES.cyan;\n const radius = typeof radiusValue === 'number' ? radiusValue : parseFloat(radiusValue) || 1.0;\n\n const themeBlock = `\n@source \"../node_modules/nexoreui/dist/**/*.{js,mjs}\";\n\n@theme {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-lg: var(--radius);\n --radius-md: calc(var(--radius) - 2px);\n --radius-sm: calc(var(--radius) - 4px);\n --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n:root {\n --background: hsl(0 0% 100%);\n --foreground: hsl(240 10% 3.9%);\n --card: hsl(0 0% 100%);\n --card-foreground: hsl(240 10% 3.9%);\n --popover: hsl(0 0% 100%);\n --popover-foreground: hsl(240 10% 3.9%);\n --primary: ${palette.light};\n --primary-foreground: hsl(0 0% 100%);\n --secondary: hsl(240 4.8% 95.9%);\n --secondary-foreground: hsl(240 5.9% 10%);\n --muted: hsl(240 4.8% 95.9%);\n --muted-foreground: hsl(240 3.8% 46.1%);\n --accent: hsl(240 4.8% 95.9%);\n --accent-foreground: hsl(240 5.9% 10%);\n --destructive: hsl(0 84.2% 60.2%);\n --destructive-foreground: hsl(0 0% 98%);\n --border: hsl(240 5.9% 90%);\n --input: hsl(240 5.9% 90%);\n --ring: ${palette.light};\n --radius: ${radius}rem;\n --glow-radius: 12px;\n --glow-strength: 0.15;\n --glow-color: ${palette.rgb};\n}\n\n.dark {\n --background: hsl(240 10% 3.9%);\n --foreground: hsl(0 0% 98%);\n --card: hsl(240 10% 3.9%);\n --card-foreground: hsl(0 0% 98%);\n --popover: hsl(240 10% 3.9%);\n --popover-foreground: hsl(0 0% 98%);\n --primary: ${palette.dark};\n --primary-foreground: hsl(0 0% 100%);\n --secondary: hsl(240 3.7% 15.9%);\n --secondary-foreground: hsl(0 0% 98%);\n --muted: hsl(240 3.7% 15.9%);\n --muted-foreground: hsl(240 5% 64.9%);\n --accent: hsl(240 3.7% 15.9%);\n --accent-foreground: hsl(0 0% 98%);\n --destructive: hsl(0 62.8% 30.6%);\n --destructive-foreground: hsl(0 0% 98%);\n --border: hsl(240 3.7% 15.9%);\n --input: hsl(240 3.7% 15.9%);\n --ring: ${palette.dark};\n --radius: ${radius}rem;\n --glow-radius: 20px;\n --glow-strength: 0.35;\n --glow-color: ${palette.rgb};\n}\n`;\n\n if (fs.existsSync(cssAbsolutePath)) {\n const existingContent = fs.readFileSync(cssAbsolutePath, 'utf8');\n if (!existingContent.includes('--color-primary') && !existingContent.includes('nexoreui/dist')) {\n fs.writeFileSync(cssAbsolutePath, existingContent.trim() + '\\n' + themeBlock, 'utf8');\n return true;\n }\n } else {\n const cssDir = path.dirname(cssAbsolutePath);\n if (!fs.existsSync(cssDir)) fs.mkdirSync(cssDir, { recursive: true });\n fs.writeFileSync(cssAbsolutePath, `@import \"tailwindcss\";\\n` + themeBlock, 'utf8');\n return true;\n }\n\n return false;\n}\n\n/**\n * Automatically installs core peer dependencies if missing.\n */\nexport function installPeerDependencies(\n baseDir: string,\n packageManager: PackageManager,\n dependencies: string[] = ['clsx', 'tailwind-merge', 'lucide-react', 'framer-motion']\n): boolean {\n try {\n const packageJsonPath = path.join(baseDir, 'package.json');\n let missingDeps = [...dependencies];\n\n if (fs.existsSync(packageJsonPath)) {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n const installed = { ...pkg.dependencies, ...pkg.devDependencies };\n missingDeps = dependencies.filter((dep) => !installed[dep]);\n }\n\n if (missingDeps.length === 0) return true;\n\n let installCmd = 'npm install';\n if (packageManager === 'pnpm') installCmd = 'pnpm add';\n else if (packageManager === 'yarn') installCmd = 'yarn add';\n else if (packageManager === 'bun') installCmd = 'bun add';\n\n console.log(`\\n\\x1b[33m⚡ Installing peer dependencies:\\x1b[0m ${missingDeps.join(', ')}...`);\n execSync(`${installCmd} ${missingDeps.join(' ')}`, {\n stdio: 'inherit',\n cwd: baseDir,\n });\n return true;\n } catch (err) {\n console.warn('\\x1b[33mWarning: Automatic peer dependency installation skipped.\\x1b[0m');\n return false;\n }\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { initCommand } from './init.js';\n\nexport interface CreateOptions {\n theme?: string;\n radius?: string;\n template?: 'vite' | 'next';\n}\n\nexport async function createCommand(projectName?: string, options: CreateOptions = {}) {\n const name = projectName || 'my-nexore-app';\n const targetDir = path.resolve(process.cwd(), name);\n\n console.log(`\\n\\x1b[36m\\x1b[1m🚀 Creating a new NexoreUI Project:\\x1b[0m \\x1b[32m${name}\\x1b[0m\\n`);\n\n if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length > 0) {\n console.error(`\\x1b[31mError: Target directory ${name} already exists and is not empty.\\x1b[0m`);\n return;\n }\n\n // 1. Scaffold base Vite React TypeScript template\n console.log(`\\x1b[33m⚡ Scaffolding React + Vite + Tailwind CSS template...\\x1b[0m`);\n try {\n execSync(`npm create vite@latest ${name} -- --template react-ts`, { stdio: 'inherit' });\n } catch (err) {\n console.error(`\\x1b[31mFailed to scaffold Vite project.\\x1b[0m`);\n return;\n }\n\n // 2. Change directory and install dependencies\n process.chdir(targetDir);\n console.log(`\\n\\x1b[33m📦 Installing NexoreUI, Tailwind CSS, and core packages...\\x1b[0m`);\n execSync(`npm install nexoreui lucide-react clsx tailwind-merge framer-motion @tailwindcss/vite tailwindcss`, {\n stdio: 'inherit',\n });\n\n // 3. Run automated NexoreUI initialization\n await initCommand({\n yes: true,\n theme: options.theme || 'cyan',\n radius: options.radius || '1.0',\n });\n\n console.log(`\\n\\x1b[32m\\x1b[1m✨ Project ${name} is ready!\\x1b[0m`);\n console.log(`\\nTo get started:\\n`);\n console.log(` \\x1b[36mcd ${name}\\x1b[0m`);\n console.log(` \\x1b[36mnpx nexoreui add button card modal table --all\\x1b[0m`);\n console.log(` \\x1b[36mnpm run dev\\x1b[0m\\n`);\n}\n","import { addCommand } from './commands/add.js';\nimport { listCommand } from './commands/list.js';\nimport { initCommand } from './commands/init.js';\nimport { createCommand } from './commands/create.js';\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (!command || command === '-h' || command === '--help') {\n printHelp();\n return;\n }\n\n if (command === 'create') {\n const projectName = args[1] && !args[1].startsWith('-') ? args[1] : undefined;\n let theme: string | undefined;\n let radius: string | undefined;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '--theme' && args[i + 1]) {\n theme = args[++i];\n } else if (arg.startsWith('--theme=')) {\n theme = arg.split('=')[1];\n } else if (arg === '--radius' && args[i + 1]) {\n radius = args[++i];\n } else if (arg.startsWith('--radius=')) {\n radius = arg.split('=')[1];\n }\n }\n\n await createCommand(projectName, { theme, radius });\n } else if (command === 'init') {\n let yes = false;\n let theme: string | undefined;\n let radius: string | undefined;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '-y' || arg === '--yes') {\n yes = true;\n } else if (arg === '--theme' && args[i + 1]) {\n theme = args[++i];\n } else if (arg.startsWith('--theme=')) {\n theme = arg.split('=')[1];\n } else if (arg === '--radius' && args[i + 1]) {\n radius = args[++i];\n } else if (arg.startsWith('--radius=')) {\n radius = arg.split('=')[1];\n }\n }\n\n await initCommand({ yes, theme, radius });\n } else if (command === 'list') {\n listCommand();\n } else if (command === 'add') {\n const components: string[] = [];\n let yes = false;\n let all = false;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '-y' || arg === '--yes') {\n yes = true;\n } else if (arg === '--all' || arg === '-a') {\n all = true;\n } else if (!arg.startsWith('-')) {\n components.push(arg);\n }\n }\n\n await addCommand(components, { yes, all });\n } else {\n console.error(`\\x1b[31mUnknown command: ${command}\\x1b[0m`);\n printHelp();\n }\n}\n\nfunction printHelp() {\n console.log(`\n\\x1b[36m\\x1b[1mNexoreUI CLI\\x1b[0m\n\\x1b[90mModern, animated, production-ready React components with Tailwind CSS v4\\x1b[0m\n\nUsage:\n npx nexoreui [command] [options]\n\nCommands:\n \\x1b[32mcreate [name]\\x1b[0m Create a new fully configured NexoreUI starter project\n \\x1b[32minit\\x1b[0m Initialize NexoreUI in your project (configure theme, aliases, and CSS)\n \\x1b[32madd [components...]\\x1b[0m Add components to your project (use --all to install all 40+ components)\n \\x1b[32mlist\\x1b[0m List all available components in registry\n\nOptions:\n \\x1b[33m--theme <name>\\x1b[0m Set color palette (cyan, indigo, violet, emerald, rose, amber, slate, neon)\n \\x1b[33m--radius <val>\\x1b[0m Set border radius (0, 0.3, 0.5, 0.75, 1.0)\n \\x1b[33m--all, -a\\x1b[0m Install all available components at once\n \\x1b[33m-y, --yes\\x1b[0m Skip prompts and use defaults automatically\n \\x1b[33m-h, --help\\x1b[0m Show help information\n `);\n}\n\nmain().catch((err) => {\n console.error('\\x1b[31mAn unexpected error occurred:\\x1b[0m', err);\n process.exit(1);\n});\n"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["fs","path","fs","path","resolve","fs","path","readline","fs","path","import_child_process","askQuestion","resolve","fs","path","import_child_process"]}
1
+ {"version":3,"sources":["../src/commands/add.ts","../src/utils/detect.ts","../src/utils/copy.ts","../src/registry/button.ts","../src/registry/modal.ts","../src/registry/card.ts","../src/registry/alert.ts","../src/registry/badge.ts","../src/registry/morphing-geometry.ts","../src/registry/aurora-border-fx.ts","../src/registry/aurora-search-pill.ts","../src/registry/template-ai-startup.ts","../src/registry/template-modern-saas.ts","../src/registry/template-analytics-dashboard.ts","../src/registry/template-devtools-cli.ts","../src/registry/template-creative-portfolio.ts","../src/registry/template-fintech-app.ts","../src/registry/template-ecommerce-store.ts","../src/registry/template-agency-creative.ts","../src/registry/template-ai-chat.ts","../src/registry/template-project-management.ts","../src/registry/template-startup-waitlist.ts","../src/registry/template-docs-platform.ts","../src/registry/template-healthcare-portal.ts","../src/registry/template-web3-dex.ts","../src/registry/template-edtech-learning.ts","../src/registry/template-conference-event.ts","../src/registry/template-audio-podcast.ts","../src/registry/template-real-estate.ts","../src/registry/template-uptime-status.ts","../src/registry/template-agent-workflow.ts","../src/registry/template-restaurant-culinary.ts","../src/registry/template-help-center.ts","../src/registry/template-fitness-athletics.ts","../src/registry/template-wilderness-travel.ts","../src/registry/template-devops-kubernetes.ts","../src/registry/template-audio-daw.ts","../src/registry/template-gamified-habits.ts","../src/registry/template-global-logistics.ts","../src/registry/template-gaming-esports.ts","../src/registry/template-architecture-spatial.ts","../src/registry/template-cybersecurity-soc.ts","../src/registry/template-cleantech-agriculture.ts","../src/registry/template-juris-vault.ts","../src/registry/template-orbitalx-mission.ts","../src/registry/template-cineboard-studio.ts","../src/registry/template-domus-living.ts","../src/registry/template-hyperion-ev.ts","../src/registry/template-sovereign-auctions.ts","../src/registry/template-scholaris-archive.ts","../src/registry/template-talentorbit-hr.ts","../src/registry/template-miseenplace-kds.ts","../src/registry/template-aurasolace-sanctuary.ts","../src/registry/index.ts","../src/commands/list.ts","../src/commands/init.ts","../src/utils/config.ts","../src/commands/create.ts","../src/index.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { execSync } from 'child_process';\nimport { detectProject } from '../utils/detect.js';\nimport { ensureCnUtil, copyComponentFile, ensureDir } from '../utils/copy.js';\nimport { registry } from '../registry/index.js';\n\nfunction askQuestion(query: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) =>\n rl.question(query, (ans) => {\n rl.close();\n resolve(ans);\n })\n );\n}\n\nexport interface AddOptions {\n yes?: boolean;\n all?: boolean;\n overwrite?: boolean;\n}\n\nexport async function addCommand(components: string[], options: AddOptions = {}) {\n const allRegistryKeys = Object.keys(registry);\n\n // If --all flag is passed, select all registered components\n let targetComponents = [...components];\n if (options.all || targetComponents.includes('--all')) {\n targetComponents = allRegistryKeys;\n console.log(`\\n\\x1b[36m⚡ Adding all ${targetComponents.length} components from NexoreUI registry...\\x1b[0m`);\n }\n\n if (targetComponents.length === 0) {\n console.error('\\x1b[31mError: Please specify components to add or use --all.\\x1b[0m');\n console.log('Example: npx nexoreui add button modal table --all');\n return;\n }\n\n // 1. Detect project structure\n const project = detectProject(process.cwd());\n console.log(`\\n\\x1b[34mDetected project type:\\x1b[0m ${project.projectType.toUpperCase()}`);\n console.log(`\\x1b[34mDetected package manager:\\x1b[0m ${project.packageManager}\\n`);\n\n // Read nexore.json config if exists\n let customComponentsDir: string | undefined;\n let customUtilsFile: string | undefined;\n try {\n const configPath = path.join(project.baseDir, 'nexore.json');\n if (fs.existsSync(configPath)) {\n const cfg = JSON.parse(fs.readFileSync(configPath, 'utf8'));\n if (cfg.aliases?.components) {\n customComponentsDir = cfg.aliases.components.replace(/^@\\//, project.hasSrcDir ? 'src/' : '');\n }\n if (cfg.aliases?.utils) {\n const utilBase = cfg.aliases.utils.replace(/^@\\//, project.hasSrcDir ? 'src/' : '');\n customUtilsFile = utilBase.endsWith('.ts') || utilBase.endsWith('.js') ? utilBase : `${utilBase}.ts`;\n }\n }\n } catch {\n // Fallback to default detection\n }\n\n // 2. Validate component names and determine all components to install\n const componentsToInstall = new Set<string>();\n const invalidComponents: string[] = [];\n\n const queue = [...targetComponents.filter((c) => c !== '--all')];\n while (queue.length > 0) {\n const compName = queue.shift()!;\n const registryItem = registry[compName];\n if (!registryItem) {\n invalidComponents.push(compName);\n continue;\n }\n\n if (!componentsToInstall.has(compName)) {\n componentsToInstall.add(compName);\n if (registryItem.componentsDependencies) {\n for (const dep of registryItem.componentsDependencies) {\n queue.push(dep);\n }\n }\n }\n }\n\n if (invalidComponents.length > 0) {\n console.error(`\\x1b[31mError: Component(s) not found in registry: ${invalidComponents.join(', ')}\\x1b[0m`);\n console.log('Run \\x1b[32mnpx nexoreui list\\x1b[0m to see all available components.');\n return;\n }\n\n // 3. Determine paths\n const defaultComponentsDir = customComponentsDir || (project.hasSrcDir ? 'src/components/ui' : 'components/ui');\n const defaultUtilsFile = customUtilsFile || (project.hasSrcDir ? 'src/lib/utils.ts' : 'lib/utils.ts');\n\n let componentsDirInput = defaultComponentsDir;\n let utilsFileInput = defaultUtilsFile;\n\n if (!options.yes && !customComponentsDir) {\n const compPrompt = await askQuestion(`Where would you like to install the components? (default: ${defaultComponentsDir}): `);\n componentsDirInput = compPrompt.trim() || defaultComponentsDir;\n\n const utilsPrompt = await askQuestion(`Where should we create the utilities file (cn helper)? (default: ${defaultUtilsFile}): `);\n utilsFileInput = utilsPrompt.trim() || defaultUtilsFile;\n }\n\n const absoluteComponentsDir = path.resolve(project.baseDir, componentsDirInput);\n const absoluteUtilsFile = path.resolve(project.baseDir, utilsFileInput);\n\n console.log(`\\x1b[33mInstalling components to:\\x1b[0m ${absoluteComponentsDir}`);\n console.log(`\\x1b[33mUsing cn helper from:\\x1b[0m ${absoluteUtilsFile}\\n`);\n\n ensureDir(absoluteComponentsDir);\n\n // 4. Ensure cn helper exists\n const didCreateCn = ensureCnUtil(absoluteUtilsFile);\n if (didCreateCn) {\n console.log(`\\x1b[32m✔ Created utilities file (cn helper) at:\\x1b[0m ${utilsFileInput}`);\n }\n\n // 5. Copy component files\n const npmDependencies = new Set<string>();\n npmDependencies.add('clsx');\n npmDependencies.add('tailwind-merge');\n npmDependencies.add('lucide-react');\n npmDependencies.add('framer-motion');\n\n for (const compName of componentsToInstall) {\n const registryItem = registry[compName];\n const targetPath = path.join(absoluteComponentsDir, registryItem.fileName);\n\n copyComponentFile(registryItem.content, targetPath, absoluteUtilsFile);\n console.log(`\\x1b[32m✔ Added component:\\x1b[0m ${compName} -> ${path.join(componentsDirInput, registryItem.fileName)}`);\n\n registryItem.dependencies.forEach((dep) => npmDependencies.add(dep));\n }\n\n // 6. Install collected npm dependencies\n const depsArray = Array.from(npmDependencies);\n let depsToInstall = [...depsArray];\n try {\n const packageJsonPath = path.join(project.baseDir, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n const existingDeps = { ...packageJson.dependencies, ...packageJson.devDependencies };\n depsToInstall = depsArray.filter((dep) => !existingDeps[dep]);\n }\n } catch {\n // Ignore and proceed\n }\n\n if (depsToInstall.length > 0) {\n console.log(`\\n\\x1b[33mInstalling external dependencies:\\x1b[0m ${depsToInstall.join(', ')}...`);\n let installCmd = 'npm install';\n if (project.packageManager === 'pnpm') installCmd = 'pnpm add';\n else if (project.packageManager === 'yarn') installCmd = 'yarn add';\n else if (project.packageManager === 'bun') installCmd = 'bun add';\n\n try {\n execSync(`${installCmd} ${depsToInstall.join(' ')}`, {\n stdio: 'inherit',\n cwd: project.baseDir,\n });\n console.log('\\x1b[32m✔ Dependencies installed successfully!\\x1b[0m');\n } catch {\n console.error('\\x1b[31mFailed to install dependencies automatically. Please run:\\x1b[0m');\n console.log(` ${installCmd} ${depsToInstall.join(' ')}`);\n }\n }\n\n console.log(`\\n\\x1b[32m\\x1b[1m🎉 Done! ${componentsToInstall.size} NexoreUI component(s) ready to use.\\x1b[0m\\n`);\n}\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\r\nexport type ProjectType = 'next' | 'vite' | 'cra' | 'unknown';\r\n\r\nexport interface ProjectInfo {\r\n packageManager: PackageManager;\r\n projectType: ProjectType;\r\n hasSrcDir: boolean;\r\n baseDir: string;\r\n}\r\n\r\nexport function detectProject(cwd: string = process.cwd()): ProjectInfo {\r\n let packageManager: PackageManager = 'npm';\r\n let projectType: ProjectType = 'unknown';\r\n let hasSrcDir = false;\r\n\r\n // Determine base project directory (walk up to find package.json)\r\n let currentDir = cwd;\r\n let baseDir = cwd;\r\n while (currentDir !== path.parse(currentDir).root) {\r\n if (fs.existsSync(path.join(currentDir, 'package.json'))) {\r\n baseDir = currentDir;\r\n break;\r\n }\r\n currentDir = path.dirname(currentDir);\r\n }\r\n\r\n // Detect Package Manager\r\n if (fs.existsSync(path.join(baseDir, 'pnpm-lock.yaml'))) {\r\n packageManager = 'pnpm';\r\n } else if (fs.existsSync(path.join(baseDir, 'yarn.lock'))) {\r\n packageManager = 'yarn';\r\n } else if (fs.existsSync(path.join(baseDir, 'bun.lockb')) || fs.existsSync(path.join(baseDir, 'bun.lock'))) {\r\n packageManager = 'bun';\r\n }\r\n\r\n // Detect Source Directory\r\n if (fs.existsSync(path.join(baseDir, 'src'))) {\r\n hasSrcDir = true;\r\n }\r\n\r\n // Detect Project Type (Framework)\r\n try {\r\n const packageJsonPath = path.join(baseDir, 'package.json');\r\n if (fs.existsSync(packageJsonPath)) {\r\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\r\n const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };\r\n\r\n if (deps['next']) {\r\n projectType = 'next';\r\n } else if (deps['vite'] || deps['@tailwindcss/vite']) {\r\n projectType = 'vite';\r\n } else if (deps['react-scripts']) {\r\n projectType = 'cra';\r\n }\r\n }\r\n } catch (err) {\r\n // Ignore and fallback to unknown\r\n }\r\n\r\n return {\r\n packageManager,\r\n projectType,\r\n hasSrcDir,\r\n baseDir,\r\n };\r\n}\r\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nconst CN_TEMPLATE = `import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n`;\r\n\r\n/**\r\n * Ensures a directory exists.\r\n */\r\nexport function ensureDir(dirPath: string) {\r\n if (!fs.existsSync(dirPath)) {\r\n fs.mkdirSync(dirPath, { recursive: true });\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes relative path for imports (using forward slashes, stripping extension).\r\n */\r\nexport function getRelativeImportPath(fromDir: string, toFile: string): string {\r\n let relativePath = path.relative(fromDir, toFile);\r\n \r\n // Replace Windows backslashes with forward slashes\r\n relativePath = relativePath.replace(/\\\\/g, '/');\r\n \r\n // Remove file extension\r\n relativePath = relativePath.replace(/\\.(ts|tsx|js|jsx)$/, '');\r\n \r\n // Ensure it starts with \"./\" or \"../\"\r\n if (!relativePath.startsWith('.')) {\r\n relativePath = './' + relativePath;\r\n }\r\n \r\n return relativePath;\r\n}\r\n\r\n/**\r\n * Checks if cn utility exists, writes it if it doesn't.\r\n */\r\nexport function ensureCnUtil(utilsPath: string): boolean {\r\n const dir = path.dirname(utilsPath);\r\n ensureDir(dir);\r\n \r\n if (!fs.existsSync(utilsPath)) {\r\n fs.writeFileSync(utilsPath, CN_TEMPLATE, 'utf8');\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Copies a component template file to target directory, rewriting its cn import.\r\n */\r\nexport function copyComponentFile(\r\n content: string,\r\n targetFilePath: string,\r\n utilsFilePath: string\r\n) {\r\n const targetDir = path.dirname(targetFilePath);\r\n ensureDir(targetDir);\r\n \r\n // Compute relative path from target component to utils\r\n const relativeImport = getRelativeImportPath(targetDir, utilsFilePath);\r\n \r\n // Rewrite the import path in the template code\r\n // Handles import { cn } from \"../utils/cn\" or import { cn } from '../utils/cn'\r\n const rewrittenContent = content.replace(\r\n /['\"]\\.\\.\\/utils\\/cn['\"]/g,\r\n `\"${relativeImport}\"`\r\n );\r\n \r\n fs.writeFileSync(targetFilePath, rewrittenContent, 'utf8');\r\n}\r\n","export const button = {\n name: \"button\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"button.tsx\",\n content: `'use client';\r\n\r\nimport * as React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\nimport { motion, HTMLMotionProps } from 'framer-motion';\r\nimport { Loader2 } from 'lucide-react';\r\n\r\nconst buttonVariants = cva(\r\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 active:scale-95\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground shadow-sm hover:bg-primary/90\",\r\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 border border-border/50\",\r\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm\",\r\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\r\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n // Premium variants\r\n premium: \"bg-gradient-to-r from-violet-600 via-pink-600 to-orange-500 text-white shadow-lg shadow-purple-500/20 hover:shadow-xl hover:shadow-purple-500/30\",\r\n neon: \"bg-background border-2 border-primary text-foreground shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))] hover:shadow-[0_0_calc(var(--glow-radius)*1.5)_rgba(var(--glow-color),calc(var(--glow-strength)*1.5))]\",\r\n glass: \"backdrop-blur-md bg-zinc-900/10 dark:bg-zinc-100/10 border border-zinc-900/20 dark:border-zinc-100/20 text-zinc-900 dark:text-zinc-50 hover:bg-zinc-900/20 dark:hover:bg-zinc-100/20 shadow-md\",\r\n shimmer: \"relative overflow-hidden bg-slate-900 text-white dark:bg-white dark:text-black\",\r\n // New requested variants\r\n gradient: \"bg-gradient-to-r from-indigo-600 via-purple-600 to-violet-600 dark:from-indigo-500 dark:via-purple-500 dark:to-violet-500 text-white shadow-lg shadow-indigo-500/20 hover:shadow-xl hover:shadow-indigo-500/30 hover:opacity-95\",\r\n glow: \"bg-primary text-primary-foreground shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))] hover:shadow-[0_0_calc(var(--glow-radius)*1.5)_rgba(var(--glow-color),calc(var(--glow-strength)*1.5))] border border-primary/20\",\r\n magnetic: \"bg-gradient-to-br from-violet-600 to-indigo-600 text-white shadow-md hover:shadow-lg\",\r\n loading: \"bg-primary/80 text-primary-foreground/80 pointer-events-none cursor-wait\",\r\n },\r\n size: {\r\n default: \"h-10 px-5 py-2\",\r\n sm: \"h-9 rounded-lg px-3 text-xs\",\r\n lg: \"h-11 rounded-xl px-8 text-base\",\r\n icon: \"h-10 w-10 rounded-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n);\r\n\r\n/**\r\n * Props for the Button component\r\n */\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n /** \r\n * Enable hover/tap spring motion animation\r\n * @default true \r\n */\r\n animate?: boolean;\r\n /** \r\n * Enable shimmer light animation effect\r\n * @default false\r\n */\r\n shimmer?: boolean;\r\n /** \r\n * Enable neon glow effect\r\n * @default false\r\n */\r\n glow?: boolean;\r\n /** \r\n * Display loading spinner icon and disable actions\r\n * @default false\r\n */\r\n isLoading?: boolean;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n animate = true,\r\n shimmer = false,\r\n glow = false,\r\n isLoading = false,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const isShimmer = variant === 'shimmer' || shimmer;\r\n const isMagnetic = variant === 'magnetic';\r\n const isGlow = variant === 'glow' || glow;\r\n\r\n // Track mouse coords for magnetic hover movement\r\n const [magneticPos, setMagneticPos] = React.useState({ x: 0, y: 0 });\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (!isMagnetic) return;\r\n const { clientX, clientY, currentTarget } = e;\r\n const { left, top, width, height } = currentTarget.getBoundingClientRect();\r\n const x = clientX - (left + width / 2);\r\n const y = clientY - (top + height / 2);\r\n // spring weight multiplier\r\n setMagneticPos({ x: x * 0.35, y: y * 0.35 });\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (!isMagnetic) return;\r\n setMagneticPos({ x: 0, y: 0 });\r\n };\r\n\r\n const buttonContent = (\r\n <>\r\n {isShimmer && (\r\n <motion.div\r\n className=\"absolute inset-0 w-[200%] bg-gradient-to-r from-transparent via-white/20 to-transparent\"\r\n initial={{ x: '-100%' }}\r\n animate={{ x: '100%' }}\r\n transition={{\r\n repeat: Infinity,\r\n repeatType: 'loop',\r\n duration: 2,\r\n ease: 'linear',\r\n }}\r\n style={{ transform: 'skewX(-20deg)' }}\r\n />\r\n )}\r\n <span className=\"relative z-10 flex items-center justify-center gap-2\">\r\n {isLoading && <Loader2 className=\"animate-spin h-4 w-4 shrink-0\" />}\r\n {children}\r\n </span>\r\n </>\r\n );\r\n\r\n const activeVariant = isLoading ? \"loading\" : variant;\r\n\r\n // Disable button if loading\r\n const disabledState = props.disabled || isLoading;\r\n\r\n // Destructure custom props to avoid passing invalid props down to HTML element\r\n const { ...htmlProps } = props;\r\n\r\n // Setup base styles\r\n const resolvedClassName = cn(\r\n buttonVariants({ variant: activeVariant, size, className }),\r\n isShimmer && \"relative overflow-hidden\",\r\n isGlow && \"shadow-[0_0_var(--glow-radius)_rgba(var(--glow-color),var(--glow-strength))]\"\r\n );\r\n\r\n if (!animate) {\r\n return (\r\n <button\r\n ref={ref}\r\n disabled={disabledState}\r\n className={resolvedClassName}\r\n {...(htmlProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {buttonContent}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <motion.button\r\n ref={ref}\r\n disabled={disabledState}\r\n className={resolvedClassName}\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n animate={isMagnetic ? { x: magneticPos.x, y: magneticPos.y } : undefined}\r\n whileHover={{\r\n scale: isMagnetic ? 1.02 : 1.03,\r\n y: isMagnetic ? 0 : -1.5,\r\n shadow: isGlow ? \"0 0 calc(var(--glow-radius)*1.5) rgba(var(--glow-color), calc(var(--glow-strength)*1.5))\" : undefined,\r\n }}\r\n whileTap={{ scale: 0.97 }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 350,\r\n damping: 20,\r\n }}\r\n {...(htmlProps as any)}\r\n >\r\n {buttonContent}\r\n </motion.button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n\r\nexport { Button, buttonVariants };\r\n\r\n// ----------------------------------------------------\r\n// Deprecated button wrappers for backward compatibility\r\n// ----------------------------------------------------\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"neon\">\\` instead.\r\n */\r\nexport const NeonButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"neon\" glow={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nNeonButton.displayName = \"NeonButton\";\r\n\r\n/**\r\n * @deprecated Use custom styles or class variance utilities on the unified \\`<Button>\\` instead.\r\n */\r\nexport const ThreeDButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"shadow-[0_5px_0_hsl(var(--primary-dark,240_5.9%_30%))] hover:shadow-[0_2px_0_hsl(var(--primary-dark,240_5.9%_30%))] active:translate-y-[3px] active:shadow-[0_0px_0_transparent] transition-all\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n )\r\n);\r\nThreeDButton.displayName = \"ThreeDButton\";\r\n\r\n/**\r\n * @deprecated Use custom ripple animations on the unified \\`<Button>\\` instead.\r\n */\r\nexport const RippleButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"relative overflow-hidden group active:scale-95 transition-transform\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute inset-0 bg-white/20 scale-0 rounded-full group-active:scale-[2] transition-transform duration-500 origin-center\"></span>\r\n <span className=\"relative z-10\">{children}</span>\r\n </Button>\r\n )\r\n);\r\nRippleButton.displayName = \"RippleButton\";\r\n\r\n/**\r\n * @deprecated Use standard utility classes on the unified \\`<Button>\\` instead.\r\n */\r\nexport const CyberpunkButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n className={cn(\r\n \"bg-yellow-400 text-black font-extrabold uppercase tracking-widest border-2 border-black hover:bg-black hover:text-yellow-400 hover:border-yellow-400 transition-colors shadow-[4px_4px_0_0_#000] rounded-none hover:shadow-[4px_4px_0_0_#fff]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Button>\r\n )\r\n);\r\nCyberpunkButton.displayName = \"CyberpunkButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"magnetic\">\\` instead.\r\n */\r\nexport const MagneticButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"magnetic\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nMagneticButton.displayName = \"MagneticButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"shimmer\">\\` instead.\r\n */\r\nexport const ShimmerButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"shimmer\" shimmer={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nShimmerButton.displayName = \"ShimmerButton\";\r\n\r\n/**\r\n * @deprecated Use a custom hover effect on the unified \\`<Button>\\` instead.\r\n */\r\nexport const BorderBeamButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, className, ...props }, ref) => (\r\n <Button\r\n ref={ref}\r\n variant=\"outline\"\r\n className={cn(\r\n \"relative overflow-hidden border border-border group\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"absolute inset-0 bg-gradient-to-r from-primary to-transparent opacity-0 group-hover:opacity-20 transition-opacity\"></div>\r\n <div className=\"absolute top-0 left-0 w-full h-[2px] bg-primary scale-x-0 group-hover:scale-x-100 transition-transform origin-left\"></div>\r\n <span className=\"relative z-10\">{children}</span>\r\n </Button>\r\n )\r\n);\r\nBorderBeamButton.displayName = \"BorderBeamButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button isLoading={...}>\\` instead.\r\n */\r\nexport const LoadingButton = React.forwardRef<HTMLButtonElement, ButtonProps & { isLoading?: boolean }>(\r\n ({ children, isLoading = true, ...props }, ref) => (\r\n <Button ref={ref} isLoading={isLoading} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nLoadingButton.displayName = \"LoadingButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"destructive\" glow>\\` instead.\r\n */\r\nexport const DestructiveGlowButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"destructive\" glow={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nDestructiveGlowButton.displayName = \"DestructiveGlowButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"outline\">\\` instead.\r\n */\r\nexport const GhostOutlineButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"outline\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGhostOutlineButton.displayName = \"GhostOutlineButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"glow\">\\` instead.\r\n */\r\nexport const GlowButton = React.forwardRef<HTMLButtonElement, ButtonProps & { glowColor?: string }>(\r\n ({ children, glowColor = \"rgba(139, 92, 246, 0.15)\", className, ...props }, ref) => (\r\n <div className=\"relative group inline-block\">\r\n <div\r\n className=\"absolute -inset-0.5 bg-gradient-to-r from-primary to-purple-600 rounded-lg blur opacity-75 group-hover:opacity-100 transition duration-1000 group-hover:duration-200\"\r\n style={{ backgroundColor: glowColor }}\r\n />\r\n <Button ref={ref} className={cn(\"relative bg-background\", className)} {...props}>\r\n {children}\r\n </Button>\r\n </div>\r\n )\r\n);\r\nGlowButton.displayName = \"GlowButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button shimmer>\\` instead.\r\n */\r\nexport const ShinyButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} shimmer={true} {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nShinyButton.displayName = \"ShinyButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"gradient\">\\` instead.\r\n */\r\nexport const GradientButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"gradient\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGradientButton.displayName = \"GradientButton\";\r\n\r\n/**\r\n * @deprecated Use the unified \\`<Button variant=\"glass\">\\` instead.\r\n */\r\nexport const GlassButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ children, ...props }, ref) => (\r\n <Button ref={ref} variant=\"glass\" {...props}>\r\n {children}\r\n </Button>\r\n )\r\n);\r\nGlassButton.displayName = \"GlassButton\";\r\n\r\n`\n};\n","export const modal = {\n name: \"modal\",\n dependencies: [\n \"@radix-ui/react-dialog\",\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"lucide-react\",\n \"framer-motion\"\n],\n componentsDependencies: [\n \"button\"\n],\n fileName: \"modal.tsx\",\n content: `\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X, AlertTriangle, CheckCircle, Star } from \"lucide-react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"../utils/cn\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst dialogContentVariants = cva(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background/95 backdrop-blur-md p-6 shadow-2xl duration-200 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]:scale-95 data-[state=open]:scale-100 data-[state=closed]:translate-y-[-48%] data-[state=open]:translate-y-[-50%] rounded-2xl\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-border/50\",\r\n glass: \"bg-white/10 backdrop-blur-xl border-white/20 shadow-2xl\",\r\n destructive: \"border-destructive/20\",\r\n success: \"border-green-500/20\",\r\n fullscreen: \"max-w-full h-screen rounded-none\",\r\n drawer: \"sm:max-w-full sm:h-[50vh] sm:rounded-b-none sm:rounded-t-[20px] fixed bottom-0 top-auto translate-y-0 data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n },\r\n size: {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-md\",\r\n lg: \"max-w-lg\",\r\n xl: \"max-w-xl\",\r\n \"2xl\": \"max-w-2xl\",\r\n full: \"max-w-[95vw] md:max-w-[90vw]\",\r\n },\r\n scrollable: {\r\n true: \"max-h-[80vh] overflow-y-auto\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"lg\",\r\n scrollable: false,\r\n },\r\n }\r\n)\r\n\r\nexport interface DialogContentProps\r\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\r\n VariantProps<typeof dialogContentVariants> {}\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n DialogContentProps\r\n>(({ className, variant, size, scrollable, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(dialogContentVariants({ variant, size, scrollable, className }))}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-full p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-xl font-semibold leading-none tracking-tight bg-gradient-to-br from-foreground to-foreground/70 bg-clip-text text-transparent\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n`\n};\n","export const card = {\n name: \"card\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"card.tsx\",\n content: `'use client';\r\n\r\nimport * as React from \"react\"\r\nimport { cn } from \"../utils/cn\"\r\nimport { motion, useMotionValue, useSpring, useTransform, HTMLMotionProps } from \"framer-motion\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Heart, Share2, MapPin, Star } from \"lucide-react\"\r\n\r\nconst cardVariants = cva(\r\n \"rounded-2xl text-card-foreground transition-all duration-300 overflow-hidden\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-card text-card-foreground shadow-sm hover:shadow-md\",\r\n glass: \"backdrop-blur-md bg-white/10 dark:bg-black/20 border border-white/20 dark:border-white/10 shadow-lg\",\r\n gradient: \"bg-gradient-to-br from-violet-500/10 via-pink-500/10 to-orange-500/10 border border-purple-500/20 shadow-lg shadow-purple-500/5\",\r\n glow: \"bg-card border-2 border-primary/20 shadow-[0_0_15px_rgba(var(--primary-rgb),0.1)] hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.2)]\",\r\n // New variants\r\n bento: \"border border-border/60 bg-gradient-to-br from-card to-muted/20 text-card-foreground shadow-md hover:shadow-lg hover:border-primary/30 relative\",\r\n spotlight: \"border bg-card text-card-foreground relative hover:border-primary/20\",\r\n flip: \"bg-transparent border-0 shadow-none overflow-visible relative\",\r\n tilt: \"border bg-card text-card-foreground shadow-md\",\r\n },\r\n hover: {\r\n none: \"\",\r\n lift: \"hover:-translate-y-1.5 hover:shadow-lg\",\r\n glow: \"hover:border-primary/50 hover:shadow-[0_0_25px_rgba(var(--primary-rgb),0.25)]\",\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n hover: \"lift\",\r\n }\r\n }\r\n)\r\n\r\n/**\r\n * Props for the Card component\r\n */\r\nexport interface CardProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\r\n VariantProps<typeof cardVariants> {\r\n /**\r\n * Whether to enable hover spring animations\r\n * @default true\r\n */\r\n animate?: boolean;\r\n /**\r\n * Back content displayed when using the \\`flip\\` variant on hover\r\n */\r\n backContent?: React.ReactNode;\r\n /**\r\n * Custom radial spotlight background color (e.g., rgba(168, 85, 247, 0.15))\r\n * @default \"rgba(139, 92, 246, 0.15)\"\r\n */\r\n spotlightColor?: string;\r\n}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n hover,\r\n animate = true,\r\n backContent,\r\n spotlightColor = \"rgba(139, 92, 246, 0.15)\",\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n // Feature toggles based on variants\r\n const isSpotlight = variant === \"spotlight\";\r\n const isFlip = variant === \"flip\";\r\n const isTilt = variant === \"tilt\";\r\n\r\n // Spotlight mouse tracking state\r\n const [mousePos, setMousePos] = React.useState({ x: 0, y: 0 });\r\n const handleMouseMoveSpotlight = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!isSpotlight) return;\r\n const { currentTarget, clientX, clientY } = e;\r\n const { left, top } = currentTarget.getBoundingClientRect();\r\n setMousePos({ x: clientX - left, y: clientY - top });\r\n };\r\n\r\n // Tilt mouse tracking state\r\n const [tiltPos, setTiltPos] = React.useState({ rotateX: 0, rotateY: 0 });\r\n const handleMouseMoveTilt = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!isTilt) return;\r\n const { currentTarget, clientX, clientY } = e;\r\n const { left, top, width, height } = currentTarget.getBoundingClientRect();\r\n const x = clientX - left;\r\n const y = clientY - top;\r\n const maxTilt = 12; // degrees max rotation\r\n const rotateX = ((y - height / 2) / (height / 2)) * -maxTilt;\r\n const rotateY = ((x - width / 2) / (width / 2)) * maxTilt;\r\n setTiltPos({ rotateX, rotateY });\r\n };\r\n\r\n const handleMouseLeaveTilt = () => {\r\n if (!isTilt) return;\r\n setTiltPos({ rotateX: 0, rotateY: 0 });\r\n };\r\n\r\n // Flip card hover state\r\n const [isFlipped, setIsFlipped] = React.useState(false);\r\n\r\n // Destructure custom props to avoid DOM validation warnings\r\n const { ...htmlProps } = props;\r\n\r\n // Flip Variant Render\r\n if (isFlip) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ variant, hover, className }), \"perspective-1000 w-full h-full\")}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n {...(htmlProps as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n <motion.div\r\n className=\"relative w-full h-full transition-all duration-500 preserve-3d\"\r\n animate={{ rotateY: isFlipped ? 180 : 0 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 22 }}\r\n >\r\n {/* Front Face */}\r\n <div className=\"absolute inset-0 backface-hidden border bg-card text-card-foreground rounded-2xl shadow-sm flex flex-col justify-between overflow-hidden\">\r\n {children}\r\n </div>\r\n\r\n {/* Back Face */}\r\n <div className=\"absolute inset-0 backface-hidden rotate-y-180 border bg-gradient-to-br from-primary/10 to-primary/5 text-card-foreground rounded-2xl shadow-sm flex flex-col p-6 items-center justify-center text-center overflow-hidden\">\r\n {backContent || (\r\n <div className=\"text-sm font-medium text-muted-foreground\">\r\n Flip side content placeholder\r\n </div>\r\n )}\r\n </div>\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n // Spotlight Variant Render Extra Element\r\n const spotlightEffect = isSpotlight && (\r\n <div\r\n className=\"pointer-events-none absolute -inset-px rounded-2xl opacity-0 hover:opacity-100 group-hover:opacity-100 transition-opacity duration-300\"\r\n style={{\r\n background: \\`radial-gradient(400px circle at \\${mousePos.x}px \\${mousePos.y}px, \\${spotlightColor}, transparent 80%)\\`,\r\n }}\r\n />\r\n );\r\n\r\n // Build the resolved element attributes\r\n const cardClass = cn(cardVariants({ variant, hover: isFlip || isTilt ? \"none\" : hover, className }), isSpotlight && \"group\");\r\n\r\n if (animate || isTilt) {\r\n return (\r\n <motion.div\r\n ref={ref}\r\n className={cardClass}\r\n onMouseMove={(e) => {\r\n if (isSpotlight) handleMouseMoveSpotlight(e);\r\n if (isTilt) handleMouseMoveTilt(e);\r\n }}\r\n onMouseLeave={() => {\r\n if (isTilt) handleMouseLeaveTilt();\r\n }}\r\n animate={\r\n isTilt\r\n ? { rotateX: tiltPos.rotateX, rotateY: tiltPos.rotateY }\r\n : undefined\r\n }\r\n whileHover={isTilt ? undefined : { scale: 1.015 }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 20 }}\r\n {...(htmlProps as any)}\r\n >\r\n {spotlightEffect}\r\n {children}\r\n </motion.div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cardClass}\r\n {...(htmlProps as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n)\r\nCard.displayName = \"Card\"\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n))\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\"font-semibold leading-none tracking-tight text-xl bg-gradient-to-br from-foreground to-foreground/75 bg-clip-text text-transparent\", className)}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed mt-1\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0 leading-relaxed text-sm text-foreground/90\", className)} {...props} />\r\n))\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0 border-t border-border/10 mt-auto\", className)}\r\n {...props}\r\n />\r\n))\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\n\r\nexport const GlassCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"glass\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGlassCard.displayName = \"GlassCard\";\r\n\r\nexport const GlowCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"glow\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGlowCard.displayName = \"GlowCard\";\r\n\r\nexport const GradientCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"gradient\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nGradientCard.displayName = \"GradientCard\";\r\n\r\nexport const HoverCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} hover=\"lift\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nHoverCard.displayName = \"HoverCard\";\r\n\r\nexport const SpotlightCard = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ children, ...props }, ref) => (\r\n <Card ref={ref} variant=\"spotlight\" {...props}>\r\n {children}\r\n </Card>\r\n )\r\n);\r\nSpotlightCard.displayName = \"SpotlightCard\";\r\n\r\n\r\n\r\n\r\n`\n};\n","export const alert = {\n name: \"alert\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"alert.tsx\",\n content: `\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"../utils/cn\"\r\nimport { motion, AnimatePresence } from \"framer-motion\"\r\nimport { AlertCircle, Info, CheckCircle2, XCircle, Cookie, BellRing, WifiOff, AlertTriangle, X } from \"lucide-react\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-2xl border p-4 [&>svg~*]:pl-7 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 transition-all duration-300 shadow-sm\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background/50 border-border text-foreground\",\r\n destructive: \"border-red-500/20 bg-red-500/10 text-red-600 dark:text-red-400 [&>svg]:text-red-600 dark:[&>svg]:text-red-400\",\r\n success: \"border-emerald-500/20 bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400\",\r\n warning: \"border-amber-500/20 bg-amber-500/10 text-amber-600 dark:text-amber-400 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400\",\r\n info: \"border-blue-500/20 bg-blue-500/10 text-blue-600 dark:text-blue-400 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400\",\r\n glass: \"backdrop-blur-md bg-white/5 dark:bg-black/20 border-white/10 dark:border-white/5 text-foreground\",\r\n floating: \"fixed bottom-5 right-5 z-50 max-w-sm bg-card/95 backdrop-blur-md border border-border/80 text-foreground shadow-[0_10px_30px_rgba(0,0,0,0.25)] animate-slide-up\",\r\n minimal: \"border-0 bg-muted/40 p-3 text-sm rounded-xl text-foreground hover:bg-muted/60 shadow-none [&>svg]:top-3.5\",\r\n neon: \"border-purple-500/50 bg-purple-500/10 text-purple-200 shadow-[0_0_15px_rgba(168,85,247,0.3)] [&>svg]:text-purple-400\",\r\n cyberpunk: \"border-l-4 border-yellow-400 bg-black text-yellow-400 shadow-[4px_4px_0_0_rgba(250,204,21,1)] rounded-none font-mono uppercase [&>svg]:text-yellow-400\",\r\n gradient: \"bg-gradient-to-r from-blue-500/10 to-indigo-500/10 border-blue-500/20 text-foreground [&>svg]:text-blue-500\",\r\n banner: \"w-full bg-indigo-600 text-white border-0 shadow-md rounded-none sm:rounded-xl [&>svg]:text-white\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nexport interface AlertProps\r\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\r\n VariantProps<typeof alertVariants> {\r\n /**\n * Описание для animate\n * @default undefined\n */\n animate?: boolean;\r\n /**\n * Описание для title\n * @default undefined\n */\n title?: React.ReactNode;\r\n /**\n * Описание для description\n * @default undefined\n */\n description?: React.ReactNode;\r\n /**\n * Описание для icon\n * @default undefined\n */\n icon?: React.ReactNode;\r\n /**\n * Описание для dismissible\n * @default undefined\n */\n dismissible?: boolean;\r\n /**\n * Описание для onDismiss\n * @default undefined\n */\n onDismiss?: () => void;\r\n /**\n * Описание для actionText\n * @default undefined\n */\n actionText?: string;\r\n /**\n * Описание для onAction\n * @default undefined\n */\n onAction?: () => void;\r\n}\r\n\r\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n animate = true,\r\n title,\r\n description,\r\n icon,\r\n dismissible = false,\r\n onDismiss,\r\n actionText,\r\n onAction,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [isOpen, setIsOpen] = React.useState(true);\r\n\r\n if (!isOpen) return null;\r\n\r\n const isMinimal = variant === \"minimal\";\r\n const isBanner = variant === \"banner\";\r\n\r\n const defaultIcon = icon || (\r\n variant === \"destructive\" ? <XCircle className=\"h-4 w-4\" /> :\r\n variant === \"success\" ? <CheckCircle2 className=\"h-4 w-4\" /> :\r\n variant === \"warning\" ? <AlertTriangle className=\"h-4 w-4\" /> :\r\n variant === \"info\" ? <Info className=\"h-4 w-4\" /> :\r\n variant === \"default\" ? <AlertCircle className=\"h-4 w-4\" /> :\r\n null\r\n );\r\n\r\n const content = (\r\n <>\r\n {defaultIcon && <div className={cn(\"absolute left-4\", isMinimal ? \"top-3\" : \"top-4\")}>{defaultIcon}</div>}\r\n <div className={cn(defaultIcon ? \"pl-7\" : \"\", \"pr-8\")}>\r\n {title && <AlertTitle>{title}</AlertTitle>}\r\n {description && <AlertDescription>{description}</AlertDescription>}\r\n {!title && !description && children}\r\n </div>\r\n {isBanner && actionText && (\r\n <button\r\n onClick={onAction}\r\n className=\"absolute right-12 top-1/2 -translate-y-1/2 text-xs font-bold bg-white text-indigo-600 px-3 py-1.5 rounded-md hover:bg-indigo-50 transition-colors\"\r\n >\r\n {actionText}\r\n </button>\r\n )}\r\n {dismissible && (\r\n <button\r\n onClick={() => {\r\n setIsOpen(false);\r\n onDismiss?.();\r\n }}\r\n className=\"absolute right-4 top-4 opacity-50 hover:opacity-100 transition-opacity p-0.5 rounded-md hover:bg-muted\"\r\n aria-label=\"Dismiss\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n </>\r\n );\r\n\r\n const alertClass = cn(alertVariants({ variant }), className);\r\n\r\n if (animate) {\r\n return (\r\n <motion.div\r\n ref={ref}\r\n role=\"alert\"\r\n initial={{ opacity: 0, y: variant === \"floating\" ? 30 : 15, scale: variant === \"floating\" ? 0.95 : 1 }}\r\n animate={{ opacity: 1, y: 0, scale: 1 }}\r\n exit={{ opacity: 0, y: variant === \"floating\" ? 20 : 10, scale: 0.95 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 24 }}\r\n className={alertClass}\r\n {...(props as any)}\r\n >\r\n {content}\r\n </motion.div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={alertClass}\r\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\r\n >\r\n {content}\r\n </div>\r\n );\r\n }\r\n)\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"mb-1 font-semibold leading-none tracking-tight text-base text-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground leading-relaxed mt-1 opacity-90 [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\n// ----------------------------------------------------\r\n// Merged subcomponents and wrappers\r\n// ----------------------------------------------------\r\n\r\n// 1. ToastAlertWrapper\r\nexport const ToastAlertWrapper = ({ children, className, title, description, time }: any) => (\r\n <div className={cn(\"max-w-sm w-full bg-background border border-border/80 shadow-xl rounded-2xl p-4 flex gap-4 items-start relative\", className)}>\r\n <CheckCircle2 className=\"h-5 w-5 text-green-500 shrink-0 mt-0.5\" />\r\n <div className=\"flex-1\">\r\n {title && <h4 className=\"font-semibold text-sm\">{title}</h4>}\r\n {description && <p className=\"text-sm text-muted-foreground mt-1\">{description}</p>}\r\n {children}\r\n </div>\r\n {time && <span className=\"text-xs text-muted-foreground/60\">{time}</span>}\r\n </div>\r\n)\r\n\r\n// 2. CookieAlert\r\nexport const CookieAlert = ({ onAccept, onDecline }: { onAccept?: () => void; onDecline?: () => void }) => {\r\n const [visible, setVisible] = React.useState(true)\r\n if (!visible) return null\r\n return (\r\n <div className=\"max-w-md bg-card border rounded-2xl p-6 shadow-2xl space-y-4\">\r\n <div className=\"flex items-center gap-3\">\r\n <Cookie className=\"h-6 w-6 text-orange-500 animate-bounce\" />\r\n <h4 className=\"font-bold text-lg\">Cookie Preferences</h4>\r\n </div>\r\n <p className=\"text-sm text-muted-foreground\">\r\n We use cookies to improve your experience. By continuing to visit this site you agree to our use of cookies.\r\n </p>\r\n <div className=\"flex gap-3 pt-2\">\r\n <button \r\n onClick={() => { setVisible(false); onAccept?.(); }}\r\n className=\"flex-1 px-4 py-2 bg-primary text-primary-foreground hover:bg-primary/95 transition-colors rounded-xl text-sm font-semibold shadow-md shadow-primary/10\"\r\n >\r\n Accept All\r\n </button>\r\n <button \r\n onClick={() => { setVisible(false); onDecline?.(); }}\r\n className=\"flex-1 px-4 py-2 border rounded-xl text-sm font-semibold hover:bg-muted transition-colors\"\r\n >\r\n Decline\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n// 3. OfflineBanner\r\nexport const OfflineBanner = () => (\r\n <div className=\"w-full bg-red-600 text-white p-3.5 flex justify-center items-center gap-2 text-sm font-semibold shadow-md sm:rounded-xl\">\r\n <WifiOff className=\"w-4 h-4 animate-pulse\" /> You are currently offline. Some features may be unavailable.\r\n </div>\r\n)\r\n\r\n// 4. RateLimitAlert\r\nexport const RateLimitAlert = () => (\r\n <div className=\"border border-orange-500/30 bg-orange-500/10 p-5 rounded-2xl flex gap-3 items-start max-w-md shadow-sm\">\r\n <AlertTriangle className=\"w-5 h-5 text-orange-500 shrink-0 mt-0.5 animate-pulse\" />\r\n <div className=\"flex-1\">\r\n <h4 className=\"font-bold text-orange-600 dark:text-orange-400\">Rate Limit Exceeded</h4>\r\n <p className=\"text-sm text-orange-600/80 dark:text-orange-400/80 mt-1 mb-4\">\r\n You have made too many requests. Please wait 45 seconds before trying again.\r\n </p>\r\n <div className=\"w-full h-1.5 bg-orange-500/20 rounded-full overflow-hidden\">\r\n <motion.div animate={{ width: [\"100%\", \"0%\"] }} transition={{ duration: 45, ease: \"linear\" }} className=\"h-full bg-orange-500\" />\r\n </div>\r\n </div>\r\n </div>\r\n)\r\n\r\n// Re-export original/merged components\r\nexport { Alert, AlertTitle, AlertDescription }\r\n/**\r\n * @deprecated Use the unified \\`<Alert variant=\"cyberpunk\">\\` instead.\r\n */\r\nexport const CyberAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"cyberpunk\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"success\">\\` or \\`<Alert variant=\"info\">\\` instead.\r\n */\r\nexport const SoftAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant={variant === \"success\" ? \"success\" : \"info\"} title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"minimal\">\\` instead.\r\n */\r\nexport const MinimalAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"minimal\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert className=\"border-l-4 ...\">\\` instead.\r\n */\r\nexport const LeftBorderAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant={variant === \"warning\" ? \"warning\" : \"default\"} className=\"border-l-4 border-l-primary\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use custom styled layouts or standard elements instead.\r\n */\r\nexport const IconTopAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <div className=\"flex flex-col items-center text-center p-6 bg-card border rounded-2xl\" {...props}>\r\n <div className=\"h-12 w-12 rounded-full bg-destructive/10 text-destructive flex items-center justify-center mb-4\">\r\n <AlertCircle className=\"h-6 w-6\" />\r\n </div>\r\n <h4 className=\"font-bold text-lg mb-2\">{title}</h4>\r\n <p className=\"text-sm text-muted-foreground\">{description}</p>\r\n </div>\r\n)\r\n\r\n/**\r\n * @deprecated Use standard tailwind background colors on unified \\`<Alert>\\` instead.\r\n */\r\nexport const SolidAlert = ({ title, description, variant = \"default\", ...props }: any) => {\r\n const bgClasses: Record<string, string> = {\r\n error: \"bg-red-600 text-white border-0\",\r\n success: \"bg-emerald-600 text-white border-0\",\r\n warning: \"bg-amber-500 text-black border-0\",\r\n default: \"bg-primary text-primary-foreground border-0\",\r\n }\r\n const bgClass = bgClasses[variant] || bgClasses.default\r\n return (\r\n <div className={cn(\"p-4 rounded-xl shadow-lg flex gap-3 items-start\", bgClass)} {...props}>\r\n <Info className=\"h-5 w-5 shrink-0 mt-0.5\" />\r\n <div>\r\n <h4 className=\"font-bold\">{title}</h4>\r\n <p className=\"text-sm opacity-90 mt-1\">{description}</p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"banner\">\\` instead.\r\n */\r\nexport const BannerAlert = ({ message, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"banner\" title={message} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"neon\">\\` instead.\r\n */\r\nexport const NeonAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"neon\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert variant=\"glass\">\\` instead.\r\n */\r\nexport const GlassAlert = ({ title, description, variant = \"default\", ...props }: any) => (\r\n <Alert variant=\"glass\" title={title} description={description} {...props} />\r\n)\r\n\r\n/**\r\n * @deprecated Use \\`<Alert dismissible={true}>\\` instead.\r\n */\r\nexport const DismissibleAlert = ({ variant = \"default\", title, description, ...props }: any) => (\r\n <Alert variant={variant} title={title || \"Attention\"} description={description || \"Action required\"} dismissible={true} {...props} />\r\n)\r\n\r\n`\n};\n","export const badge = {\n name: \"badge\",\n dependencies: [\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"badge.tsx\",\n content: `'use client';\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../utils/cn\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border font-semibold transition-all focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-default\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground border-border hover:bg-accent\",\n gradient: \"border-transparent bg-gradient-to-r from-violet-600 to-pink-600 dark:from-violet-500 dark:to-pink-500 text-white shadow-sm\",\n neon: \"border-primary/50 bg-primary/10 text-primary shadow-[0_0_10px_rgba(var(--primary-rgb),0.3)]\",\n success: \"border-transparent bg-emerald-500/20 text-emerald-600 dark:text-emerald-400\",\n warning: \"border-transparent bg-amber-500/20 text-amber-600 dark:text-amber-400\",\n info: \"border-transparent bg-blue-500/20 text-blue-600 dark:text-blue-400\",\n },\n size: {\n default: \"px-2.5 py-0.5 text-xs\",\n sm: \"px-1.5 py-0.5 text-[10px]\",\n lg: \"px-3 py-1 text-sm\",\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Описание для pulse\n * @default undefined\n */\n pulse?: boolean;\n /**\n * Описание для dot\n * @default undefined\n */\n dot?: boolean;\n /**\n * Описание для text\n * @default undefined\n */\n text?: string;\n}\n\nfunction Badge({ className, variant, size, pulse = false, dot = false, children, text, ...props }: BadgeProps) {\n const showDot = dot || pulse;\n \n return (\n <div className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {showDot && (\n <span className=\"relative flex h-2 w-2 mr-1\">\n {pulse && (\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-current opacity-75\"></span>\n )}\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-current\"></span>\n </span>\n )}\n {children || text}\n </div>\n )\n}\n\nexport { Badge, badgeVariants }\n`\n};\n","export const morphingGeometry = {\n name: \"morphing-geometry\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n ],\n fileName: \"morphing-geometry.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { motion, HTMLMotionProps } from 'framer-motion';\nimport { Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport type MorphingShape = 'pill' | 'circle' | 'square' | 'squircle' | 'custom';\nexport type MorphingVariant = 'gradient' | 'aurora' | 'neon' | 'glass' | 'outline' | 'subtle';\nexport type MorphingColor = 'violet' | 'cyan' | 'emerald' | 'rose' | 'amber' | 'rainbow' | 'mono';\nexport type MorphingSize = 'sm' | 'md' | 'lg' | 'xl' | 'custom';\n\nexport interface MorphingGeometryProps extends Omit<HTMLMotionProps<'div'>, 'children'> {\n shape?: MorphingShape;\n radius?: number | string;\n variant?: MorphingVariant;\n color?: MorphingColor;\n size?: MorphingSize;\n dimension?: number;\n spin?: boolean;\n spinDuration?: number;\n interactive?: boolean;\n glow?: boolean;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport const MorphingGeometry = React.forwardRef<HTMLDivElement, MorphingGeometryProps>(\n (\n {\n shape = 'squircle',\n radius,\n variant = 'gradient',\n color = 'violet',\n size = 'md',\n dimension,\n spin = false,\n spinDuration = 6,\n interactive = false,\n glow = true,\n icon,\n children,\n className,\n style,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <motion.div\n ref={ref}\n animate={spin ? { rotate: [0, 90, 180, 270, 360] } : { rotate: 0 }}\n transition={{ rotate: { duration: spinDuration, repeat: Infinity, ease: 'linear' }, borderRadius: { duration: 0.4 } }}\n className={cn('relative flex items-center justify-center select-none overflow-hidden transition-all duration-300 w-24 h-24', className)}\n style={{ borderRadius: radius || '24%', ...style }}\n {...props}\n >\n <div className=\"relative z-10 flex flex-col items-center justify-center p-2 text-center\">\n {icon || children || <Sparkles className=\"w-6 h-6 text-white\" />}\n </div>\n </motion.div>\n );\n }\n);\n\nMorphingGeometry.displayName = 'MorphingGeometry';\nexport default MorphingGeometry;\n`\n};\n","export const auroraBorderFX = {\n name: \"aurora-border-fx\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n ],\n fileName: \"aurora-border-fx.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport { Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\nexport type AuroraFXColor = 'violet' | 'cyan' | 'emerald' | 'rose' | 'amber' | string;\nexport type AuroraFXGlow = 'none' | 'subtle' | 'medium' | 'strong';\nexport type AuroraFXRadius = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface AuroraColorOption {\n name: string;\n hex: string;\n}\n\nexport const defaultAuroraColors: AuroraColorOption[] = [\n { name: 'Violet', hex: '#8b5cf6' },\n { name: 'Cyan', hex: '#06b6d4' },\n { name: 'Emerald', hex: '#10b981' },\n { name: 'Rose', hex: '#f43f5e' },\n { name: 'Amber', hex: '#f59e0b' },\n];\n\nconst colorPresetMap: Record<string, string> = {\n violet: '#8b5cf6',\n cyan: '#06b6d4',\n emerald: '#10b981',\n rose: '#f43f5e',\n amber: '#f59e0b',\n};\n\nconst radiusMap: Record<AuroraFXRadius, { outer: string; inner: string }> = {\n sm: { outer: 'rounded-lg', inner: 'rounded-[calc(0.5rem-1px)]' },\n md: { outer: 'rounded-xl', inner: 'rounded-[calc(0.75rem-1px)]' },\n lg: { outer: 'rounded-2xl', inner: 'rounded-[calc(1rem-1px)]' },\n xl: { outer: 'rounded-3xl', inner: 'rounded-[calc(1.5rem-1.5px)]' },\n full: { outer: 'rounded-full', inner: 'rounded-full' },\n};\n\nconst glowOpacityMap: Record<AuroraFXGlow, number> = {\n none: 0,\n subtle: 0.25,\n medium: 0.45,\n strong: 0.75,\n};\n\nexport interface AuroraBorderFXProps extends React.HTMLAttributes<HTMLDivElement> {\n color?: AuroraFXColor;\n glow?: AuroraFXGlow;\n radius?: AuroraFXRadius;\n badgeText?: string;\n badgeIcon?: React.ReactNode;\n title?: string;\n description?: string;\n showColorPicker?: boolean;\n colors?: AuroraColorOption[];\n activeColor?: string;\n onColorChange?: (colorHex: string) => void;\n previewSlot?: React.ReactNode;\n footerSlot?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport const AuroraBorderFX = React.forwardRef<HTMLDivElement, AuroraBorderFXProps>(\n (\n {\n color = 'violet',\n glow = 'medium',\n radius = 'lg',\n badgeText = 'Aurora Border FX',\n badgeIcon = <Sparkles className=\"w-3 h-3\" />,\n title = 'Reactive Aurora Borders',\n description = 'Smooth multi-color conic gradients that dynamically track and react with zero JavaScript canvas lag.',\n showColorPicker = true,\n colors = defaultAuroraColors,\n activeColor: controlledColor,\n onColorChange,\n previewSlot,\n footerSlot,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const resolvedInitialColor = colorPresetMap[color] || color || '#8b5cf6';\n const [internalColor, setInternalColor] = React.useState<string>(resolvedInitialColor);\n\n React.useEffect(() => {\n if (colorPresetMap[color]) {\n setInternalColor(colorPresetMap[color]);\n } else if (color) {\n setInternalColor(color);\n }\n }, [color]);\n\n const currentColor = controlledColor !== undefined ? controlledColor : internalColor;\n const radiusConfig = radiusMap[radius] || radiusMap.lg;\n const glowOpacity = glowOpacityMap[glow] ?? 0.45;\n\n const handleSelectColor = (hex: string) => {\n if (controlledColor === undefined) {\n setInternalColor(hex);\n }\n onColorChange?.(hex);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative isolate p-5 sm:p-6 overflow-hidden flex flex-col justify-between group transition-all duration-300',\n 'border border-border/80 bg-card/60 backdrop-blur-xl shadow-xl',\n radiusConfig.outer,\n className\n )}\n {...props}\n >\n {glow !== 'none' && (\n <div\n className=\"absolute -top-12 -right-12 w-48 h-48 rounded-full blur-[85px] pointer-events-none transition-colors duration-500 -z-10\"\n style={{\n backgroundColor: currentColor,\n opacity: glowOpacity,\n }}\n />\n )}\n\n {glow !== 'none' && glow !== 'subtle' && (\n <div\n className=\"absolute -bottom-10 -left-10 w-40 h-40 rounded-full blur-[90px] pointer-events-none transition-colors duration-700 -z-10\"\n style={{\n backgroundColor: currentColor,\n opacity: glowOpacity * 0.4,\n }}\n />\n )}\n\n {children ? (\n <div className=\"relative z-10 w-full h-full\">{children}</div>\n ) : (\n <div className=\"relative z-10 flex flex-col justify-between h-full space-y-5\">\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n {badgeText && (\n <div\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-[11px] font-semibold border transition-all duration-300 shadow-xs\"\n style={{\n backgroundColor: \\`\\${currentColor}18\\`,\n borderColor: \\`\\${currentColor}40\\`,\n color: currentColor,\n }}\n >\n {badgeIcon}\n <span>{badgeText}</span>\n </div>\n )}\n\n {showColorPicker && colors && colors.length > 0 && (\n <div className=\"flex items-center gap-1.5 bg-muted/60 dark:bg-muted/40 p-1 rounded-full border border-border/60 backdrop-blur-md\">\n {colors.map((c) => {\n const isActive = currentColor.toLowerCase() === c.hex.toLowerCase();\n return (\n <button\n key={c.name}\n type=\"button\"\n onClick={() => handleSelectColor(c.hex)}\n className={cn(\n 'w-3.5 h-3.5 rounded-full transition-all duration-200 cursor-pointer',\n isActive\n ? 'scale-125 ring-2 ring-foreground/40 shadow-xs'\n : 'hover:scale-110 opacity-70 hover:opacity-100'\n )}\n style={{ backgroundColor: c.hex }}\n title={\\`Switch to \\${c.name}\\`}\n aria-label={\\`Switch glow to \\${c.name}\\`}\n />\n );\n })}\n </div>\n )}\n </div>\n\n <div>\n {title && (\n <h3 className=\"text-base sm:text-lg font-bold tracking-tight text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-xs sm:text-sm text-muted-foreground leading-relaxed mt-1\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"pt-2 flex items-center justify-center\">\n {previewSlot ? (\n previewSlot\n ) : (\n <div\n className={cn(\n 'relative p-[1.5px] overflow-hidden transition-all duration-300 w-full max-w-[280px]',\n radiusConfig.inner\n )}\n style={{\n background: \\`linear-gradient(135deg, \\${currentColor}, transparent 60%, \\${currentColor}90)\\`,\n }}\n >\n <div\n className={cn(\n 'bg-card/90 dark:bg-card/80 px-4 py-3 flex items-center justify-between backdrop-blur-md shadow-inner',\n radiusConfig.inner\n )}\n >\n <div className=\"flex items-center gap-2.5\">\n <div\n className=\"w-2.5 h-2.5 rounded-full animate-pulse shrink-0\"\n style={{ backgroundColor: currentColor }}\n />\n <span className=\"text-xs font-mono font-semibold text-foreground\">\n Interactive Aurora Pill\n </span>\n </div>\n <span\n className=\"text-[10px] font-mono px-2 py-0.5 rounded-md font-medium border\"\n style={{\n backgroundColor: \\`\\${currentColor}12\\`,\n borderColor: \\`\\${currentColor}30\\`,\n color: currentColor,\n }}\n >\n {currentColor.toUpperCase()}\n </span>\n </div>\n </div>\n )}\n </div>\n\n {footerSlot && <div className=\"pt-2 border-t border-border/50\">{footerSlot}</div>}\n </div>\n )}\n </div>\n );\n }\n);\n\nAuroraBorderFX.displayName = 'AuroraBorderFX';\n`\n};\n","export const auroraSearchPill = {\n name: \"auroraSearchPill\",\n dependencies: [\n \"clsx\",\n \"tailwind-merge\",\n \"framer-motion\",\n \"lucide-react\"\n],\n \n fileName: \"aurora-search-pill.tsx\",\n content: `'use client';\n\nimport * as React from 'react';\nimport { Globe, Sparkles } from 'lucide-react';\nimport { cn } from '../utils/cn';\n\n// Register hardware angle property once for conic gradient rotation\nif (typeof window !== 'undefined' && typeof (window as any).CSS !== 'undefined' && 'registerProperty' in (window as any).CSS) {\n try {\n (window as any).CSS.registerProperty({\n name: '--aurora-deg',\n syntax: '<angle>',\n inherits: false,\n initialValue: '0deg',\n });\n } catch {}\n}\n\nexport interface AuroraSearchSource {\n /** Unique key for the source badge */\n id: string;\n /** Label or tooltip text for the source */\n label?: string;\n /** Direct avatar image URL (e.g. favicon, PNG, SVG) */\n avatarUrl?: string;\n /** Custom icon or element */\n icon?: React.ReactNode;\n /** Text initials to display inside badge */\n initials?: string;\n /** Built-in preset type or custom */\n type?: 'globe' | 'gradient' | 'github' | 'claude' | 'chatgpt' | 'perplexity' | 'custom';\n /** Custom background CSS string or hex */\n bg?: string;\n}\n\nexport type AuroraSearchPillSize = 'sm' | 'md' | 'lg';\nexport type AuroraSearchPillSpeed = 'slow' | 'normal' | 'fast';\nexport type AuroraSearchPillTheme = 'light' | 'dark' | 'auto';\nexport type AuroraSearchPillGlow = 'subtle' | 'medium' | 'strong' | 'none';\nexport type AuroraSpinMode = 'always' | 'searching' | 'hover' | 'never';\n\nexport interface AuroraSearchPillProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onToggle'> {\n /** Controlled searching state */\n isSearching?: boolean;\n /** Uncontrolled default searching state */\n defaultSearching?: boolean;\n /** Callback fired when searching state toggles */\n onToggle?: (searching: boolean) => void;\n /** Main search title text shown when active (default: \"Search...\") */\n searchLabel?: string;\n /** List of badge sources to render in the active state */\n sources?: AuroraSearchSource[];\n /** Shortcut array of avatar image URLs */\n sourceAvatars?: string[];\n /** Color theme for the pill body: light, dark, or auto (follows dark mode) */\n theme?: AuroraSearchPillTheme;\n /** Size scale of the pill */\n size?: AuroraSearchPillSize;\n /** Glow intensity of the surrounding ambient aurora */\n glowIntensity?: AuroraSearchPillGlow;\n /** Speed of the rotating aurora beam */\n speed?: AuroraSearchPillSpeed;\n /**\n * When the aurora beam should rotate:\n * - 'always' (default): continuously rotates the aurora light wave all the time\n * - 'searching': only spins while searching/active, remains calm when idle\n * - 'hover': spins on cursor hover / focus\n * - 'never': static gradient, no rotation\n */\n spinMode?: AuroraSpinMode;\n /** Manually override spinning state */\n isSpinning?: boolean;\n /** Automatically toggle searching state at a set interval (demo mode) */\n autoCycle?: boolean;\n /** Interval in ms for autoCycle (default: 2400) */\n cycleInterval?: number;\n}\n\nconst DEFAULT_SOURCES: AuroraSearchSource[] = [\n { id: 'web', type: 'globe', label: 'Web' },\n { id: 'gradient', type: 'gradient', label: 'Neural Index' },\n { id: 'github', type: 'github', label: 'GitHub' },\n];\n\nconst SPEED_MAP: Record<AuroraSearchPillSpeed, string> = {\n slow: '5s',\n normal: '3.2s',\n fast: '1.8s',\n};\n\nconst GLOW_OPACITY: Record<AuroraSearchPillGlow, number> = {\n none: 0,\n subtle: 0.45,\n medium: 0.75,\n strong: 0.95,\n};\n\nconst SIZE_CONFIG: Record<\n AuroraSearchPillSize,\n {\n height: string;\n paddingDots: string;\n paddingSearch: string;\n dotSize: string;\n dotGap: string;\n fontSize: string;\n badgeSize: string;\n badgeMargin: string;\n minWidthSearch: string;\n }\n> = {\n sm: {\n height: 'h-10',\n paddingDots: 'px-4',\n paddingSearch: 'px-4',\n dotSize: 'w-1.5 h-1.5',\n dotGap: 'gap-1.5',\n fontSize: 'text-xs',\n badgeSize: 'w-4 h-4',\n badgeMargin: '-ml-1',\n minWidthSearch: 'min-w-[160px]',\n },\n md: {\n height: 'h-12',\n paddingDots: 'px-5',\n paddingSearch: 'px-5',\n dotSize: 'w-[6.5px] h-[6.5px]',\n dotGap: 'gap-[7px]',\n fontSize: 'text-sm sm:text-base',\n badgeSize: 'w-[22px] h-[22px]',\n badgeMargin: '-ml-1.5',\n minWidthSearch: 'min-w-[190px]',\n },\n lg: {\n height: 'h-14',\n paddingDots: 'px-6',\n paddingSearch: 'px-6',\n dotSize: 'w-2 h-2',\n dotGap: 'gap-2',\n fontSize: 'text-base sm:text-lg',\n badgeSize: 'w-6 h-6',\n badgeMargin: '-ml-2',\n minWidthSearch: 'min-w-[220px]',\n },\n};\n\n/**\n * AuroraSearchPill Component\n *\n * An ultra-premium AI search pill with an ambient rotating aurora conic glow,\n * 1.5px illuminated border track, and smooth transition between pulsing dots and\n * active search query with source badges.\n */\nexport const AuroraSearchPill = React.forwardRef<HTMLDivElement, AuroraSearchPillProps>(\n (\n {\n isSearching: controlledSearching,\n defaultSearching = false,\n onToggle,\n searchLabel = 'Search...',\n sources = DEFAULT_SOURCES,\n sourceAvatars,\n theme = 'auto',\n size = 'md',\n glowIntensity = 'medium',\n speed = 'normal',\n spinMode = 'always',\n isSpinning: controlledSpinning,\n autoCycle = false,\n cycleInterval = 2400,\n className,\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...props\n },\n ref\n ) => {\n const isControlled = controlledSearching !== undefined;\n const [uncontrolledSearching, setUncontrolledSearching] = React.useState(defaultSearching);\n const active = isControlled ? controlledSearching : uncontrolledSearching;\n\n const [isHovered, setIsHovered] = React.useState(false);\n\n // Unique style injection ID for CSS custom property and keyframes\n const instanceId = React.useId().replace(/:/g, '');\n\n // Resolve active sources list (support direct sourceAvatars list)\n const activeSources = React.useMemo<AuroraSearchSource[]>(() => {\n if (sourceAvatars && sourceAvatars.length > 0) {\n return sourceAvatars.map((url, i): AuroraSearchSource => ({\n id: \\`avatar-\\${i}\\`,\n avatarUrl: url,\n label: \\`Source \\${i + 1}\\`,\n type: 'custom',\n }));\n }\n return sources;\n }, [sourceAvatars, sources]);\n\n // Determine whether the aurora beam should actively rotate (default: always on)\n const shouldSpin = React.useMemo(() => {\n if (controlledSpinning !== undefined) return controlledSpinning;\n if (spinMode === 'never') return false;\n if (spinMode === 'searching') return active;\n if (spinMode === 'hover') return isHovered;\n // Default: 'always' -> continuously rotates in both idle (dots) and searching states\n return true;\n }, [controlledSpinning, spinMode, isHovered, active]);\n\n // Auto demo cycling\n React.useEffect(() => {\n if (!autoCycle) return;\n const interval = setInterval(() => {\n if (isControlled) {\n onToggle?.(!active);\n } else {\n setUncontrolledSearching((prev) => {\n const next = !prev;\n onToggle?.(next);\n return next;\n });\n }\n }, cycleInterval);\n\n return () => clearInterval(interval);\n }, [autoCycle, cycleInterval, active, isControlled, onToggle]);\n\n const handleToggle = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (!isControlled) {\n setUncontrolledSearching(!active);\n }\n onToggle?.(!active);\n };\n\n const sizeStyle = SIZE_CONFIG[size] || SIZE_CONFIG.md;\n const animationDuration = SPEED_MAP[speed] || SPEED_MAP.normal;\n const glowAlpha = GLOW_OPACITY[glowIntensity] ?? GLOW_OPACITY.medium;\n\n // Theme resolution for pill body\n const bodyThemeClass =\n theme === 'light'\n ? 'bg-white text-slate-900 border-white/60 shadow-sm'\n : theme === 'dark'\n ? 'bg-[#090d16] text-white border-white/10 shadow-lg shadow-black/40'\n : 'bg-white text-slate-900 dark:bg-[#090d16] dark:text-white border-white/60 dark:border-white/10 shadow-sm dark:shadow-black/40';\n\n const dotsColorClass =\n theme === 'light'\n ? 'bg-slate-900'\n : theme === 'dark'\n ? 'bg-white'\n : 'bg-slate-900 dark:bg-white';\n\n return (\n <div\n ref={ref}\n onClick={handleToggle}\n onMouseEnter={(e) => {\n setIsHovered(true);\n onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n setIsHovered(false);\n onMouseLeave?.(e);\n }}\n role=\"button\"\n tabIndex={0}\n aria-pressed={active}\n aria-label={active ? \\`Searching: \\${searchLabel}\\` : 'Activate AI Search'}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }}\n className={cn(\n 'relative inline-flex items-center justify-center cursor-pointer select-none isolate outline-none group',\n 'transition-transform duration-200 ease-out active:scale-[0.96] focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2',\n className\n )}\n {...props}\n >\n {/* Scoped CSS for hardware accelerated conic rotation and pulse */}\n <style dangerouslySetInnerHTML={{\n __html: \\`\n @property --aurora-deg {\n syntax: '<angle>';\n initial-value: 0deg;\n inherits: false;\n }\n @keyframes spinAurora {\n from {\n --aurora-deg: 0deg;\n }\n to {\n --aurora-deg: 360deg;\n }\n }\n @keyframes dotPulse {\n 0%, 80%, 100% {\n opacity: 0.35;\n transform: scale(0.75);\n }\n 40% {\n opacity: 1;\n transform: scale(1.15);\n }\n }\n \\`,\n }} />\n\n {/* 1. Ambient Volumetric Glow (Aurora Ambient Glow) */}\n {glowIntensity !== 'none' && (\n <div\n className=\"absolute -inset-1.5 rounded-full pointer-events-none blur-md z-0 transition-opacity duration-300\"\n style={{\n opacity: glowAlpha,\n background: \\`conic-gradient(\n from var(--aurora-deg, 0deg) at 50% 50%,\n transparent 0deg,\n rgba(59, 130, 246, 0.75) 60deg,\n rgba(139, 92, 246, 0.9) 110deg,\n rgba(236, 72, 153, 0.95) 160deg,\n rgba(244, 63, 94, 0.8) 200deg,\n transparent 250deg,\n transparent 360deg\n )\\`,\n animation: shouldSpin\n ? \\`spinAurora \\${animationDuration} linear infinite\\`\n : undefined,\n }}\n />\n )}\n\n {/* 2. Sharp 1.5px Conic Border Track */}\n <div\n className=\"relative z-10 p-[1.5px] rounded-full transition-shadow duration-300 shadow-sm\"\n style={{\n background: \\`conic-gradient(\n from var(--aurora-deg, 0deg) at 50% 50%,\n rgba(226, 232, 240, 0.8) 0deg,\n rgba(59, 130, 246, 0.85) 60deg,\n rgba(139, 92, 246, 1) 110deg,\n rgba(236, 72, 153, 1) 160deg,\n rgba(244, 63, 94, 0.85) 200deg,\n rgba(226, 232, 240, 0.6) 260deg,\n rgba(226, 232, 240, 0.8) 360deg\n )\\`,\n animation: shouldSpin\n ? \\`spinAurora \\${animationDuration} linear infinite\\`\n : undefined,\n }}\n >\n {/* 3. Center Pill Body */}\n <div\n className={cn(\n 'relative z-20 rounded-full flex items-center justify-center overflow-hidden border',\n sizeStyle.height,\n active ? cn(sizeStyle.paddingSearch, sizeStyle.minWidthSearch) : sizeStyle.paddingDots,\n bodyThemeClass,\n 'transition-all duration-500 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]'\n )}\n >\n {/* STATE 1: Pulsing Dots (Idle/Listening) */}\n <div\n className={cn(\n 'flex items-center',\n sizeStyle.dotGap,\n 'transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]',\n active\n ? 'opacity-0 scale-50 -translate-y-2 pointer-events-none absolute'\n : 'opacity-100 scale-100 translate-y-0'\n )}\n >\n {[0, 1, 2].map((idx) => (\n <span\n key={idx}\n className={cn('rounded-full inline-block', sizeStyle.dotSize, dotsColorClass)}\n style={{\n animation: \\`dotPulse 1.4s ease-in-out infinite both\\`,\n animationDelay: \\`\\${idx === 0 ? -0.32 : idx === 1 ? -0.16 : 0}s\\`,\n }}\n />\n ))}\n </div>\n\n {/* STATE 2: Active Search Label + Overlapping Sources */}\n <div\n className={cn(\n 'flex items-center gap-2.5 whitespace-nowrap',\n 'transition-all duration-400 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]',\n active\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-90 translate-y-2 pointer-events-none absolute'\n )}\n >\n {/* Search Title */}\n <span className={cn('font-medium tracking-tight', sizeStyle.fontSize)}>\n {searchLabel}\n </span>\n\n {/* Overlapping Sources Row */}\n {activeSources && activeSources.length > 0 && (\n <div className=\"inline-flex items-center pl-0.5\">\n {activeSources.map((src, i) => {\n const isFirst = i === 0;\n\n return (\n <div\n key={src.id || i}\n title={src.label || src.id}\n className={cn(\n 'rounded-full border-[1.5px] border-white dark:border-zinc-900 flex items-center justify-center shrink-0 shadow-xs overflow-hidden',\n sizeStyle.badgeSize,\n !isFirst && sizeStyle.badgeMargin\n )}\n style={{\n backgroundColor:\n src.type === 'globe'\n ? '#0b1120'\n : src.type === 'github'\n ? '#ffffff'\n : src.type === 'claude'\n ? '#d97757'\n : src.type === 'chatgpt'\n ? '#10a37f'\n : src.type === 'perplexity'\n ? '#1fb8cd'\n : src.type === 'custom' && src.bg\n ? src.bg\n : undefined,\n background:\n src.type === 'gradient'\n ? 'linear-gradient(135deg, #06b6d4 45%, #3b82f6 55%)'\n : undefined,\n }}\n >\n {src.avatarUrl ? (\n <img\n src={src.avatarUrl}\n alt={src.label || src.id}\n className=\"w-full h-full object-cover\"\n />\n ) : src.icon ? (\n src.icon\n ) : src.type === 'globe' ? (\n <Globe className=\"w-3 h-3 text-sky-400 stroke-[2.5]\" />\n ) : src.type === 'github' ? (\n <svg className=\"w-3.5 h-3.5 fill-[#181717]\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n ) : src.type === 'claude' ? (\n <Sparkles className=\"w-2.5 h-2.5 text-white\" />\n ) : src.type === 'chatgpt' ? (\n <div className=\"w-2 h-2 rounded-full bg-white\" />\n ) : src.type === 'perplexity' ? (\n <Sparkles className=\"w-2.5 h-2.5 text-white\" />\n ) : src.initials ? (\n <span className=\"text-[8px] font-bold text-white uppercase\">\n {src.initials}\n </span>\n ) : null}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n);\n\nAuroraSearchPill.displayName = 'AuroraSearchPill';\n`\n};\n","export const templateAiStartup = {\n name: \"template-ai-startup\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ai-startup.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n Sparkles,\n ArrowRight,\n Cpu,\n Zap,\n Shield,\n Check,\n ChevronRight,\n Send,\n Terminal,\n Activity,\n} from \"lucide-react\";\n\nexport default function AiStartupTemplate() {\n const [selectedModel, setSelectedModel] = useState<\"DeepSeek-R1\" | \"Claude-3.5\" | \"GPT-4o\">(\"DeepSeek-R1\");\n const [promptText, setPromptText] = useState(\"Synthesize an edge-routed vector indexing service\");\n const [isGenerating, setIsGenerating] = useState(false);\n const [generatedOutput, setGeneratedOutput] = useState<string | null>(\n \"✓ Tensor graph compiled. 4 regions provisioned. TTFT: 14ms. Throughput: 142 tok/s.\"\n );\n const [billingCycle, setBillingCycle] = useState<\"monthly\" | \"annual\">(\"annual\");\n\n const handleSynthesize = (e: React.FormEvent) => {\n e.preventDefault();\n if (!promptText.trim()) return;\n setIsGenerating(true);\n setGeneratedOutput(null);\n setTimeout(() => {\n setIsGenerating(false);\n setGeneratedOutput(\n \\`✓ [\\${selectedModel}] execution complete. 2,140 tokens streamed with zero-copy serialization. Latency: 1.1ms.\\`\n );\n }, 900);\n };\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans selection:bg-indigo-500/30\">\n <header className=\"sticky top-0 z-30 backdrop-blur-xl border-b border-white/10 bg-[#08090d]/80\">\n <div className=\"max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"h-7 w-7 rounded-lg bg-indigo-600 flex items-center justify-center text-white\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <span className=\"font-bold text-sm\">Synthetix AI</span>\n </div>\n <button className=\"text-xs font-semibold px-3.5 py-1.5 rounded-lg bg-indigo-600 text-white hover:bg-indigo-500\">\n Get API Key\n </button>\n </div>\n </header>\n\n <section className=\"pt-20 pb-16 px-4 sm:px-6 max-w-5xl mx-auto text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-indigo-500/30 bg-indigo-500/10 text-indigo-400 text-xs font-mono mb-6\">\n <Cpu className=\"h-3 w-3\" />\n <span>Next-Gen Autonomous Inference Engine</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-extrabold tracking-tight mb-5 leading-tight\">\n Zero Latency. Real Autonomous Intelligence.\n </h1>\n\n <p className=\"text-sm sm:text-base text-zinc-400 max-w-2xl mx-auto mb-10\">\n Stream deep reasoning tokens directly to edge clients. Synthesize complex backend architectures,\n fine-tune proprietary weights, and run microsecond telemetry without cold starts.\n </p>\n\n <form\n onSubmit={handleSynthesize}\n className=\"max-w-2xl mx-auto p-2 rounded-2xl bg-zinc-900 border border-white/10 flex flex-col sm:flex-row gap-2 shadow-2xl\"\n >\n <input\n type=\"text\"\n value={promptText}\n onChange={(e) => setPromptText(e.target.value)}\n className=\"flex-1 bg-transparent px-3 py-2 text-xs text-white focus:outline-none\"\n />\n <button\n type=\"submit\"\n disabled={isGenerating}\n className=\"px-4 py-2 rounded-xl bg-indigo-600 text-white text-xs font-semibold shrink-0\"\n >\n {isGenerating ? \"Synthesizing...\" : \"Execute\"}\n </button>\n </form>\n\n <AnimatePresence>\n {generatedOutput && (\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mt-4 p-3.5 rounded-xl border border-indigo-500/30 bg-indigo-950/20 text-xs font-mono text-indigo-300 max-w-2xl mx-auto text-left\"\n >\n {generatedOutput}\n </motion.div>\n )}\n </AnimatePresence>\n </section>\n </div>\n );\n}\n`,\n};\n","export const templateModernSaas = {\n name: \"template-modern-saas\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-modern-saas.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Command, Search, GitBranch, CheckCircle2, ArrowUpRight, ChevronRight, Zap } from \"lucide-react\";\n\nexport default function ModernSaasTemplate() {\n const [activeTab, setActiveTab] = useState<\"branch\" | \"edge\" | \"telemetry\">(\"branch\");\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans\">\n <header className=\"sticky top-0 z-30 border-b border-white/10 bg-[#090b10]/80 backdrop-blur-xl\">\n <div className=\"max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between\">\n <span className=\"font-bold text-sm\">Aura Cloud</span>\n <button className=\"text-xs px-3 py-1.5 rounded-lg bg-white/10 hover:bg-white/20 text-white font-medium\">\n Console\n </button>\n </div>\n </header>\n\n <section className=\"pt-20 pb-16 px-4 sm:px-6 max-w-5xl mx-auto text-center\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-blue-500/30 bg-blue-500/10 text-blue-400 text-xs font-mono mb-5\">\n <GitBranch className=\"h-3 w-3\" />\n <span>Continuous Edge Infrastructure</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-extrabold tracking-tight mb-5 leading-tight\">\n The Developer Cloud for Ultra-Fast Teams.\n </h1>\n\n <p className=\"text-sm sm:text-base text-zinc-400 max-w-xl mx-auto mb-10\">\n Push code, spawn instant ephemeral preview environments, and deploy across 300 global edge locations\n with zero configuration.\n </p>\n </section>\n </div>\n );\n}\n`,\n};\n","export const templateAnalyticsDashboard = {\n name: \"template-analytics-dashboard\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-analytics-dashboard.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BarChart3, TrendingUp, Users, CreditCard, ArrowUpRight, Download } from \"lucide-react\";\n\nexport default function AnalyticsDashboardTemplate() {\n const [dateRange, setDateRange] = useState(\"30D\");\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 flex flex-col md:flex-row font-sans\">\n <aside className=\"w-full md:w-56 border-r border-white/10 p-4 shrink-0 bg-[#08090d]\">\n <div className=\"font-bold text-sm mb-6\">Prism Analytics</div>\n <nav className=\"space-y-1 text-xs\">\n <button className=\"w-full text-left px-3 py-2 rounded-lg bg-emerald-600 text-white font-semibold\">\n Overview\n </button>\n <button className=\"w-full text-left px-3 py-2 rounded-lg text-zinc-400 hover:text-white\">\n Inflows\n </button>\n </nav>\n </aside>\n <main className=\"flex-1 p-6\">\n <h1 className=\"text-2xl font-bold mb-4\">Executive Telemetry</h1>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateDevtoolsCli = {\n name: \"template-devtools-cli\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-devtools-cli.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Terminal, Copy, Check, Star } from \"lucide-react\";\n\nexport default function DevtoolsCliTemplate() {\n const [copied, setCopied] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#090a10] text-zinc-100 font-mono p-6\">\n <header className=\"flex justify-between items-center mb-12\">\n <span className=\"font-bold text-sm\">HyperTerminal</span>\n </header>\n </div>\n );\n}\n`,\n};\n","export const templateCreativePortfolio = {\n name: \"template-creative-portfolio\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-creative-portfolio.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ArrowUpRight, Award, X } from \"lucide-react\";\n\nexport default function CreativePortfolioTemplate() {\n return (\n <div className=\"min-h-screen bg-[#09090b] text-zinc-100 font-serif p-8\">\n <header className=\"flex justify-between items-center mb-16 font-sans\">\n <span className=\"font-bold uppercase tracking-tight\">Studio Monolith</span>\n </header>\n <h1 className=\"text-5xl font-light leading-tight mb-12\">\n Sculpting singular digital experiences for luxury institutions.\n </h1>\n </div>\n );\n}\n`,\n};\n","export const templateFintechApp = {\n name: \"template-fintech-app\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-fintech-app.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { CreditCard, Send, Lock, Unlock, ShieldCheck } from \"lucide-react\";\n\nexport default function FintechAppTemplate() {\n const [frozen, setFrozen] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6\">\n <h1 className=\"text-2xl font-bold mb-4\">Apex Treasury</h1>\n </div>\n );\n}\n`,\n};\n","export const templateEcommerceStore = {\n name: \"template-ecommerce-store\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ecommerce-store.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ShoppingBag, Heart, Truck, RotateCcw } from \"lucide-react\";\n\nexport default function EcommerceStoreTemplate() {\n return (\n <div className=\"min-h-screen bg-[#0c0d12] text-zinc-100 p-8\">\n <h1 className=\"text-3xl font-bold\">Atelier Objects</h1>\n </div>\n );\n}\n`,\n};\n","export const templateAgencyCreative = {\n name: \"template-agency-creative\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-agency-creative.tsx\",\n content: `\"use client\";\n\nimport React from \"react\";\nimport { ArrowUpRight, Sparkles } from \"lucide-react\";\n\nexport default function AgencyCreativeTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-8 font-sans\">\n <h1 className=\"text-6xl font-black uppercase\">Vanguard Digital</h1>\n </div>\n );\n}\n`,\n};\n","export const templateAiChat = {\n name: \"template-ai-chat\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-ai-chat.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Send, Cpu, Copy, Check } from \"lucide-react\";\n\nexport default function AiChatTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 flex p-4 font-sans\">\n <div className=\"flex-1\">Cortex AI Assistant</div>\n </div>\n );\n}\n`,\n};\n","export const templateProjectManagement = {\n name: \"template-project-management\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-project-management.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Plus, Kanban } from \"lucide-react\";\n\nexport default function ProjectManagementTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-6 font-sans\">\n <h1 className=\"text-xl font-bold\">Orbit Flow</h1>\n </div>\n );\n}\n`,\n};\n","export const templateStartupWaitlist = {\n name: \"template-startup-waitlist\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-startup-waitlist.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ArrowRight, Clock, Users } from \"lucide-react\";\n\nexport default function StartupWaitlistTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-8 text-center flex flex-col justify-center\">\n <h1 className=\"text-5xl font-extrabold mb-4\">Genesis Stealth</h1>\n </div>\n );\n}\n`,\n};\n","export const templateDocsPlatform = {\n name: \"template-docs-platform\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-docs-platform.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Search, Code2, Send } from \"lucide-react\";\n\nexport default function DocsPlatformTemplate() {\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 p-6\">\n <h1 className=\"text-3xl font-bold\">Codex Documentation</h1>\n </div>\n );\n}\n`,\n};\n","export const templateHealthcarePortal = {\n name: \"template-healthcare-portal\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-healthcare-portal.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Activity, Heart, Calendar, Pill, CheckCircle2, Video, TrendingUp } from \"lucide-react\";\n\nexport default function HealthcarePortalTemplate() {\n const [checkedMeds, setCheckedMeds] = useState<string[]>([\"med-1\"]);\n\n const vitals = [\n { label: \"Resting Heart Rate\", value: \"64\", unit: \"BPM\", delta: \"-3 bpm vs avg\", status: \"Optimal\" },\n { label: \"Blood Oxygen (SpO2)\", value: \"98.8\", unit: \"%\", delta: \"+0.4% healthy\", status: \"Optimal\" },\n { label: \"Sleep Recovery\", value: \"88\", unit: \"/100\", delta: \"7h 42m deep sleep\", status: \"High\" },\n { label: \"Heart Rate Var.\", value: \"58\", unit: \"ms\", delta: \"+7ms resilience\", status: \"Normal\" },\n ];\n\n const medications = [\n { id: \"med-1\", name: \"Atorvastatin Calcium\", dose: \"20mg • Morning with meal\", days: \"24 days left\" },\n { id: \"med-2\", name: \"Omega-3 Pure EPA/DHA\", dose: \"1000mg • Midday with water\", days: \"18 days left\" },\n { id: \"med-3\", name: \"Magnesium Glycinate\", dose: \"400mg • Evening before sleep\", days: \"6 days left\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8\">\n <header className=\"max-w-6xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div>\n <span className=\"text-xs uppercase font-mono tracking-widest text-teal-400\">PulseCare Telehealth</span>\n <h1 className=\"text-2xl font-bold\">Patient Health Telemetry</h1>\n </div>\n <button className=\"px-4 py-2 rounded-xl text-xs font-semibold bg-teal-600 hover:bg-teal-500 text-white flex items-center gap-2\">\n <Video className=\"h-3.5 w-3.5\" />\n <span>Book Specialist</span>\n </button>\n </header>\n\n <main className=\"max-w-6xl mx-auto py-8 space-y-6\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-4\">\n {vitals.map((v) => (\n <div key={v.label} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c]\">\n <span className=\"text-xs text-zinc-400\">{v.label}</span>\n <div className=\"text-2xl sm:text-3xl font-bold font-mono my-1\">\n {v.value} <span className=\"text-xs font-normal opacity-60\">{v.unit}</span>\n </div>\n <span className=\"text-xs text-teal-400 font-semibold flex items-center gap-1\">\n <TrendingUp className=\"h-3 w-3\" />\n {v.delta}\n </span>\n </div>\n ))}\n </div>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4\">\n <h2 className=\"font-bold text-base flex items-center gap-2\">\n <Pill className=\"h-4 w-4 text-teal-400\" />\n <span>Daily Prescriptions</span>\n </h2>\n <div className=\"space-y-2\">\n {medications.map((m) => {\n const isDone = checkedMeds.includes(m.id);\n return (\n <div\n key={m.id}\n onClick={() =>\n setCheckedMeds((prev) =>\n prev.includes(m.id) ? prev.filter((i) => i !== m.id) : [...prev, m.id]\n )\n }\n className=\"p-3.5 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between cursor-pointer hover:border-white/20\"\n >\n <div className=\"flex items-center gap-3\">\n <div\n className={\\`w-5 h-5 rounded-lg border flex items-center justify-center \\${\n isDone ? \"bg-teal-600 border-teal-600 text-white\" : \"border-zinc-500\"\n }\\`}\n >\n {isDone && <CheckCircle2 className=\"h-3.5 w-3.5\" />}\n </div>\n <div>\n <div className={\\`text-xs font-semibold \\${isDone ? \"line-through opacity-50\" : \"\"}\\`}>\n {m.name}\n </div>\n <div className=\"text-[10px] text-zinc-400\">{m.dose}</div>\n </div>\n </div>\n <span className=\"text-xs font-mono text-zinc-400\">{m.days}</span>\n </div>\n );\n })}\n </div>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateWeb3Dex = {\n name: \"template-web3-dex\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-web3-dex.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ArrowDownUp, Zap, Wallet, TrendingUp } from \"lucide-react\";\n\nexport default function Web3DexTemplate() {\n const [fromAmount, setFromAmount] = useState(\"1.5\");\n const [isSwapping, setIsSwapping] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 flex flex-col items-center justify-center\">\n <div className=\"w-full max-w-md p-6 rounded-3xl border border-white/10 bg-[#12141c] space-y-4 shadow-2xl\">\n <div className=\"flex justify-between items-center\">\n <span className=\"font-bold text-base\">NovaSwap DEX</span>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-cyan-500/10 text-cyan-400 font-mono\">12 Gwei</span>\n </div>\n\n <div className=\"p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1\">\n <div className=\"flex justify-between text-xs text-zinc-400\">\n <span>You Pay</span>\n <span>Balance: 4.82 ETH</span>\n </div>\n <div className=\"flex justify-between items-center\">\n <input\n type=\"text\"\n value={fromAmount}\n onChange={(e) => setFromAmount(e.target.value)}\n className=\"text-2xl font-mono font-bold bg-transparent outline-none w-1/2\"\n />\n <span className=\"px-3 py-1 rounded-xl bg-white/10 font-bold text-xs\">ETH</span>\n </div>\n </div>\n\n <div className=\"flex justify-center -my-2\">\n <div className=\"p-2 rounded-xl bg-[#12141c] border border-white/10\">\n <ArrowDownUp className=\"h-4 w-4 text-cyan-400\" />\n </div>\n </div>\n\n <div className=\"p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1\">\n <div className=\"flex justify-between text-xs text-zinc-400\">\n <span>You Receive (Est.)</span>\n <span>Balance: 14,850 USDC</span>\n </div>\n <div className=\"flex justify-between items-center\">\n <div className=\"text-2xl font-mono font-bold\">\n {(parseFloat(fromAmount || \"0\") * 2640.5).toFixed(2)}\n </div>\n <span className=\"px-3 py-1 rounded-xl bg-white/10 font-bold text-xs\">USDC</span>\n </div>\n </div>\n\n <button\n onClick={() => {\n setIsSwapping(true);\n setTimeout(() => setIsSwapping(false), 1200);\n }}\n className=\"w-full py-3.5 rounded-xl font-bold text-xs text-white bg-cyan-600 hover:bg-cyan-500 shadow-lg flex items-center justify-center gap-2 transition-transform active:scale-95\"\n >\n <Zap className=\"h-4 w-4\" />\n <span>{isSwapping ? \"Routing via Smart Contract...\" : \"Swap Tokens\"}</span>\n </button>\n </div>\n </div>\n );\n}\n`,\n};\n","export const templateEdtechLearning = {\n name: \"template-edtech-learning\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-edtech-learning.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BookOpen, CheckCircle2, Code2, Award, Flame, Play } from \"lucide-react\";\n\nexport default function EdtechLearningTemplate() {\n const [selectedIdx, setSelectedIdx] = useState<number | null>(1);\n const [isDone, setIsDone] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2\">\n <BookOpen className=\"h-5 w-5 text-emerald-400\" />\n <span className=\"font-bold text-base\">Polymath Academy</span>\n </div>\n <div className=\"flex items-center gap-1.5 px-3 py-1 rounded-full bg-amber-500/10 text-amber-400 text-xs font-semibold\">\n <Flame className=\"h-3.5 w-3.5 fill-current\" />\n <span>14 Day Streak</span>\n </div>\n </header>\n\n <main className=\"max-w-5xl mx-auto py-8 grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4\">\n <div className=\"text-xs font-mono text-zinc-400\">Module 2 • Lesson 2.2</div>\n <h1 className=\"text-2xl font-bold\">Raft Consensus & Majority Quorums</h1>\n <p className=\"text-xs text-zinc-300 leading-relaxed\">\n In Raft, a cluster of 5 nodes requires an affirmative vote from at least 3 nodes before committing any state machine transition.\n </p>\n\n <div className=\"space-y-2 pt-2\">\n {[\n \"Any follower can commit independently without Leader confirmation.\",\n \"A quorum majority (3 of 5 nodes) ensures overlapping sets and prevents split-brain.\",\n \"Logs are replicated only during leader step-down events.\",\n ].map((ans, i) => (\n <button\n key={i}\n onClick={() => setSelectedIdx(i)}\n className={\\`w-full p-3.5 rounded-xl border text-left text-xs transition-colors \\${\n selectedIdx === i\n ? \"border-emerald-500 bg-emerald-500/10 text-white font-semibold\"\n : \"border-white/10 bg-[#181a24] text-zinc-300\"\n }\\`}\n >\n {ans}\n </button>\n ))}\n </div>\n\n <button\n onClick={() => setIsDone(true)}\n className=\"px-5 py-2.5 rounded-xl text-xs font-bold text-white bg-emerald-600 hover:bg-emerald-500 shadow-md flex items-center gap-2 mt-4\"\n >\n <Play className=\"h-3.5 w-3.5 fill-current\" />\n <span>{isDone ? \"Solution Verified ✓ (+150 XP)\" : \"Verify Solution\"}</span>\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateConferenceEvent = {\n name: \"template-conference-event\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-conference-event.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Calendar, MapPin, Ticket, Sparkles, Check } from \"lucide-react\";\n\nexport default function ConferenceEventTemplate() {\n const [selectedDay, setSelectedDay] = useState(\"day-1\");\n\n const schedule = [\n { time: \"09:00 AM\", title: \"Opening Keynote: Autonomous Inference at Edge\", speaker: \"Dr. Elena Vance\" },\n { time: \"11:00 AM\", title: \"Deterministic Design Systems for 100M+ Users\", speaker: \"Marcus Sterling\" },\n { time: \"02:00 PM\", title: \"Zero-Downtime eBPF State Replication\", speaker: \"Hiroshi Tanaka\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090e] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-extrabold text-base tracking-tight\">Vertex Summit 2027</span>\n <button className=\"px-4 py-2 rounded-xl text-xs font-bold text-white bg-purple-600 hover:bg-purple-500 shadow-md\">\n Claim Pass\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-16 text-center space-y-6\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-purple-500/10 border border-purple-500/20 text-purple-400 text-xs font-mono\">\n <Calendar className=\"h-3.5 w-3.5\" />\n <span>October 14–16, 2027 • San Francisco, CA & Virtual</span>\n </div>\n\n <h1 className=\"text-4xl sm:text-6xl font-black tracking-tight leading-tight\">\n The Convergence of Autonomous Systems\n </h1>\n\n <p className=\"text-sm text-zinc-400 max-w-xl mx-auto\">\n Gathering 4,500+ systems engineers and AI leaders to build the future of software infrastructure.\n </p>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] text-left space-y-3 mt-8\">\n <h2 className=\"font-bold text-sm\">Day 1 Schedule (Oct 14)</h2>\n <div className=\"space-y-2\">\n {schedule.map((item) => (\n <div key={item.time} className=\"p-3 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between text-xs\">\n <div>\n <div className=\"font-bold\">{item.title}</div>\n <div className=\"text-[10px] text-zinc-400\">{item.speaker}</div>\n </div>\n <span className=\"font-mono text-purple-400 font-bold\">{item.time}</span>\n </div>\n ))}\n </div>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateAudioPodcast = {\n name: \"template-audio-podcast\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-audio-podcast.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Headphones, Play, Pause, RotateCcw, RotateCw, Download } from \"lucide-react\";\n\nexport default function AudioPodcastTemplate() {\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentSec, setCurrentSec] = useState(255); // 04:15\n\n const chapters = [\n { time: \"00:00\", title: \"Cold Open & Benchmarks\" },\n { time: \"04:15\", title: \"Lockless Ring Buffers vs Channels\" },\n { time: \"18:40\", title: \"Kernel-Bypass Networking with io_uring\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 pb-24\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2\">\n <Headphones className=\"h-5 w-5 text-indigo-400\" />\n <span className=\"font-bold text-base\">EchoWave Studio</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10\">\n Subscribe RSS\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-10 space-y-6\">\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-3\">\n <span className=\"text-xs font-mono text-indigo-400\">Episode 148 • 54m 20s</span>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">Zero-Cost Abstractions & High-Throughput I/O</h1>\n <p className=\"text-xs text-zinc-400\">Featuring Linus M. Discussing memory barriers and lock-free concurrency queues.</p>\n </div>\n\n <div className=\"space-y-2\">\n <h2 className=\"font-bold text-xs uppercase tracking-wider text-zinc-400\">Chapters</h2>\n {chapters.map((ch) => (\n <div key={ch.time} className=\"p-3.5 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <span>{ch.title}</span>\n <span className=\"font-mono text-indigo-400\">{ch.time}</span>\n </div>\n ))}\n </div>\n </main>\n\n <footer className=\"fixed bottom-0 inset-x-0 p-4 border-t border-white/10 bg-[#08090d]/95 backdrop-blur-xl\">\n <div className=\"max-w-4xl mx-auto flex items-center justify-between gap-4\">\n <button\n onClick={() => setIsPlaying(!isPlaying)}\n className=\"p-3 rounded-full bg-indigo-600 hover:bg-indigo-500 text-white shadow-md\"\n >\n {isPlaying ? <Pause className=\"h-5 w-5\" /> : <Play className=\"h-5 w-5 fill-current ml-0.5\" />}\n </button>\n <span className=\"text-xs font-mono text-zinc-400\">04:15 / 54:20</span>\n </div>\n </footer>\n </div>\n );\n}\n`,\n};\n","export const templateRealEstate = {\n name: \"template-real-estate\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-real-estate.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Building2, MapPin, Calendar, Users, Check } from \"lucide-react\";\n\nexport default function RealEstateTemplate() {\n const [nights, setNights] = useState(4);\n const baseRate = 2450;\n\n return (\n <div className=\"min-h-screen bg-[#0c0d12] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-serif text-base uppercase tracking-widest font-light\">Haven Luxury Estates</span>\n <span className=\"text-xs uppercase tracking-widest font-mono text-zinc-400\">Aspen • Kyoto • Zurich</span>\n </header>\n\n <main className=\"max-w-5xl mx-auto py-12 space-y-8\">\n <div className=\"space-y-3\">\n <div className=\"text-xs font-mono text-zinc-400\">Aspen Valley, Colorado • Residence #04</div>\n <h1 className=\"text-3xl sm:text-5xl font-serif font-light\">The Obsidian Pavilion</h1>\n <p className=\"text-xs sm:text-sm text-zinc-400 max-w-2xl leading-relaxed\">\n A 9,400 sq.ft cantilevered cedar and blackened steel retreat with panoramic mountain views and private helipad.\n </p>\n </div>\n\n <div className=\"p-6 rounded-2xl border border-white/10 bg-[#14161f] flex flex-col sm:flex-row justify-between items-center gap-4\">\n <div>\n <div className=\"text-xs text-zinc-400\">Nightly Rate: $2,450 USD</div>\n <div className=\"text-2xl font-serif font-bold mt-0.5\">\n \\${(baseRate * nights).toLocaleString()} USD <span className=\"text-xs font-sans font-normal text-zinc-400\">({nights} nights)</span>\n </div>\n </div>\n <button className=\"px-6 py-3 rounded-xl text-xs font-serif uppercase tracking-wider font-bold bg-white text-black hover:bg-zinc-200 shadow-md\">\n Reserve Residence\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateUptimeStatus = {\n name: \"template-uptime-status\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-uptime-status.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { CheckCircle2, ShieldCheck, Server, Bell, Globe } from \"lucide-react\";\n\nexport default function UptimeStatusTemplate() {\n const services = [\n { name: \"Global Anycast Edge CDN\", uptime: \"100.0%\", ping: \"11ms\" },\n { name: \"Authentication Engine & SSO\", uptime: \"99.99%\", ping: \"24ms\" },\n { name: \"Distributed Vector Indexing\", uptime: \"99.97%\", ping: \"38ms\" },\n { name: \"PostgreSQL Database Clusters\", uptime: \"99.95%\", ping: \"14ms\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <div className=\"flex items-center gap-2 font-bold text-base\">\n <ShieldCheck className=\"h-5 w-5 text-emerald-500\" />\n <span>Beacon Status</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10 flex items-center gap-1.5\">\n <Bell className=\"h-3.5 w-3.5\" />\n <span>Subscribe</span>\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-10 space-y-6\">\n <div className=\"p-5 rounded-2xl border border-emerald-500/30 bg-emerald-500/10 flex items-center justify-between text-xs text-emerald-400 font-semibold\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle2 className=\"h-5 w-5\" />\n <span>All Core Services Operational — 99.994% Availability</span>\n </div>\n <span className=\"font-mono\">Past 90 Days</span>\n </div>\n\n <div className=\"space-y-3\">\n {services.map((s) => (\n <div key={s.name} className=\"p-4 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <div>\n <div className=\"font-bold\">{s.name}</div>\n <div className=\"text-[10px] text-zinc-400 font-mono\">Latency: {s.ping}</div>\n </div>\n <span className=\"text-xs font-mono font-bold text-emerald-400\">{s.uptime}</span>\n </div>\n ))}\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateAgentWorkflow = {\n name: \"template-agent-workflow\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-agent-workflow.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Play, Zap, Database, Cpu, Send, CheckCircle2 } from \"lucide-react\";\n\nexport default function AgentWorkflowTemplate() {\n const [isRunning, setIsRunning] = useState(false);\n const [log, setLog] = useState<string | null>(null);\n\n const handleRun = () => {\n setIsRunning(true);\n setLog(\"Trigger received. Querying vector database...\");\n setTimeout(() => {\n setLog(\"Claude 3.5 Sonnet generated solution. Dispatching webhook...\");\n setTimeout(() => {\n setIsRunning(false);\n setLog(\"✓ Execution completed in 680ms. Payload delivered.\");\n }, 700);\n }, 800);\n };\n\n return (\n <div className=\"min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-bold text-base\">Nexus Nodes Canvas</span>\n <button\n onClick={handleRun}\n disabled={isRunning}\n className=\"px-4 py-2 rounded-xl text-xs font-bold text-white bg-blue-600 hover:bg-blue-500 flex items-center gap-2 shadow-md\"\n >\n <Play className=\"h-3.5 w-3.5 fill-current\" />\n <span>{isRunning ? \"Running...\" : \"Test Workflow\"}</span>\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-4 gap-3\">\n {[\n { name: \"Webhook Ingress\", icon: Zap, color: \"text-amber-400\" },\n { name: \"Pinecone Retrieval\", icon: Database, color: \"text-cyan-400\" },\n { name: \"Claude 3.5 Reasoning\", icon: Cpu, color: \"text-blue-400\" },\n { name: \"Slack Dispatcher\", icon: Send, color: \"text-emerald-400\" },\n ].map((n) => {\n const Icon = n.icon;\n return (\n <div key={n.name} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c] space-y-2 text-xs\">\n <Icon className={\\`h-4 w-4 \\${n.color}\\`} />\n <div className=\"font-bold\">{n.name}</div>\n </div>\n );\n })}\n </div>\n\n {log && (\n <div className=\"p-4 rounded-xl border border-white/10 bg-[#06070a] font-mono text-xs text-blue-400\">\n {log}\n </div>\n )}\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateRestaurantCulinary = {\n name: \"template-restaurant-culinary\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-restaurant-culinary.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Utensils, Calendar, Users, Award, Wine } from \"lucide-react\";\n\nexport default function RestaurantCulinaryTemplate() {\n const [guests, setGuests] = useState(2);\n const [confirmed, setConfirmed] = useState(false);\n\n return (\n <div className=\"min-h-screen bg-[#0e0d0b] text-[#f5f2eb] font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-[#2e2b24]\">\n <div>\n <span className=\"text-[10px] uppercase font-mono tracking-widest text-amber-500\">Komorebi Gastronomy</span>\n <h1 className=\"text-xl font-serif\">Contemporary Seasonal Dining</h1>\n </div>\n <div className=\"flex items-center gap-1.5 text-xs text-amber-500 font-serif\">\n <Award className=\"h-4 w-4\" />\n <span>Two Michelin Stars</span>\n </div>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-8\">\n <div className=\"space-y-2 text-center\">\n <h2 className=\"text-3xl sm:text-4xl font-serif font-light\">Autumn Tasting Menu (8 Courses)</h2>\n <p className=\"text-xs text-[#b8b3a5] max-w-xl mx-auto\">\n Hokkaido sea urchin, wild matsutake, and binchotan-charred Miyazaki A5 wagyu tenderloin.\n </p>\n </div>\n\n <div className=\"p-6 rounded-3xl border border-[#2e2b24] bg-[#171512] max-w-md mx-auto space-y-4\">\n <div className=\"font-serif font-bold text-sm\">Table Reservation</div>\n <div className=\"flex gap-2\">\n {[2, 4, 6].map((g) => (\n <button\n key={g}\n onClick={() => setGuests(g)}\n className={\\`flex-1 py-2 rounded-xl border text-xs font-serif \\${\n guests === g ? \"bg-amber-700 text-white border-amber-700\" : \"border-[#2e2b24] text-[#b8b3a5]\"\n }\\`}\n >\n {g} Guests\n </button>\n ))}\n </div>\n\n <button\n onClick={() => setConfirmed(true)}\n className=\"w-full py-3 rounded-xl font-serif uppercase tracking-widest text-xs font-bold text-white bg-amber-700 hover:bg-amber-600 shadow-lg\"\n >\n {confirmed ? \"Table Reserved ✓\" : \"Reserve Table for \" + guests}\n </button>\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateHelpCenter = {\n name: \"template-help-center\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-help-center.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Search, LifeBuoy, CreditCard, ShieldCheck, Code2, ChevronDown } from \"lucide-react\";\n\nexport default function HelpCenterTemplate() {\n const [query, setQuery] = useState(\"\");\n\n const categories = [\n { title: \"Getting Started\", icon: LifeBuoy, count: \"14 articles\" },\n { title: \"Billing & Invoicing\", icon: CreditCard, count: \"9 articles\" },\n { title: \"Security & 2FA\", icon: ShieldCheck, count: \"18 articles\" },\n { title: \"Developer API\", icon: Code2, count: \"22 articles\" },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-12\">\n <header className=\"max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10\">\n <span className=\"font-bold text-base\">Resolv Support Desk</span>\n <button className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold bg-indigo-600 hover:bg-indigo-500 text-white shadow-md\">\n Submit Ticket\n </button>\n </header>\n\n <main className=\"max-w-4xl mx-auto py-12 space-y-8 text-center\">\n <h1 className=\"text-3xl sm:text-4xl font-extrabold\">How can our support team help you?</h1>\n\n <div className=\"max-w-md mx-auto relative\">\n <Search className=\"absolute left-3.5 top-3 h-4 w-4 opacity-50\" />\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search guides, 2FA, billing...\"\n className=\"w-full pl-10 pr-4 py-2.5 rounded-xl border border-white/10 bg-[#12141c] text-xs outline-none\"\n />\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4 text-left\">\n {categories.map((c) => {\n const Icon = c.icon;\n return (\n <div key={c.title} className=\"p-4 rounded-2xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-xl bg-indigo-500/10 text-indigo-400\">\n <Icon className=\"h-4 w-4\" />\n </div>\n <div>\n <div className=\"font-bold\">{c.title}</div>\n <div className=\"text-[10px] text-zinc-400\">{c.count}</div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </main>\n </div>\n );\n}\n`,\n};\n","export const templateFitnessAthletics = {\n name: \"template-fitness-athletics\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-fitness-athletics.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Activity, Heart, Flame, Trophy, Timer, Plus, CheckCircle2 } from \"lucide-react\";\n\nexport default function FitnessAthleticsTemplate() {\n const [bpm, setBpm] = useState(158);\n const [intervals, setIntervals] = useState([\n { title: \"Dynamic Hip Mobility\", target: \"10 min • Zone 1\", done: true },\n { title: \"Progressive Aerobic Build\", target: \"15 min @ 140 BPM\", done: true },\n { title: \"4 x 1,000m Lactate Repeats\", target: \"4 reps @ 3:42/km\", done: false },\n ]);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Activity className=\"w-5 h-5 text-rose-500\" />\n <span className=\"font-bold text-base\">AeroPulse Athletics</span>\n </div>\n <div className=\"text-xs font-mono px-3 py-1.5 rounded-full border\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n Recovery: 88% Ready\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Daily Strain</span>\n <div className=\"text-2xl font-extrabold mt-1\">14.8 / 21.0</div>\n </div>\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Current Target BPM</span>\n <div className=\"text-2xl font-extrabold text-indigo-600 mt-1\">{bpm} BPM</div>\n </div>\n <div className=\"p-4 rounded-xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs opacity-70\">Resting Heart Rate</span>\n <div className=\"text-2xl font-extrabold text-emerald-600 mt-1\">48 bpm</div>\n </div>\n </div>\n\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Cardio Zone Spectrum</h3>\n <input\n type=\"range\"\n min=\"100\"\n max=\"195\"\n value={bpm}\n onChange={(e) => setBpm(Number(e.target.value))}\n className=\"w-full accent-indigo-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateWildernessTravel = {\n name: \"template-wilderness-travel\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-wilderness-travel.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Compass, Mountain, Scale, Radio, Tent } from \"lucide-react\";\n\nexport default function WildernessTravelTemplate() {\n const [baseWeight, setBaseWeight] = useState(6.4);\n const [foodDays, setFoodDays] = useState(6);\n const totalWeight = (baseWeight + foodDays * 0.75 + 2.0).toFixed(1);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Compass className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">NomadRoute Expeditions</span>\n </div>\n <button className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-emerald-600\">\n Reserve Permits\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-xl font-extrabold mb-1\">Patagonia High Icefield Crossing</h2>\n <p className=\"text-xs opacity-70\">148 km • +6,850m Cumulative Gain • 8 Days</p>\n </div>\n\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"font-bold text-sm\">Skin-Out Pack Weight: {totalWeight} kg</h3>\n <span className=\"text-xs px-2 py-0.5 rounded bg-emerald-500/10 text-emerald-600 font-bold\">Ultralight Load</span>\n </div>\n <input\n type=\"range\"\n min=\"4.0\"\n max=\"12.0\"\n step=\"0.2\"\n value={baseWeight}\n onChange={(e) => setBaseWeight(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateDevopsKubernetes = {\n name: \"template-devops-kubernetes\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-devops-kubernetes.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Server, Cpu, Database, Terminal, Search, SlidersHorizontal } from \"lucide-react\";\n\nexport default function DevopsKubernetesTemplate() {\n const [canary, setCanary] = useState(15);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Server className=\"w-5 h-5 text-indigo-600\" />\n <span className=\"font-bold text-base\">KubeOrbit Cloud</span>\n </div>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 border border-emerald-500/20 font-mono\">\n 242/248 Pods Healthy\n </span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border font-sans\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Canary Ingress Weight: {canary}%</h3>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={canary}\n onChange={(e) => setCanary(Number(e.target.value))}\n className=\"w-full accent-indigo-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateAudioDaw = {\n name: \"template-audio-daw\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-audio-daw.tsx\",\n content: `\"use client\";\n\nimport React, { useState, useEffect } from \"react\";\nimport { Play, Pause, Disc, Sliders, Volume2, ShoppingBag } from \"lucide-react\";\n\nexport default function AudioDawTemplate() {\n const [isPlaying, setIsPlaying] = useState(false);\n const [bpm, setBpm] = useState(140);\n const [step, setStep] = useState(0);\n\n useEffect(() => {\n let interval: NodeJS.Timeout;\n if (isPlaying) {\n interval = setInterval(() => setStep((s) => (s + 1) % 16), (60 / bpm / 4) * 1000);\n }\n return () => clearInterval(interval);\n }, [isPlaying, bpm]);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Disc className=\"w-5 h-5 text-purple-600\" />\n <span className=\"font-bold text-base\">SoundForge Studio</span>\n </div>\n <button onClick={() => setIsPlaying(!isPlaying)} className=\"px-4 py-2 rounded-xl text-xs font-semibold text-white bg-purple-600 flex items-center gap-1.5\">\n {isPlaying ? <Pause className=\"w-3.5 h-3.5\" /> : <Play className=\"w-3.5 h-3.5\" />}\n <span>{isPlaying ? \"Pause\" : \"Play Groove\"}</span>\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex justify-between items-center mb-4\">\n <h3 className=\"font-bold text-sm\">16-Step Beat Grid ({bpm} BPM)</h3>\n <span className=\"font-mono text-xs opacity-60\">Step {step + 1} / 16</span>\n </div>\n <div className=\"grid grid-cols-16 gap-1\">\n {Array.from({ length: 16 }).map((_, i) => (\n <div key={i} className={\\`h-10 rounded border \\${step === i && isPlaying ? \"bg-purple-600 text-white\" : \"bg-zinc-100 dark:bg-zinc-800\"}\\`} />\n ))}\n </div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGamifiedHabits = {\n name: \"template-gamified-habits\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-gamified-habits.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Shield, Sword, Sparkles, Coins, Flame, CheckCircle2 } from \"lucide-react\";\n\nexport default function GamifiedHabitsTemplate() {\n const [xp, setXp] = useState(2450);\n const [gold, setGold] = useState(1420);\n const [quests, setQuests] = useState([\n { id: 1, title: \"Slay 90m Deep Focus Work Block\", xp: 180, done: false },\n { id: 2, title: \"Drink 2.5L Water Elixir\", xp: 60, done: true },\n ]);\n\n const toggle = (id: number, questXp: number) => {\n setQuests((prev) =>\n prev.map((q) => {\n if (q.id === id && !q.done) {\n setXp((x) => x + questXp);\n setGold((g) => g + 40);\n return { ...q, done: true };\n }\n return q;\n })\n );\n };\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Shield className=\"w-5 h-5 text-amber-500\" />\n <span className=\"font-bold text-base\">QuestCraft RPG</span>\n </div>\n <div className=\"text-xs font-mono font-bold text-amber-500 flex items-center gap-1\">\n <Coins className=\"w-3.5 h-3.5\" />\n <span>{gold} Gold</span>\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"font-extrabold text-base mb-1\">Level 14 Paladin • {xp} / 3,000 XP</h2>\n <div className=\"w-full h-2 bg-zinc-200 dark:bg-zinc-800 rounded-full overflow-hidden\">\n <div className=\"h-full bg-amber-500\" style={{ width: \\`\\${(xp / 3000) * 100}%\\` }} />\n </div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGlobalLogistics = {\n name: \"template-global-logistics\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-global-logistics.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Ship, Truck, Thermometer, Anchor, Navigation } from \"lucide-react\";\n\nexport default function GlobalLogisticsTemplate() {\n const [activeStage, setActiveStage] = useState(2);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Anchor className=\"w-5 h-5 text-cyan-600\" />\n <span className=\"font-bold text-base\">Vanguard Logistics</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">14 Vessels Active</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <span className=\"text-xs font-mono opacity-60\">MASTER BILL OF LADING</span>\n <h2 className=\"text-xl font-extrabold font-mono mt-1\">BOL-849204-HKG</h2>\n <p className=\"text-xs opacity-70 mt-1\">Shenzhen (YTN) &rarr; Rotterdam Gateway (RTM)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateGamingEsports = {\n name: \"template-gaming-esports\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-gaming-esports.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Trophy, Tv, Users, Target, Crown } from \"lucide-react\";\n\nexport default function GamingEsportsTemplate() {\n const [votes, setVotes] = useState(64);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Trophy className=\"w-5 h-5 text-rose-500\" />\n <span className=\"font-bold text-base\">Valkyrie Esports</span>\n </div>\n <span className=\"text-xs font-bold text-rose-500 font-mono\">LIVE • 284k Viewers</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border flex items-center justify-between\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"font-extrabold text-lg\">Sentinels (11)</div>\n <div className=\"font-mono text-xs opacity-60\">Map 5 Inferno</div>\n <div className=\"font-extrabold text-lg\">Cloud9 (9)</div>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateArchitectureSpatial = {\n name: \"template-architecture-spatial\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-architecture-spatial.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Layers, Sun, Building, FileText } from \"lucide-react\";\n\nexport default function ArchitectureSpatialTemplate() {\n const [hour, setHour] = useState(13);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Building className=\"w-5 h-5 text-amber-600\" />\n <span className=\"font-bold text-base\">Arcform Spatial</span>\n </div>\n <span className=\"text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 font-mono\">\n LEED Platinum • 620 m²\n </span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Solar Daylight Azimuth ({hour}:00 JST)</h3>\n <input\n type=\"range\"\n min=\"8\"\n max=\"18\"\n value={hour}\n onChange={(e) => setHour(Number(e.target.value))}\n className=\"w-full accent-amber-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCybersecuritySoc = {\n name: \"template-cybersecurity-soc\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-cybersecurity-soc.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ShieldAlert, Terminal, Lock, CheckCircle2 } from \"lucide-react\";\n\nexport default function CybersecuritySocTemplate() {\n const [quarantined, setQuarantined] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <ShieldAlert className=\"w-5 h-5 text-rose-600\" />\n <span className=\"font-bold text-base\">Aegis SOC</span>\n </div>\n <button\n onClick={() => setQuarantined(!quarantined)}\n className={\\`px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white \\${quarantined ? \"bg-gray-600\" : \"bg-rose-600\"}\\`}\n >\n {quarantined ? \"Host Air-Gapped\" : \"Isolate Host\"}\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-rose-600 font-bold mb-1\">CRITICAL • MITRE T1021.002</div>\n <h2 className=\"text-base font-extrabold font-sans\">Pass-the-Hash Lateral Movement via SMB</h2>\n <p className=\"text-xs opacity-70 mt-1\">Target Host: srv-dc-primary-01.internal (10.240.12.8)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCleantechAgriculture = {\n name: \"template-cleantech-agriculture\",\n dependencies: [\"framer-motion\", \"lucide-react\"],\n fileName: \"template-cleantech-agriculture.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Sprout, Droplets, Sun, Wind, Leaf } from \"lucide-react\";\n\nexport default function CleantechAgricultureTemplate() {\n const [ph, setPh] = useState(6.2);\n const [red, setRed] = useState(65);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Sprout className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">Verdant IoT</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">98.4% Water Recycled</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Hydroponic pH Level: {ph}</h3>\n <input\n type=\"range\"\n min=\"5.5\"\n max=\"7.0\"\n step=\"0.1\"\n value={ph}\n onChange={(e) => setPh(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateJurisVault = {\n name: \"template-juris-vault\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-juris-vault.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Scale, FileText, CheckCircle2, AlertTriangle, PenTool } from \"lucide-react\";\n\nexport default function JurisVaultTemplate() {\n const [signed, setSigned] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Scale className=\"w-5 h-5 text-indigo-600\" />\n <span className=\"font-bold text-base\">JurisVault AI</span>\n </div>\n <button\n onClick={() => setSigned(true)}\n className=\"px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-indigo-600 transition-opacity hover:opacity-90\"\n >\n {signed ? \"Executed & Signed\" : \"Approve & E-Sign\"}\n </button>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-rose-600 font-bold mb-1\">CRITICAL RISK • SEC-8.2</div>\n <h2 className=\"text-base font-bold\">Limitation of Liability & Consequential Damages</h2>\n <p className=\"text-xs opacity-70 mt-2\">Counterparty proposes uncapped liability. Recommended: Insert 2x ACV fallback clause.</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateOrbitalxMission = {\n name: \"template-orbitalx-mission\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-orbitalx-mission.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Satellite, Radio, Compass, Zap, Terminal } from \"lucide-react\";\n\nexport default function OrbitalXTemplate() {\n const [armed, setArmed] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b font-sans\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Satellite className=\"w-5 h-5 text-blue-600\" />\n <span className=\"font-bold text-base\">OrbitalX Operations</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-500 font-bold\">AOS in 04m 12s</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs opacity-60\">ORBITAL VELOCITY: 7.58 km/s • LEO 545 km</div>\n <h2 className=\"text-base font-bold font-sans mt-1\">AstraConstellation-07 (NORAD 58210)</h2>\n <p className=\"text-xs opacity-75 mt-2\">Propellant: 78.4% Hydrazine • Solar: 1,420 W Nominal</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateCineboardStudio = {\n name: \"template-cineboard-studio\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-cineboard-studio.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Clapperboard, Film, Camera, Video } from \"lucide-react\";\n\nexport default function CineBoardTemplate() {\n const [ratio, setRatio] = useState(\"2.39:1\");\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Clapperboard className=\"w-5 h-5 text-rose-600\" />\n <span className=\"font-bold text-base\">CineBoard Studio</span>\n </div>\n <div className=\"text-xs font-mono font-bold bg-rose-600/10 text-rose-600 px-2 py-1 rounded\">\n Framing: {ratio}\n </div>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">SCENE 14A • SHOT 01 (EXT. HIGHWAY DUSK)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Cooke Anamorphic 40mm T2.3 • Drone Push-In (3.2m/s)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateDomusLiving = {\n name: \"template-domus-living\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-domus-living.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Home, Thermometer, Sun, Zap, ShieldCheck } from \"lucide-react\";\n\nexport default function DomusLivingTemplate() {\n const [temp, setTemp] = useState(21.5);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Home className=\"w-5 h-5 text-emerald-600\" />\n <span className=\"font-bold text-base\">Domus Living</span>\n </div>\n <span className=\"text-xs font-semibold text-emerald-600\">Perimeter Armed</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h3 className=\"font-bold text-sm mb-2\">Living Pavilion Climate: {temp}°C</h3>\n <input\n type=\"range\"\n min=\"18.0\"\n max=\"26.0\"\n step=\"0.5\"\n value={temp}\n onChange={(e) => setTemp(parseFloat(e.target.value))}\n className=\"w-full accent-emerald-600\"\n />\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateHyperionEv = {\n name: \"template-hyperion-ev\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-hyperion-ev.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Car, BatteryCharging, Zap, Gauge } from \"lucide-react\";\n\nexport default function HyperionEvTemplate() {\n const [soc, setSoc] = useState(74);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Car className=\"w-5 h-5 text-cyan-600\" />\n <span className=\"font-bold text-base\">Hyperion Fleet EV</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-cyan-600\">{soc}% SoC</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">Hyperion Freight Hauler Max (CA-941-EV)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Usable Capacity: 210 kWh / 280 kWh • 780V Architecture</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateSovereignAuctions = {\n name: \"template-sovereign-auctions\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-sovereign-auctions.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Gavel, ShieldCheck, DollarSign, Award } from \"lucide-react\";\n\nexport default function SovereignAuctionsTemplate() {\n const [bid, setBid] = useState(2450000);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Gavel className=\"w-5 h-5 text-amber-600\" />\n <span className=\"font-bold text-base\">Sovereign Auctions</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-amber-600\">\\${bid.toLocaleString()}</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs opacity-60\">LOT 24 • EVENING SALE LONDON</div>\n <h2 className=\"text-base font-bold mt-1\">Composition in Cadmium & Cobalt Resonance, 1988</h2>\n <button\n onClick={() => setBid(bid + 50000)}\n className=\"mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-amber-600 transition-opacity hover:opacity-90\"\n >\n Raise Bid +$50,000\n </button>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateScholarisArchive = {\n name: \"template-scholaris-archive\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-scholaris-archive.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { BookOpen, FileText, Download, Award } from \"lucide-react\";\n\nexport default function ScholarisArchiveTemplate() {\n const [copied, setCopied] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <BookOpen className=\"w-5 h-5 text-sky-600\" />\n <span className=\"font-bold text-base\">Scholaris Archive</span>\n </div>\n <span className=\"text-xs font-mono text-emerald-600 font-bold\">Reproducibility: 9.8/10</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs text-sky-600 font-mono font-bold mb-1\">DOI: 10.1038/s41586-026-09214-x</div>\n <h2 className=\"text-base font-bold\">Sub-Quadratic Attention via Orthogonal State Space Projections</h2>\n <p className=\"text-xs opacity-75 mt-2\">Dr. Evelyn Zhao (Stanford) • Prof. Kenneth Sterling (MIT)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateTalentorbitHr = {\n name: \"template-talentorbit-hr\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-talentorbit-hr.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Users, Calendar, Award, MapPin } from \"lucide-react\";\n\nexport default function TalentOrbitTemplate() {\n const [ptoDays, setPtoDays] = useState(18);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Users className=\"w-5 h-5 text-violet-600\" />\n <span className=\"font-bold text-base\">TalentOrbit HR</span>\n </div>\n <span className=\"text-xs font-semibold text-violet-600\">{ptoDays} Days PTO Left</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <h2 className=\"text-base font-bold\">Sophia Lindqvist • VP of Engineering</h2>\n <p className=\"text-xs opacity-70 mt-1\">Stockholm (UTC+1) • 24 Direct Reports • Top Performer (9-Box 1A)</p>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateMiseenplaceKds = {\n name: \"template-miseenplace-kds\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-miseenplace-kds.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { UtensilsCrossed, Flame, Clock, Check } from \"lucide-react\";\n\nexport default function MiseEnPlaceTemplate() {\n const [bumped, setBumped] = useState(false);\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <UtensilsCrossed className=\"w-5 h-5 text-orange-600\" />\n <span className=\"font-bold text-base\">MiseEnPlace KDS</span>\n </div>\n <span className=\"text-xs font-mono font-bold text-orange-600\">3 ACTIVE ORDERS</span>\n </header>\n\n <main className=\"py-8 space-y-6\">\n <div className=\"p-6 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"text-xs font-mono font-bold text-rose-600 mb-1\">TABLE 12 • 04:15 ELAPSED</div>\n <h2 className=\"text-base font-bold\">2x 45-Day Dry Aged Ribeye (Med-Rare)</h2>\n <p className=\"text-xs opacity-75 mt-1\">Station: GRILL • Extra flaky Maldon salt</p>\n <button\n onClick={() => setBumped(true)}\n className=\"mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-orange-600 transition-opacity hover:opacity-90\"\n >\n {bumped ? \"Order Bumped\" : \"Bump Order\"}\n </button>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","export const templateAurasolaceSanctuary = {\n name: \"template-aurasolace-sanctuary\",\n dependencies: [\"lucide-react\"],\n fileName: \"template-aurasolace-sanctuary.tsx\",\n content: `\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Heart, Wind, Volume2, Sparkles } from \"lucide-react\";\n\nexport default function AuraSolaceTemplate() {\n const [phase, setPhase] = useState(\"Inhale (4s)\");\n\n return (\n <div\n className=\"min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto\"\n style={{\n backgroundColor: \"var(--template-bg, #ffffff)\",\n color: \"var(--template-fg, #0f172a)\",\n }}\n >\n <header className=\"flex justify-between items-center pb-6 border-b\" style={{ borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"flex items-center gap-2\">\n <Heart className=\"w-5 h-5 text-teal-600\" />\n <span className=\"font-bold text-base\">AuraSolace Sanctuary</span>\n </div>\n <span className=\"text-xs font-semibold text-teal-600\">Peaceful Grounded</span>\n </header>\n\n <main className=\"py-8 space-y-6 text-center\">\n <div className=\"p-8 rounded-2xl border\" style={{ backgroundColor: \"var(--template-surface, #f8f9fa)\", borderColor: \"var(--template-border, #e2e8f0)\" }}>\n <div className=\"w-32 h-32 rounded-full border-2 border-teal-500 mx-auto flex items-center justify-center font-bold text-xs text-teal-600\">\n {phase}\n </div>\n <h2 className=\"text-base font-bold mt-4\">Parasympathetic Nervous System Regulation</h2>\n </div>\n </main>\n </div>\n );\n}`,\n};\n","import { button } from './button';\nimport { modal } from './modal';\nimport { card } from './card';\nimport { alert } from './alert';\nimport { badge } from './badge';\nimport { morphingGeometry } from './morphing-geometry';\nimport { auroraBorderFX } from './aurora-border-fx';\nimport { auroraSearchPill } from './aurora-search-pill';\nimport { templateAiStartup } from './template-ai-startup';\nimport { templateModernSaas } from './template-modern-saas';\nimport { templateAnalyticsDashboard } from './template-analytics-dashboard';\nimport { templateDevtoolsCli } from './template-devtools-cli';\nimport { templateCreativePortfolio } from './template-creative-portfolio';\nimport { templateFintechApp } from './template-fintech-app';\nimport { templateEcommerceStore } from './template-ecommerce-store';\nimport { templateAgencyCreative } from './template-agency-creative';\nimport { templateAiChat } from './template-ai-chat';\nimport { templateProjectManagement } from './template-project-management';\nimport { templateStartupWaitlist } from './template-startup-waitlist';\nimport { templateDocsPlatform } from './template-docs-platform';\nimport { templateHealthcarePortal } from './template-healthcare-portal';\nimport { templateWeb3Dex } from './template-web3-dex';\nimport { templateEdtechLearning } from './template-edtech-learning';\nimport { templateConferenceEvent } from './template-conference-event';\nimport { templateAudioPodcast } from './template-audio-podcast';\nimport { templateRealEstate } from './template-real-estate';\nimport { templateUptimeStatus } from './template-uptime-status';\nimport { templateAgentWorkflow } from './template-agent-workflow';\nimport { templateRestaurantCulinary } from './template-restaurant-culinary';\nimport { templateHelpCenter } from './template-help-center';\nimport { templateFitnessAthletics } from './template-fitness-athletics';\nimport { templateWildernessTravel } from './template-wilderness-travel';\nimport { templateDevopsKubernetes } from './template-devops-kubernetes';\nimport { templateAudioDaw } from './template-audio-daw';\nimport { templateGamifiedHabits } from './template-gamified-habits';\nimport { templateGlobalLogistics } from './template-global-logistics';\nimport { templateGamingEsports } from './template-gaming-esports';\nimport { templateArchitectureSpatial } from './template-architecture-spatial';\nimport { templateCybersecuritySoc } from './template-cybersecurity-soc';\nimport { templateCleantechAgriculture } from './template-cleantech-agriculture';\nimport { templateJurisVault } from './template-juris-vault';\nimport { templateOrbitalxMission } from './template-orbitalx-mission';\nimport { templateCineboardStudio } from './template-cineboard-studio';\nimport { templateDomusLiving } from './template-domus-living';\nimport { templateHyperionEv } from './template-hyperion-ev';\nimport { templateSovereignAuctions } from './template-sovereign-auctions';\nimport { templateScholarisArchive } from './template-scholaris-archive';\nimport { templateTalentorbitHr } from './template-talentorbit-hr';\nimport { templateMiseenplaceKds } from './template-miseenplace-kds';\nimport { templateAurasolaceSanctuary } from './template-aurasolace-sanctuary';\n\nexport interface RegistryItem {\n name: string;\n dependencies: string[];\n componentsDependencies?: string[];\n fileName: string;\n content: string;\n}\n\nexport const registry: Record<string, RegistryItem> = {\n button,\n modal,\n card,\n alert,\n badge,\n 'morphing-geometry': morphingGeometry,\n 'aurora-border-fx': auroraBorderFX,\n 'aurora-search-pill': auroraSearchPill,\n 'template-ai-startup': templateAiStartup,\n 'template-modern-saas': templateModernSaas,\n 'template-analytics-dashboard': templateAnalyticsDashboard,\n 'template-devtools-cli': templateDevtoolsCli,\n 'template-creative-portfolio': templateCreativePortfolio,\n 'template-fintech-app': templateFintechApp,\n 'template-ecommerce-store': templateEcommerceStore,\n 'template-agency-creative': templateAgencyCreative,\n 'template-ai-chat': templateAiChat,\n 'template-project-management': templateProjectManagement,\n 'template-startup-waitlist': templateStartupWaitlist,\n 'template-docs-platform': templateDocsPlatform,\n 'template-healthcare-portal': templateHealthcarePortal,\n 'template-web3-dex': templateWeb3Dex,\n 'template-edtech-learning': templateEdtechLearning,\n 'template-conference-event': templateConferenceEvent,\n 'template-audio-podcast': templateAudioPodcast,\n 'template-real-estate': templateRealEstate,\n 'template-uptime-status': templateUptimeStatus,\n 'template-agent-workflow': templateAgentWorkflow,\n 'template-restaurant-culinary': templateRestaurantCulinary,\n 'template-help-center': templateHelpCenter,\n 'template-fitness-athletics': templateFitnessAthletics,\n 'template-wilderness-travel': templateWildernessTravel,\n 'template-devops-kubernetes': templateDevopsKubernetes,\n 'template-audio-daw': templateAudioDaw,\n 'template-gamified-habits': templateGamifiedHabits,\n 'template-global-logistics': templateGlobalLogistics,\n 'template-gaming-esports': templateGamingEsports,\n 'template-architecture-spatial': templateArchitectureSpatial,\n 'template-cybersecurity-soc': templateCybersecuritySoc,\n 'template-cleantech-agriculture': templateCleantechAgriculture,\n 'template-juris-vault': templateJurisVault,\n 'template-orbitalx-mission': templateOrbitalxMission,\n 'template-cineboard-studio': templateCineboardStudio,\n 'template-domus-living': templateDomusLiving,\n 'template-hyperion-ev': templateHyperionEv,\n 'template-sovereign-auctions': templateSovereignAuctions,\n 'template-scholaris-archive': templateScholarisArchive,\n 'template-talentorbit-hr': templateTalentorbitHr,\n 'template-miseenplace-kds': templateMiseenplaceKds,\n 'template-aurasolace-sanctuary': templateAurasolaceSanctuary,\n};\n\n\n\n","import { registry } from '../registry/index.js';\r\n\r\nexport function listCommand() {\r\n console.log('\\n\\x1b[34m\\x1b[1m=== Available NexoreUI Components ===\\x1b[0m\\n');\r\n \r\n Object.keys(registry).forEach((name) => {\r\n const item = registry[name];\r\n console.log(`- \\x1b[32m\\x1b[1m${name}\\x1b[0m (${item.fileName})`);\r\n if (item.dependencies.length > 0) {\r\n console.log(` \\x1b[90mDependencies: ${item.dependencies.join(', ')}\\x1b[0m`);\r\n }\r\n if (item.componentsDependencies && item.componentsDependencies.length > 0) {\r\n console.log(` \\x1b[33mRequires component: ${item.componentsDependencies.join(', ')}\\x1b[0m`);\r\n }\r\n console.log('');\r\n });\r\n}\r\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { detectProject } from '../utils/detect.js';\nimport { ensureCnUtil, ensureDir } from '../utils/copy.js';\nimport { ensurePathAlias, injectThemeCss, installPeerDependencies, THEME_PALETTES } from '../utils/config.js';\n\nfunction askQuestion(query: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n return new Promise((resolve) =>\n rl.question(query, (ans) => {\n rl.close();\n resolve(ans);\n })\n );\n}\n\nexport interface InitOptions {\n yes?: boolean;\n theme?: string;\n radius?: string;\n install?: boolean;\n}\n\nexport async function initCommand(options: InitOptions = {}) {\n console.log(`\\n\\x1b[36m\\x1b[1m=== Initializing NexoreUI in your project ===\\x1b[0m\\n`);\n\n const project = detectProject(process.cwd());\n console.log(`\\x1b[32m✔ Detected Project:\\x1b[0m ${project.projectType.toUpperCase()} (${project.packageManager})`);\n\n let theme = options.theme || 'cyan';\n let radius = options.radius || '1.0';\n const defaultComponentsDir = project.hasSrcDir ? 'src/components/ui' : 'components/ui';\n const defaultUtilsFile = project.hasSrcDir ? 'src/lib/utils.ts' : 'lib/utils.ts';\n const defaultCssFile = project.projectType === 'next' \n ? (project.hasSrcDir ? 'src/app/globals.css' : 'app/globals.css') \n : (project.hasSrcDir ? 'src/index.css' : 'src/index.css');\n\n let componentsDir = defaultComponentsDir;\n let utilsFile = defaultUtilsFile;\n\n if (!options.yes) {\n if (!options.theme) {\n const themeAns = await askQuestion(`Which color theme would you like to use? (cyan, indigo, violet, emerald, rose, amber, slate, neon) [default: cyan]: `);\n if (themeAns.trim() && THEME_PALETTES[themeAns.trim().toLowerCase()]) {\n theme = themeAns.trim().toLowerCase();\n }\n }\n\n if (!options.radius) {\n const radiusAns = await askQuestion(`Which radius value would you like to use? (0, 0.3, 0.5, 0.75, 1.0) [default: 1.0]: `);\n if (radiusAns.trim()) {\n radius = radiusAns.trim();\n }\n }\n\n const compAns = await askQuestion(`Where should UI components be created? (default: ${defaultComponentsDir}): `);\n if (compAns.trim()) componentsDir = compAns.trim();\n\n const utilsAns = await askQuestion(`Where should utility functions (cn helper) be placed? (default: ${defaultUtilsFile}): `);\n if (utilsAns.trim()) utilsFile = utilsAns.trim();\n }\n\n const absoluteComponentsDir = path.resolve(project.baseDir, componentsDir);\n const absoluteUtilsFile = path.resolve(project.baseDir, utilsFile);\n\n // 1. Ensure directories & cn helper\n ensureDir(absoluteComponentsDir);\n ensureCnUtil(absoluteUtilsFile);\n\n // 2. Configure Path Aliases (@/) automatically\n const didUpdateAlias = ensurePathAlias(project.baseDir, project.projectType, project.hasSrcDir);\n if (didUpdateAlias) {\n console.log(`\\x1b[32m✔\\x1b[0m Configured path alias \\x1b[1m'@/*'\\x1b[0m in project config`);\n }\n\n // 3. Inject Tailwind CSS v4 source & theme variables\n const didInjectCss = injectThemeCss(project.baseDir, defaultCssFile, theme, radius);\n if (didInjectCss) {\n console.log(`\\x1b[32m✔\\x1b[0m Injected Tailwind CSS v4 @theme tokens into \\x1b[1m${defaultCssFile}\\x1b[0m`);\n }\n\n // 4. Install peer dependencies automatically\n installPeerDependencies(project.baseDir, project.packageManager);\n\n // 5. Write nexore.json config\n const config = {\n $schema: \"https://nexoreui.site/schema.json\",\n style: \"default\",\n theme: theme,\n radius: Number(radius),\n framework: project.projectType,\n packageManager: project.packageManager,\n font: \"system\",\n density: \"default\",\n animation: \"energetic\",\n defaultMode: \"light\",\n tailwind: {\n config: \"tailwind.config.js\",\n css: defaultCssFile,\n baseColor: \"zinc\",\n cssVariables: true,\n },\n aliases: {\n components: `@/${componentsDir.replace(/^src\\//, '')}`,\n utils: `@/${utilsFile.replace(/^src\\//, '').replace(/\\.(ts|js)$/, '')}`,\n },\n };\n\n const configPath = path.join(project.baseDir, 'nexore.json');\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');\n\n console.log(`\\x1b[32m✔\\x1b[0m Generated \\x1b[1mnexore.json\\x1b[0m (Theme: ${theme}, Radius: ${radius}rem)`);\n console.log(`\\x1b[32m✔\\x1b[0m Utilities ready at \\x1b[1m${utilsFile}\\x1b[0m`);\n console.log(`\\x1b[32m✔\\x1b[0m Components directory ready at \\x1b[1m${componentsDir}\\x1b[0m`);\n\n console.log(`\\n\\x1b[32m\\x1b[1m🎉 NexoreUI initialized successfully! You can now add components:\\x1b[0m`);\n console.log(` \\x1b[36mnpx nexoreui add button card modal table --all\\x1b[0m\\n`);\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport type { PackageManager, ProjectType } from './detect.js';\n\nexport const THEME_PALETTES: Record<string, { light: string; dark: string; rgb: string }> = {\n indigo: { light: 'hsl(250 85% 50%)', dark: 'hsl(250 85% 65%)', rgb: '99 60 220' },\n violet: { light: 'hsl(262.1 83.3% 57.8%)', dark: 'hsl(263.4 70% 50.4%)', rgb: '139 92 246' },\n emerald: { light: 'hsl(142.1 76.2% 36.3%)', dark: 'hsl(142.1 70.6% 45.3%)', rgb: '16 185 129' },\n rose: { light: 'hsl(346.8 77.2% 49.8%)', dark: 'hsl(346.8 77.2% 55%)', rgb: '244 63 94' },\n amber: { light: 'hsl(37.7 92.1% 50.2%)', dark: 'hsl(37.7 92.1% 55%)', rgb: '245 158 11' },\n cyan: { light: 'hsl(190.4 95% 39%)', dark: 'hsl(188.7 94.5% 42.7%)', rgb: '6 182 212' },\n slate: { light: 'hsl(240 5.9% 10%)', dark: 'hsl(0 0% 98%)', rgb: '244 244 245' },\n neon: { light: 'hsl(173 80% 40%)', dark: 'hsl(173 100% 50%)', rgb: '0 255 220' },\n};\n\n/**\n * Automatically configures `@` path alias in vite.config or tsconfig if missing.\n */\nexport function ensurePathAlias(baseDir: string, projectType: ProjectType, hasSrcDir: boolean): boolean {\n let updated = false;\n\n // 1. Check TypeScript / JavaScript config files\n const configsToCheck = [\n path.join(baseDir, 'tsconfig.app.json'),\n path.join(baseDir, 'tsconfig.json'),\n path.join(baseDir, 'jsconfig.json'),\n ];\n\n for (const targetConfig of configsToCheck) {\n if (fs.existsSync(targetConfig)) {\n try {\n const content = fs.readFileSync(targetConfig, 'utf8');\n const parsed = JSON.parse(content);\n parsed.compilerOptions = parsed.compilerOptions || {};\n parsed.compilerOptions.baseUrl = parsed.compilerOptions.baseUrl || '.';\n parsed.compilerOptions.paths = parsed.compilerOptions.paths || {};\n\n const aliasTarget = hasSrcDir ? ['./src/*'] : ['./*'];\n if (!parsed.compilerOptions.paths['@/*']) {\n parsed.compilerOptions.paths['@/*'] = aliasTarget;\n fs.writeFileSync(targetConfig, JSON.stringify(parsed, null, 2), 'utf8');\n updated = true;\n }\n } catch {\n // If parsing fails due to comments in json, skip to avoid breaking custom configs\n }\n }\n }\n\n // 2. Check Vite Config\n if (projectType === 'vite') {\n const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs'];\n for (const fileName of viteConfigFiles) {\n const vitePath = path.join(baseDir, fileName);\n if (fs.existsSync(vitePath)) {\n let viteContent = fs.readFileSync(vitePath, 'utf8');\n if (!viteContent.includes(\"alias\") && !viteContent.includes(\"'@'\")) {\n // Check if path import exists\n const hasPathImport = viteContent.includes(\"from 'path'\") || viteContent.includes('from \"path\"');\n let headerAdditions = '';\n if (!hasPathImport) {\n headerAdditions += `import path from 'path'\\nimport { fileURLToPath } from 'url'\\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\\n`;\n }\n\n if (viteContent.includes('defineConfig({')) {\n viteContent = headerAdditions + viteContent.replace(\n 'defineConfig({',\n `defineConfig({\\n resolve: {\\n alias: {\\n '@': path.resolve(__dirname, './${hasSrcDir ? 'src' : '.'}'),\\n },\\n },`\n );\n fs.writeFileSync(vitePath, viteContent, 'utf8');\n updated = true;\n }\n }\n\n // Configure @tailwindcss/vite if missing\n if (!viteContent.includes('@tailwindcss/vite')) {\n let updatedVite = `import tailwindcss from '@tailwindcss/vite'\\n` + viteContent;\n if (updatedVite.includes('plugins: [')) {\n updatedVite = updatedVite.replace(/plugins:\\s*\\[/, 'plugins: [tailwindcss(), ');\n fs.writeFileSync(vitePath, updatedVite, 'utf8');\n updated = true;\n }\n }\n break;\n }\n }\n }\n\n return updated;\n}\n\n/**\n * Injects Tailwind CSS v4 source directive and theme variables into the main CSS file.\n */\nexport function injectThemeCss(\n baseDir: string,\n cssRelativePath: string,\n themeName: string,\n radiusValue: string | number\n): boolean {\n const cssAbsolutePath = path.join(baseDir, cssRelativePath);\n const palette = THEME_PALETTES[themeName] || THEME_PALETTES.cyan;\n const radius = typeof radiusValue === 'number' ? radiusValue : parseFloat(radiusValue) || 1.0;\n\n const themeBlock = `\n@source \"../node_modules/nexoreui/dist/**/*.{js,mjs}\";\n\n@theme {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-lg: var(--radius);\n --radius-md: calc(var(--radius) - 2px);\n --radius-sm: calc(var(--radius) - 4px);\n --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n:root {\n --background: hsl(0 0% 100%);\n --foreground: hsl(240 10% 3.9%);\n --card: hsl(0 0% 100%);\n --card-foreground: hsl(240 10% 3.9%);\n --popover: hsl(0 0% 100%);\n --popover-foreground: hsl(240 10% 3.9%);\n --primary: ${palette.light};\n --primary-foreground: hsl(0 0% 100%);\n --secondary: hsl(240 4.8% 95.9%);\n --secondary-foreground: hsl(240 5.9% 10%);\n --muted: hsl(240 4.8% 95.9%);\n --muted-foreground: hsl(240 3.8% 46.1%);\n --accent: hsl(240 4.8% 95.9%);\n --accent-foreground: hsl(240 5.9% 10%);\n --destructive: hsl(0 84.2% 60.2%);\n --destructive-foreground: hsl(0 0% 98%);\n --border: hsl(240 5.9% 90%);\n --input: hsl(240 5.9% 90%);\n --ring: ${palette.light};\n --radius: ${radius}rem;\n --glow-radius: 12px;\n --glow-strength: 0.15;\n --glow-color: ${palette.rgb};\n}\n\n.dark {\n --background: hsl(240 10% 3.9%);\n --foreground: hsl(0 0% 98%);\n --card: hsl(240 10% 3.9%);\n --card-foreground: hsl(0 0% 98%);\n --popover: hsl(240 10% 3.9%);\n --popover-foreground: hsl(0 0% 98%);\n --primary: ${palette.dark};\n --primary-foreground: hsl(0 0% 100%);\n --secondary: hsl(240 3.7% 15.9%);\n --secondary-foreground: hsl(0 0% 98%);\n --muted: hsl(240 3.7% 15.9%);\n --muted-foreground: hsl(240 5% 64.9%);\n --accent: hsl(240 3.7% 15.9%);\n --accent-foreground: hsl(0 0% 98%);\n --destructive: hsl(0 62.8% 30.6%);\n --destructive-foreground: hsl(0 0% 98%);\n --border: hsl(240 3.7% 15.9%);\n --input: hsl(240 3.7% 15.9%);\n --ring: ${palette.dark};\n --radius: ${radius}rem;\n --glow-radius: 20px;\n --glow-strength: 0.35;\n --glow-color: ${palette.rgb};\n}\n`;\n\n if (fs.existsSync(cssAbsolutePath)) {\n let existingContent = fs.readFileSync(cssAbsolutePath, 'utf8');\n // Remove Vite's default conflicting #root box constraint\n existingContent = existingContent.replace(/#root\\s*\\{[^}]*\\}/g, '');\n if (!existingContent.includes('--color-primary') && !existingContent.includes('nexoreui/dist')) {\n let finalContent = existingContent.trim() + '\\n' + themeBlock;\n if (!finalContent.includes('@import \"tailwindcss\"') && !finalContent.includes(\"@import 'tailwindcss'\")) {\n finalContent = '@import \"tailwindcss\";\\n' + finalContent;\n }\n fs.writeFileSync(cssAbsolutePath, finalContent, 'utf8');\n return true;\n }\n } else {\n const cssDir = path.dirname(cssAbsolutePath);\n if (!fs.existsSync(cssDir)) fs.mkdirSync(cssDir, { recursive: true });\n fs.writeFileSync(cssAbsolutePath, `@import \"tailwindcss\";\\n` + themeBlock, 'utf8');\n return true;\n }\n\n return false;\n}\n\n/**\n * Automatically installs core peer dependencies if missing.\n */\nexport function installPeerDependencies(\n baseDir: string,\n packageManager: PackageManager,\n dependencies: string[] = ['clsx', 'tailwind-merge', 'lucide-react', 'framer-motion']\n): boolean {\n try {\n const packageJsonPath = path.join(baseDir, 'package.json');\n let missingDeps = [...dependencies];\n\n if (fs.existsSync(packageJsonPath)) {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n const installed = { ...pkg.dependencies, ...pkg.devDependencies };\n missingDeps = dependencies.filter((dep) => !installed[dep]);\n }\n\n if (missingDeps.length === 0) return true;\n\n let installCmd = 'npm install';\n if (packageManager === 'pnpm') installCmd = 'pnpm add';\n else if (packageManager === 'yarn') installCmd = 'yarn add';\n else if (packageManager === 'bun') installCmd = 'bun add';\n\n console.log(`\\n\\x1b[33m⚡ Installing peer dependencies:\\x1b[0m ${missingDeps.join(', ')}...`);\n execSync(`${installCmd} ${missingDeps.join(' ')}`, {\n stdio: 'inherit',\n cwd: baseDir,\n });\n return true;\n } catch (err) {\n console.warn('\\x1b[33mWarning: Automatic peer dependency installation skipped.\\x1b[0m');\n return false;\n }\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { initCommand } from './init.js';\nimport { addCommand } from './add.js';\n\nexport interface CreateOptions {\n theme?: string;\n radius?: string;\n template?: 'vite' | 'next';\n}\n\nexport async function createCommand(projectName?: string, options: CreateOptions = {}) {\n const name = projectName || 'my-nexore-app';\n const targetDir = path.resolve(process.cwd(), name);\n\n console.log(`\\n\\x1b[36m\\x1b[1m🚀 Creating a new NexoreUI Project:\\x1b[0m \\x1b[32m${name}\\x1b[0m\\n`);\n\n if (fs.existsSync(targetDir) && fs.readdirSync(targetDir).length > 0) {\n console.error(`\\x1b[31mError: Target directory ${name} already exists and is not empty.\\x1b[0m`);\n return;\n }\n\n // 1. Scaffold base Vite React TypeScript template\n console.log(`\\x1b[33m⚡ Step 1/4: Scaffolding React + Vite template...\\x1b[0m`);\n try {\n execSync(`npm create vite@latest ${name} -- --template react-ts`, { stdio: 'inherit' });\n } catch (err) {\n console.error(`\\x1b[31mFailed to scaffold Vite project.\\x1b[0m`);\n return;\n }\n\n // 2. Change directory and install dependencies\n process.chdir(targetDir);\n console.log(`\\n\\x1b[33m📦 Step 2/4: Installing NexoreUI, Tailwind CSS, and core packages...\\x1b[0m`);\n execSync(`npm install nexoreui lucide-react clsx tailwind-merge framer-motion @tailwindcss/vite tailwindcss`, {\n stdio: 'inherit',\n });\n\n // 3. Run automated NexoreUI initialization\n console.log(`\\n\\x1b[33m⚙️ Step 3/4: Configuring theme and design tokens...\\x1b[0m`);\n await initCommand({\n yes: true,\n theme: options.theme || 'emerald',\n radius: options.radius || '0.75',\n });\n\n // 4. Add starter UI components (Button, Card)\n console.log(`\\n\\x1b[33m🧩 Step 4/4: Adding starter UI components (button, card)...\\x1b[0m`);\n try {\n await addCommand(['button', 'card'], { yes: true });\n } catch {\n // Non-blocking fallback\n }\n\n // 5. Replace default App.tsx with interactive NexoreUI demo showcase\n const appTsxPath = path.join(targetDir, 'src', 'App.tsx');\n const starterAppCode = `import { useState } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@/components/ui/card';\nimport { Sparkles, Terminal, Layers } from 'lucide-react';\n\nexport default function App() {\n const [count, setCount] = useState(0);\n\n return (\n <main className=\"min-h-screen bg-background text-foreground flex flex-col items-center justify-center p-6 transition-colors selection:bg-primary/20\">\n <div className=\"max-w-xl w-full space-y-8 text-center\">\n {/* Status Badge */}\n <div className=\"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-primary/10 border border-primary/20 text-xs font-semibold text-primary shadow-xs\">\n <Sparkles className=\"h-3.5 w-3.5\" />\n <span>NexoreUI + Tailwind CSS v4</span>\n </div>\n\n {/* Hero Title */}\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl sm:text-5xl font-extrabold tracking-tight\">\n Welcome to <span className=\"text-primary\">NexoreUI</span>\n </h1>\n <p className=\"text-muted-foreground text-sm sm:text-base max-w-md mx-auto\">\n Your project is fully configured with design tokens, glow effects, and modern animated components.\n </p>\n </div>\n\n {/* Demo Interactive Card */}\n <Card className=\"max-w-md mx-auto text-left shadow-xl border-border/80\">\n <CardHeader>\n <CardTitle className=\"text-base flex items-center gap-2\">\n <Layers className=\"h-4 w-4 text-primary\" />\n Interactive Component Demo\n </CardTitle>\n <CardDescription className=\"text-xs\">\n Click the button to test component state and styling.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between p-3 rounded-xl bg-muted/50 border border-border/60\">\n <span className=\"text-xs font-medium\">Click Counter</span>\n <span className=\"text-xs font-mono font-bold px-2.5 py-0.5 rounded-md bg-primary/15 text-primary\">\n {count} clicks\n </span>\n </div>\n <div className=\"flex items-center gap-3\">\n <Button onClick={() => setCount((c) => c + 1)} className=\"flex-1\">\n Increment Count\n </Button>\n <Button variant=\"outline\" onClick={() => setCount(0)}>\n Reset\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* CLI Hint */}\n <div className=\"p-3.5 rounded-xl bg-muted/40 border border-border text-xs text-muted-foreground font-mono inline-flex items-center gap-2\">\n <Terminal className=\"h-4 w-4 text-primary shrink-0\" />\n <span>npx nexoreui add --all</span>\n </div>\n </div>\n </main>\n );\n}\n`;\n\n try {\n fs.writeFileSync(appTsxPath, starterAppCode, 'utf8');\n } catch {}\n\n // 6. Clean up Vite's default conflicting App.css\n const appCssPath = path.join(targetDir, 'src', 'App.css');\n if (fs.existsSync(appCssPath)) {\n try {\n fs.writeFileSync(appCssPath, '/* NexoreUI styles are loaded from src/index.css */\\n', 'utf8');\n } catch {}\n }\n\n console.log(`\\n\\x1b[32m\\x1b[1m✨ Project ${name} is ready with NexoreUI!\\x1b[0m`);\n console.log(`\\nTo get started:\\n`);\n console.log(` \\x1b[36mcd ${name}\\x1b[0m`);\n console.log(` \\x1b[36mnpm run dev\\x1b[0m\\n`);\n console.log(`To add more components to your project:\\n`);\n console.log(` \\x1b[36mnpx nexoreui add modal table tabs --all\\x1b[0m\\n`);\n}\n\n","import { addCommand } from './commands/add.js';\nimport { listCommand } from './commands/list.js';\nimport { initCommand } from './commands/init.js';\nimport { createCommand } from './commands/create.js';\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n if (!command || command === '-h' || command === '--help') {\n printHelp();\n return;\n }\n\n if (command === 'create') {\n const projectName = args[1] && !args[1].startsWith('-') ? args[1] : undefined;\n let theme: string | undefined;\n let radius: string | undefined;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '--theme' && args[i + 1]) {\n theme = args[++i];\n } else if (arg.startsWith('--theme=')) {\n theme = arg.split('=')[1];\n } else if (arg === '--radius' && args[i + 1]) {\n radius = args[++i];\n } else if (arg.startsWith('--radius=')) {\n radius = arg.split('=')[1];\n }\n }\n\n await createCommand(projectName, { theme, radius });\n } else if (command === 'init') {\n let yes = false;\n let theme: string | undefined;\n let radius: string | undefined;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '-y' || arg === '--yes') {\n yes = true;\n } else if (arg === '--theme' && args[i + 1]) {\n theme = args[++i];\n } else if (arg.startsWith('--theme=')) {\n theme = arg.split('=')[1];\n } else if (arg === '--radius' && args[i + 1]) {\n radius = args[++i];\n } else if (arg.startsWith('--radius=')) {\n radius = arg.split('=')[1];\n }\n }\n\n await initCommand({ yes, theme, radius });\n } else if (command === 'list') {\n listCommand();\n } else if (command === 'add') {\n const components: string[] = [];\n let yes = false;\n let all = false;\n\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n if (arg === '-y' || arg === '--yes') {\n yes = true;\n } else if (arg === '--all' || arg === '-a') {\n all = true;\n } else if (!arg.startsWith('-')) {\n components.push(arg);\n }\n }\n\n await addCommand(components, { yes, all });\n } else {\n console.error(`\\x1b[31mUnknown command: ${command}\\x1b[0m`);\n printHelp();\n }\n}\n\nfunction printHelp() {\n console.log(`\n\\x1b[36m\\x1b[1mNexoreUI CLI\\x1b[0m\n\\x1b[90mModern, animated, production-ready React components with Tailwind CSS v4\\x1b[0m\n\nUsage:\n npx nexoreui [command] [options]\n\nCommands:\n \\x1b[32mcreate [name]\\x1b[0m Create a new fully configured NexoreUI starter project\n \\x1b[32minit\\x1b[0m Initialize NexoreUI in your project (configure theme, aliases, and CSS)\n \\x1b[32madd [components...]\\x1b[0m Add components to your project (use --all to install all 40+ components)\n \\x1b[32mlist\\x1b[0m List all available components in registry\n\nOptions:\n \\x1b[33m--theme <name>\\x1b[0m Set color palette (cyan, indigo, violet, emerald, rose, amber, slate, neon)\n \\x1b[33m--radius <val>\\x1b[0m Set border radius (0, 0.3, 0.5, 0.75, 1.0)\n \\x1b[33m--all, -a\\x1b[0m Install all available components at once\n \\x1b[33m-y, --yes\\x1b[0m Skip prompts and use defaults automatically\n \\x1b[33m-h, --help\\x1b[0m Show help information\n `);\n}\n\nmain().catch((err) => {\n console.error('\\x1b[31mAn unexpected error occurred:\\x1b[0m', err);\n process.exit(1);\n});\n"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["fs","path","fs","path","resolve","fs","path","readline","fs","path","import_child_process","askQuestion","resolve","fs","path","import_child_process"]}