@dilipod/ui 0.4.19 → 0.4.21

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/components/workflow-flow.tsx","../src/index.ts","../src/lib/utils.ts","../src/components/button.tsx","../src/components/sheet.tsx","../src/components/logo.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/progress.tsx","../src/components/icon-box.tsx","../src/components/tag.tsx","../src/components/stat.tsx","../src/components/metric-card.tsx","../src/components/metric-label.tsx","../src/components/usage-bar.tsx","../src/components/usage-chart.tsx","../src/components/input.tsx","../node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-label/src/label.tsx","../src/components/label.tsx","../src/components/textarea.tsx","../src/components/select.tsx","../src/icons.ts","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/radio-group.tsx","../src/components/accordion.tsx","../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-separator/src/separator.tsx","../src/components/separator.tsx","../src/components/navigation-menu.tsx","../src/components/avatar.tsx","../src/components/dropdown-menu.tsx","../src/components/sidebar.tsx","../src/components/alert.tsx","../src/components/empty-state.tsx","../src/components/error-state.tsx","../src/components/code-block.tsx","../src/components/form-field.tsx","../src/components/table.tsx","../src/components/divider.tsx","../src/components/tabs.tsx","../src/components/dialog.tsx","../src/components/alert-dialog.tsx","../src/components/popover.tsx","../src/components/tooltip.tsx","../src/components/toast.tsx","../src/components/use-toast.tsx","../src/components/toaster.tsx","../src/components/skeleton.tsx","../src/components/pagination.tsx","../src/components/step-progress.tsx","../src/components/breadcrumbs.tsx","../src/components/date-range-picker.tsx","../src/components/file-preview.tsx","../src/components/settings-nav.tsx","../src/components/scenarios-manager.tsx","../src/components/impact-metrics-form.tsx","../src/components/activity-timeline.tsx","../src/components/workflow-viewer.tsx"],"names":["jsxs","jsx","Handle","Position","useMemo","forwardEdges","backwardEdges","roots","levels","queue","visited","nodesByLevel","xGap","yGap","positions","sortedLevels","nodes","edges","MarkerType","useNodesState","useEdgesState","ReactFlow","Background","Label","Separator","twMerge","clsx","cva","React","Slot","Slottable","SheetPrimitive","React2","X","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","createSlot","Node","React14","React15","Root","React16","React17","React18","CaretDown","react_star","React19","React20","SwitchPrimitive","React21","SliderPrimitive","React22","RadioGroupPrimitive","Circle","AccordionPrimitive","React23","NODES","Primitive","React24","NAME","React25","React26","React27","NavigationMenuPrimitive","React28","AvatarPrimitive","DropdownMenuPrimitive","React29","React30","React31","React32","React33","React34","React35","React36","React37","TabsPrimitive","React38","DialogPrimitive","React39","AlertDialogPrimitive","React40","PopoverPrimitive","React41","TooltipPrimitive","React42","ToastPrimitives","React43","Check","WarningCircle","Info","toast","props","React44","React45","React46","CaretLeft","DotsThree","CaretRight","React47","React48","House","React49","FileVideo","FileImage","FilePdf","FileDoc","File","useState","useRef","Fragment","Play","Download","Folder","ArrowSquareOut","CircleNotch","React50","Link","Warning","CheckCircle","Question","PencilSimple","Trash","Plus","React51","Lightning","CaretUp","PaperPlaneTilt","WorkflowFlow","lazy","WebhooksLogo","Timer","GitBranch","Globe","Robot","Code","Package","getNodeTypeLabel","TreeStructure","Suspense","Eye","Copy","CloudArrowUp","CloudArrowDown","ArrowsClockwise","DownloadSimple","ClockCounterClockwise","ArrowsLeftRight","Minus","Pencil"],"mappings":"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","file":"index.js","sourcesContent":["'use client'\n\nimport { useMemo } from 'react'\nimport {\n ReactFlow,\n Node,\n Edge,\n Background,\n useNodesState,\n useEdgesState,\n Position,\n MarkerType,\n Handle,\n} from '@xyflow/react'\nimport '@xyflow/react/dist/style.css'\n\n// ============================================\n// Types\n// ============================================\n\nexport interface N8nNode {\n id: string\n name: string\n type: string\n parameters?: Record<string, unknown>\n}\n\nexport interface N8nWorkflow {\n name: string\n nodes: N8nNode[]\n connections: Record<string, Record<string, Array<Array<{ node: string; type: string; index: number }>>>>\n}\n\nexport interface SimBlock {\n id: string\n type: string\n name: string\n position?: { x: number; y: number }\n subBlocks?: Record<string, unknown>\n outputs?: Record<string, unknown>\n enabled?: boolean\n}\n\nexport interface SimWorkflow {\n blocks?: Record<string, SimBlock>\n edges?: Array<{\n id?: string\n source?: string\n target?: string\n sourceHandle?: string\n targetHandle?: string\n }>\n loops?: Record<string, unknown>\n parallels?: Record<string, unknown>\n}\n\nexport interface WorkflowFlowProps {\n /** The workflow to visualize (n8n or Sim format) */\n workflow: N8nWorkflow | SimWorkflow\n /** Height of the flow diagram container */\n height?: number\n /** Additional CSS class name */\n className?: string\n /** Platform type */\n platform?: 'n8n' | 'sim'\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\nfunction getNodeTypeLabel(type: string): string {\n const labels: Record<string, string> = {\n // n8n types\n 'n8n-nodes-base.webhook': 'Webhook',\n 'n8n-nodes-base.scheduleTrigger': 'Schedule',\n 'n8n-nodes-base.if': 'Condition',\n 'n8n-nodes-base.httpRequest': 'HTTP Request',\n 'n8n-nodes-base.set': 'Set Data',\n 'n8n-nodes-base.code': 'Code',\n 'n8n-nodes-base.respondToWebhook': 'Response',\n '@n8n/n8n-nodes-langchain.agent': 'AI Agent',\n '@n8n/n8n-nodes-langchain.lmChatOpenAi': 'OpenAI',\n '@n8n/n8n-nodes-langchain.lmChatAnthropic': 'Anthropic',\n // Sim Studio types\n 'starter': 'Webhook',\n 'webhook': 'Webhook',\n 'agent': 'AI Agent',\n 'llm': 'LLM',\n 'openai': 'OpenAI',\n 'anthropic': 'Anthropic',\n 'api': 'API Request',\n 'http_request': 'HTTP Request',\n 'condition': 'Condition',\n 'code': 'Code',\n 'response': 'Response',\n 'function': 'Function',\n 'evaluator': 'Evaluator',\n 'router': 'Router',\n }\n return labels[type] || type.split('.').pop()?.replace(/([A-Z])/g, ' $1').trim() || type\n}\n\n// ============================================\n// Custom Node Component\n// ============================================\n\nfunction CustomNode({ data }: { data: { label: string; type: string } }) {\n return (\n <div className=\"px-3 py-2 rounded bg-white border border-slate-200 shadow-sm min-w-[110px] text-center\">\n <Handle type=\"target\" position={Position.Left} className=\"!bg-slate-300 !w-1.5 !h-1.5 !border-0\" />\n <div className=\"text-xs font-medium text-slate-700 truncate max-w-[130px]\">\n {data.label}\n </div>\n <div className=\"text-[10px] text-slate-400 truncate max-w-[130px]\">\n {getNodeTypeLabel(data.type)}\n </div>\n <Handle type=\"source\" position={Position.Right} className=\"!bg-slate-300 !w-1.5 !h-1.5 !border-0\" />\n </div>\n )\n}\n\nconst nodeTypes = { custom: CustomNode }\n\n// ============================================\n// Main Component\n// ============================================\n\nexport function WorkflowFlow({ workflow, height = 350, className = '', platform = 'n8n' }: WorkflowFlowProps) {\n const { initialNodes, initialEdges } = useMemo(() => {\n // Handle Sim Studio format (blocks object + edges array)\n if (platform === 'sim') {\n const simWorkflow = workflow as SimWorkflow\n const blocks = simWorkflow.blocks || {}\n const simEdges = simWorkflow.edges || []\n const blockList = Object.values(blocks)\n\n if (blockList.length === 0) {\n return { initialNodes: [], initialEdges: [] }\n }\n\n // Build adjacency for layout\n const forwardEdges = new Map<string, string[]>()\n const backwardEdges = new Map<string, string[]>()\n\n simEdges.forEach(edge => {\n const from = edge.source\n const to = edge.target\n if (from && to) {\n if (!forwardEdges.has(from)) forwardEdges.set(from, [])\n forwardEdges.get(from)!.push(to)\n if (!backwardEdges.has(to)) backwardEdges.set(to, [])\n backwardEdges.get(to)!.push(from)\n }\n })\n\n // Find trigger blocks\n const triggerBlocks = blockList.filter(b =>\n b.type === 'starter' || b.type === 'webhook' || b.type === 'api'\n )\n\n const roots = triggerBlocks.length > 0\n ? triggerBlocks\n : blockList.filter(b => !backwardEdges.has(b.id) || backwardEdges.get(b.id)!.length === 0)\n\n // BFS to assign levels\n const levels = new Map<string, number>()\n const queue: string[] = []\n\n roots.forEach(r => {\n levels.set(r.id, 0)\n queue.push(r.id)\n })\n\n const visited = new Set<string>()\n while (queue.length > 0) {\n const id = queue.shift()!\n if (visited.has(id)) continue\n visited.add(id)\n\n const children = forwardEdges.get(id) || []\n const myLevel = levels.get(id) || 0\n\n children.forEach(child => {\n const childLevel = levels.get(child)\n if (childLevel === undefined || myLevel + 1 > childLevel) {\n levels.set(child, myLevel + 1)\n }\n if (!visited.has(child)) {\n queue.push(child)\n }\n })\n }\n\n // Handle disconnected blocks\n blockList.forEach(block => {\n if (!levels.has(block.id)) {\n const maxLevel = Math.max(0, ...Array.from(levels.values()))\n levels.set(block.id, maxLevel + 1)\n }\n })\n\n // Group by level and position\n const nodesByLevel = new Map<number, string[]>()\n levels.forEach((level, id) => {\n if (!nodesByLevel.has(level)) nodesByLevel.set(level, [])\n nodesByLevel.get(level)!.push(id)\n })\n\n const xGap = 170\n const yGap = 70\n const positions = new Map<string, { x: number; y: number }>()\n\n const sortedLevels = Array.from(nodesByLevel.keys()).sort((a, b) => a - b)\n sortedLevels.forEach(level => {\n const nodesInLevel = nodesByLevel.get(level)!\n const totalHeight = (nodesInLevel.length - 1) * yGap\n const startY = -totalHeight / 2\n nodesInLevel.forEach((id, i) => {\n positions.set(id, { x: level * xGap, y: startY + i * yGap })\n })\n })\n\n // Create ReactFlow nodes\n const nodes: Node[] = blockList.map(block => ({\n id: block.id,\n type: 'custom',\n position: positions.get(block.id) || { x: 0, y: 0 },\n data: { label: block.name || block.type, type: block.type },\n }))\n\n // Create edges\n const edges: Edge[] = simEdges.map((edge, idx) => ({\n id: edge.id || `edge-${idx}`,\n source: edge.source || '',\n target: edge.target || '',\n type: 'smoothstep',\n pathOptions: { borderRadius: 20 },\n style: { stroke: '#94a3b8', strokeWidth: 1.5 },\n markerEnd: { type: MarkerType.ArrowClosed, color: '#94a3b8', width: 14, height: 14 },\n })).filter(e => e.source && e.target)\n\n return { initialNodes: nodes, initialEdges: edges }\n }\n\n // Handle n8n format (nodes array + connections object)\n const n8nWorkflow = workflow as N8nWorkflow\n const n8nNodes = n8nWorkflow.nodes || []\n const connections = n8nWorkflow.connections || {}\n const nodeIdMap = new Map(n8nNodes.map(n => [n.name, n.id || n.name]))\n \n // Build adjacency lists (forward and backward)\n const forwardEdges = new Map<string, string[]>() // from -> [to]\n const backwardEdges = new Map<string, string[]>() // to -> [from]\n const allEdgeData: Array<{ from: string; to: string; outputType: string; oi: number; ci: number }> = []\n \n Object.entries(connections).forEach(([fromNodeName, outputTypes]) => {\n Object.entries(outputTypes).forEach(([outputType, outputs]) => {\n if (!Array.isArray(outputs)) return\n outputs.forEach((outputArray, oi) => {\n if (!Array.isArray(outputArray)) return\n outputArray.forEach((conn, ci) => {\n if (!forwardEdges.has(fromNodeName)) forwardEdges.set(fromNodeName, [])\n forwardEdges.get(fromNodeName)!.push(conn.node)\n \n if (!backwardEdges.has(conn.node)) backwardEdges.set(conn.node, [])\n backwardEdges.get(conn.node)!.push(fromNodeName)\n \n allEdgeData.push({ from: fromNodeName, to: conn.node, outputType, oi, ci })\n })\n })\n })\n })\n\n // Find trigger nodes (webhooks, schedule triggers) - these are the true starting points\n const triggerNodes = n8nNodes.filter(n => \n n.type.includes('webhook') || n.type.includes('Trigger') || n.type.includes('schedule')\n )\n \n // If no triggers found, find nodes with no incoming edges as fallback\n const roots = triggerNodes.length > 0 \n ? triggerNodes \n : n8nNodes.filter(n => !backwardEdges.has(n.name) || backwardEdges.get(n.name)!.length === 0)\n \n // Assign levels using BFS from trigger/root nodes only\n const levels = new Map<string, number>()\n const queue: string[] = []\n \n roots.forEach(r => {\n levels.set(r.name, 0)\n queue.push(r.name)\n })\n \n const visited = new Set<string>()\n while (queue.length > 0) {\n const name = queue.shift()!\n if (visited.has(name)) continue\n visited.add(name)\n \n const children = forwardEdges.get(name) || []\n const myLevel = levels.get(name) || 0\n \n children.forEach(child => {\n const childLevel = levels.get(child)\n if (childLevel === undefined || myLevel + 1 > childLevel) {\n levels.set(child, myLevel + 1)\n }\n if (!visited.has(child)) {\n queue.push(child)\n }\n })\n }\n \n // Handle nodes that weren't reached (like AI models that feed into other nodes)\n // Place them one level before the node they connect to\n n8nNodes.forEach(node => {\n if (!levels.has(node.name)) {\n const targets = forwardEdges.get(node.name) || []\n if (targets.length > 0) {\n // Find the level of the target and place this node one level before\n const targetLevels = targets.map(t => levels.get(t) ?? 0)\n const targetLevel = Math.min(...targetLevels)\n levels.set(node.name, Math.max(0, targetLevel - 1))\n } else {\n // No connections at all, place at the end\n const maxLevel = Math.max(0, ...Array.from(levels.values()))\n levels.set(node.name, maxLevel)\n }\n }\n })\n \n // Group nodes by level\n const nodesByLevel = new Map<number, string[]>()\n levels.forEach((level, name) => {\n if (!nodesByLevel.has(level)) nodesByLevel.set(level, [])\n nodesByLevel.get(level)!.push(name)\n })\n \n // Sort nodes within each level to minimize crossings\n // Simple heuristic: sort by average position of connected nodes in previous level\n const sortedLevels = Array.from(nodesByLevel.keys()).sort((a, b) => a - b)\n \n sortedLevels.forEach((level, levelIdx) => {\n if (levelIdx === 0) return // Skip first level\n \n const nodesInLevel = nodesByLevel.get(level)!\n const prevLevel = sortedLevels[levelIdx - 1]\n const prevNodes = nodesByLevel.get(prevLevel) || []\n const prevPositions = new Map(prevNodes.map((n, i) => [n, i]))\n \n // Calculate average position of parents for each node\n nodesInLevel.sort((a, b) => {\n const parentsA = backwardEdges.get(a) || []\n const parentsB = backwardEdges.get(b) || []\n \n const avgA = parentsA.length > 0 \n ? parentsA.reduce((sum, p) => sum + (prevPositions.get(p) ?? 0), 0) / parentsA.length \n : 0\n const avgB = parentsB.length > 0 \n ? parentsB.reduce((sum, p) => sum + (prevPositions.get(p) ?? 0), 0) / parentsB.length \n : 0\n \n return avgA - avgB\n })\n })\n \n // Assign positions\n const positions = new Map<string, { x: number; y: number }>()\n const xGap = 170\n const yGap = 70\n \n sortedLevels.forEach(level => {\n const nodesInLevel = nodesByLevel.get(level)!\n const totalHeight = (nodesInLevel.length - 1) * yGap\n const startY = -totalHeight / 2\n \n nodesInLevel.forEach((name, i) => {\n positions.set(name, { x: level * xGap, y: startY + i * yGap })\n })\n })\n\n // Create ReactFlow nodes\n const nodes: Node[] = n8nNodes.map(node => ({\n id: node.id || node.name,\n type: 'custom',\n position: positions.get(node.name) || { x: 0, y: 0 },\n data: { label: node.name, type: node.type },\n }))\n\n // Create edges with better styling\n const edges: Edge[] = allEdgeData.map(({ from, to, oi, ci }) => {\n const fromId = nodeIdMap.get(from)!\n const toId = nodeIdMap.get(to)!\n \n return {\n id: `${fromId}-${toId}-${oi}-${ci}`,\n source: fromId,\n target: toId,\n type: 'smoothstep',\n pathOptions: { borderRadius: 20 },\n style: { stroke: '#94a3b8', strokeWidth: 1.5 },\n markerEnd: { type: MarkerType.ArrowClosed, color: '#94a3b8', width: 14, height: 14 },\n }\n })\n\n return { initialNodes: nodes, initialEdges: edges }\n }, [workflow])\n\n const [nodes, , onNodesChange] = useNodesState(initialNodes)\n const [edges, , onEdgesChange] = useEdgesState(initialEdges)\n\n return (\n <div style={{ height }} className={`bg-slate-50 rounded-lg border border-slate-200 overflow-hidden ${className}`}>\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n fitView\n fitViewOptions={{ padding: 0.1, minZoom: 0.8 }}\n minZoom={0.5}\n maxZoom={2}\n proOptions={{ hideAttribution: true }}\n defaultEdgeOptions={{\n type: 'smoothstep',\n }}\n >\n <Background color=\"#e2e8f0\" gap={24} size={1} />\n </ReactFlow>\n </div>\n )\n}\n\nexport default WorkflowFlow\n","// Core Components\nexport { Button, buttonVariants } from './components/button'\nexport type { ButtonProps } from './components/button'\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n} from './components/sheet'\n\nexport { Logo } from './components/logo'\nexport type { LogoProps } from './components/logo'\n\n// New Design System Components\nexport { Badge, badgeVariants } from './components/badge'\nexport type { BadgeProps } from './components/badge'\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n} from './components/card'\n\nexport { Progress, progressVariants } from './components/progress'\nexport type { ProgressProps } from './components/progress'\n\nexport { IconBox, iconBoxVariants } from './components/icon-box'\nexport type { IconBoxProps } from './components/icon-box'\n\nexport { Tag, tagVariants } from './components/tag'\nexport type { TagProps } from './components/tag'\n\nexport { Stat, statVariants, valueVariants } from './components/stat'\nexport type { StatProps } from './components/stat'\n\nexport { MetricCard, metricCardVariants } from './components/metric-card'\nexport type { MetricCardProps } from './components/metric-card'\n\nexport { MetricLabel, MetricValue, MetricSubtext, Metric } from './components/metric-label'\nexport type { MetricLabelProps, MetricValueProps, MetricSubtextProps } from './components/metric-label'\n\nexport { UsageBar, usageBarVariants } from './components/usage-bar'\nexport type { UsageBarProps } from './components/usage-bar'\n\nexport { UsageChart } from './components/usage-chart'\nexport type { UsageChartProps, UsageChartDataPoint } from './components/usage-chart'\n\n// Form Components\nexport { Input } from './components/input'\nexport type { InputProps } from './components/input'\n\nexport { Label } from './components/label'\nexport type { LabelProps } from '@radix-ui/react-label'\n\nexport { Textarea } from './components/textarea'\nexport type { TextareaProps } from './components/textarea'\n\nexport { Select } from './components/select'\nexport type { SelectProps } from './components/select'\n\nexport { Checkbox } from './components/checkbox'\nexport type { CheckboxProps } from './components/checkbox'\n\nexport { Switch, LabeledSwitch } from './components/switch'\nexport type { SwitchProps, LabeledSwitchProps } from './components/switch'\n\nexport { Slider, LabeledSlider } from './components/slider'\nexport type { SliderProps, LabeledSliderProps } from './components/slider'\n\nexport { RadioGroup, RadioGroupItem, RadioGroupOption, RadioGroupCard } from './components/radio-group'\nexport type { RadioGroupOptionProps, RadioGroupCardProps } from './components/radio-group'\n\n// Navigation & Layout Components\nexport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from './components/accordion'\n\nexport { Separator } from './components/separator'\nexport type { SeparatorProps } from '@radix-ui/react-separator'\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n} from './components/navigation-menu'\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n} from './components/avatar'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n} from './components/dropdown-menu'\n\nexport { Sidebar } from './components/sidebar'\nexport type {\n SidebarProps,\n SidebarNavItem,\n SidebarNavItemProps,\n} from './components/sidebar'\n\nexport { Alert, alertVariants } from './components/alert'\nexport type { AlertProps } from './components/alert'\n\nexport { EmptyState } from './components/empty-state'\nexport type { EmptyStateProps } from './components/empty-state'\n\nexport { ErrorState } from './components/error-state'\nexport type { ErrorStateProps } from './components/error-state'\n\nexport { CodeBlock } from './components/code-block'\nexport type { CodeBlockProps } from './components/code-block'\n\nexport { FormField } from './components/form-field'\nexport type { FormFieldProps } from './components/form-field'\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/table'\n\nexport { Divider } from './components/divider'\nexport type { DividerProps } from './components/divider'\n\n// Tabs Components\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n TabsListUnderline,\n TabsTriggerUnderline,\n} from './components/tabs'\n\n// Dialog Components\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from './components/dialog'\n\n// Alert Dialog Components\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n ConfirmDialog,\n} from './components/alert-dialog'\nexport type { ConfirmDialogProps } from './components/alert-dialog'\n\n// Popover Components\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverArrow,\n} from './components/popover'\n\n// Tooltip Components\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n SimpleTooltip,\n} from './components/tooltip'\nexport type { SimpleTooltipProps } from './components/tooltip'\n\n// Toast Components\nexport {\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n ToastIcon,\n} from './components/toast'\nexport type { ToastProps, ToastActionElement } from './components/toast'\n\nexport { Toaster } from './components/toaster'\nexport { useToast, toast } from './components/use-toast'\n\n// Skeleton/Loading Components\nexport { Skeleton, SkeletonText, SkeletonCard } from './components/skeleton'\nexport type { SkeletonProps, SkeletonTextProps, SkeletonCardProps } from './components/skeleton'\n\n// Pagination Components\nexport { Pagination, SimplePagination } from './components/pagination'\nexport type { PaginationProps, SimplePaginationProps } from './components/pagination'\n\n// Step Progress Components\nexport { StepProgress, StepDots } from './components/step-progress'\nexport type { Step, StepProgressProps, StepDotsProps } from './components/step-progress'\n\n// Breadcrumb Components\nexport { Breadcrumbs, BreadcrumbLink } from './components/breadcrumbs'\nexport type { BreadcrumbItem, BreadcrumbsProps, BreadcrumbLinkProps } from './components/breadcrumbs'\n\n// Date Range Picker Components\nexport { DateRangePicker, DateRangeSelect, getDateRangeFromPreset } from './components/date-range-picker'\nexport type { DateRangePreset, DateRangePickerProps, DateRangeSelectProps } from './components/date-range-picker'\n\n// File Preview Components\nexport { FilePreview } from './components/file-preview'\nexport type { FilePreviewProps, UploadedFile } from './components/file-preview'\n\n// Settings Navigation Components\nexport { SettingsNav, SettingsNavLink } from './components/settings-nav'\nexport type { SettingsNavItem, SettingsNavGroup, SettingsNavProps, SettingsNavLinkProps } from './components/settings-nav'\n\n// Scenarios Manager Components\nexport { ScenariosManager } from './components/scenarios-manager'\nexport type { Scenario, ScenarioType, ScenarioSuggestion, ScenariosManagerProps } from './components/scenarios-manager'\n\n// Impact Metrics Components\nexport { ImpactMetricsForm } from './components/impact-metrics-form'\nexport type { ImpactMetrics, ImpactMetricsFormProps } from './components/impact-metrics-form'\n\n// Activity Timeline Components\nexport { ActivityTimeline } from './components/activity-timeline'\nexport type { Activity, ActivityTimelineProps } from './components/activity-timeline'\n\n// Workflow Components\nexport { WorkflowFlow } from './components/workflow-flow'\nexport type { WorkflowFlowProps, N8nWorkflow as WorkflowFlowN8nWorkflow, N8nNode } from './components/workflow-flow'\n\nexport { WorkflowViewer } from './components/workflow-viewer'\nexport type { \n WorkflowViewerProps, \n N8nWorkflow, \n SimWorkflow, \n WorkflowTemplate \n} from './components/workflow-viewer'\n\n// Utilities\nexport { cn } from './lib/utils'\n\n// Icons - Re-exported from @phosphor-icons/react\nexport * from './icons'\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',\n {\n variants: {\n variant: {\n default:\n 'bg-[var(--black)] text-white border-2 border-[var(--black)] hover:bg-gray-800 hover:border-gray-800 active:scale-95',\n primary:\n 'bg-[var(--cyan)] text-white border-2 border-[var(--cyan)] hover:bg-[var(--cyan-dark)] hover:border-[var(--cyan-dark)] active:scale-95',\n destructive:\n 'bg-red-600 text-white border-2 border-red-600 hover:bg-red-700 hover:border-red-700 active:scale-95',\n outline:\n 'border-2 border-gray-300 bg-transparent hover:bg-gray-100 active:scale-95',\n secondary:\n 'bg-gray-100 text-[var(--black)] border-2 border-gray-100 hover:bg-gray-200 hover:border-gray-200 active:scale-95',\n ghost:\n 'hover:bg-gray-100 border-2 border-transparent',\n link:\n 'text-[var(--cyan)] underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-10 px-6 py-2',\n sm: 'h-9 px-4 text-xs',\n lg: 'h-12 px-8 text-base',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n /** Show loading state */\n loading?: boolean\n /** Loading text (defaults to current children text) */\n loadingText?: string\n /** Icon to show before the text */\n icon?: React.ReactNode\n /** Icon to show after the text */\n iconAfter?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, loading, loadingText, icon, iconAfter, children, disabled, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n const isDisabled = disabled || loading\n \n // Loading spinner component\n const LoadingSpinner = (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )\n\n // When using asChild with icons, we need to use Slottable\n if (asChild && (icon || iconAfter || loading)) {\n return (\n <Slot\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {loading && LoadingSpinner}\n {!loading && icon}\n <Slottable>{children}</Slottable>\n {!loading && iconAfter}\n </Slot>\n )\n }\n \n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {loading && LoadingSpinner}\n {!loading && icon}\n {loading ? loadingText || children : children}\n {!loading && iconAfter}\n </Comp>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","// @ts-nocheck\n'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from '@phosphor-icons/react'\n\nimport { cn } from '../lib/utils'\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Overlay accepts className at runtime\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-150',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-white p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out duration-150',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n {/* @ts-expect-error - Radix Dialog Close accepts className and children at runtime */}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Title accepts className at runtime\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-[var(--black)]', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Description accepts className at runtime\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-gray-500', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface LogoProps {\n variant?: 'dark' | 'light' // dark = black text, light = white text\n size?: 'sm' | 'md' | 'lg'\n href?: string | null // defaults to '/', pass null to disable link\n className?: string\n}\n\nconst sizes = {\n sm: { width: 100, height: 30 },\n md: { width: 130, height: 40 },\n lg: { width: 160, height: 50 },\n}\n\n/**\n * Logo component that renders the Dilipod logo as inline SVG\n * \n * @param variant - 'dark' for light backgrounds (black text), 'light' for dark backgrounds (white text)\n * @param size - 'sm' | 'md' | 'lg'\n * @param href - Optional link href (wraps logo in anchor tag)\n * @param className - Additional CSS classes\n */\nexport function Logo({\n variant = 'dark',\n size = 'md',\n href = '/',\n className,\n}: LogoProps) {\n const s = sizes[size]\n const textColor = variant === 'light' ? 'white' : '#0A0A0A'\n const iconTextColor = variant === 'light' ? 'white' : '#0A0A0A'\n\n const svgContent = (\n <svg\n width={s.width}\n height={s.height}\n viewBox=\"0 0 130 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <defs>\n <linearGradient id={`gradient-${variant}`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#007A70\" />\n <stop offset=\"50%\" stopColor=\"#00B8A9\" />\n <stop offset=\"100%\" stopColor=\"#00E5D4\" />\n </linearGradient>\n </defs>\n {/* Icon */}\n <rect width=\"40\" height=\"40\" rx=\"4\" fill={`url(#gradient-${variant})`} />\n <text\n x=\"20\"\n y=\"29\"\n textAnchor=\"middle\"\n fontFamily=\"system-ui, -apple-system, sans-serif\"\n fontSize=\"24\"\n fontWeight=\"700\"\n fill={iconTextColor}\n >\n D\n </text>\n {/* Text */}\n <text\n x=\"52\"\n y=\"28\"\n fontFamily=\"system-ui, -apple-system, sans-serif\"\n fontSize=\"20\"\n fontWeight=\"700\"\n letterSpacing=\"1\"\n fill={textColor}\n >\n Dilipod\n </text>\n </svg>\n )\n\n if (href !== null) {\n return (\n <a href={href} aria-label=\"Go to homepage\" className=\"inline-flex items-center group\">\n {svgContent}\n </a>\n )\n }\n\n return <div className=\"inline-flex items-center\">{svgContent}</div>\n}\n\nexport type { LogoProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst badgeVariants = cva(\n 'inline-flex items-center gap-1.5 rounded-sm font-semibold transition-colors',\n {\n variants: {\n variant: {\n default: 'bg-gray-100 text-gray-700',\n primary: 'bg-[var(--cyan)]/10 text-[var(--cyan)]',\n success: 'bg-green-100 text-green-700',\n warning: 'bg-amber-100 text-amber-700',\n error: 'bg-red-100 text-red-700',\n outline: 'border border-gray-200 text-gray-600 bg-white',\n },\n size: {\n sm: 'px-2 py-0.5 text-[10px]',\n default: 'px-2.5 py-1 text-xs',\n lg: 'px-3 py-1.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Show animated pulse dot */\n pulse?: boolean\n /** Custom pulse color (overrides variant-based color) */\n pulseColor?: 'default' | 'primary' | 'success' | 'warning' | 'error'\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, pulse, pulseColor: pulseColorProp, children, ...props }, ref) => {\n // Get pulse color based on variant or explicit pulseColor prop\n // Using explicit conditionals so Tailwind can detect the classes\n const getPulseColorClass = () => {\n const color = pulseColorProp || variant || 'default'\n switch (color) {\n case 'success': return 'bg-green-500'\n case 'warning': return 'bg-amber-500'\n case 'error': return 'bg-red-500'\n case 'primary': return 'bg-[var(--cyan)]'\n case 'outline': return 'bg-gray-400'\n default: return 'bg-gray-500'\n }\n }\n \n const pulseColorClass = getPulseColorClass()\n\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {pulse && (\n <span className=\"relative flex h-1.5 w-1.5\">\n <span\n className={cn(\n 'absolute inline-flex h-full w-full animate-ping rounded-full opacity-75',\n pulseColorClass\n )}\n />\n <span\n className={cn(\n 'relative inline-flex h-1.5 w-1.5 rounded-full',\n pulseColorClass\n )}\n />\n </span>\n )}\n {children}\n </span>\n )\n }\n)\nBadge.displayName = 'Badge'\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-sm border border-gray-200 bg-white',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-lg font-bold leading-none tracking-tight text-[var(--black)]',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-gray-500', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst progressVariants = cva('h-full rounded-full transition-all duration-300', {\n variants: {\n variant: {\n default: 'bg-[var(--cyan)]',\n success: 'bg-green-500',\n warning: 'bg-amber-500',\n error: 'bg-red-500',\n gradient: 'bg-gradient-to-r from-[var(--cyan-dark)] to-[var(--cyan)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /** Progress value (0-100) */\n value: number\n /** Show percentage label */\n showLabel?: boolean\n /** Custom label text (defaults to \"Progress\") */\n label?: string\n /** Size of the progress bar */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, variant, showLabel, label = 'Progress', size = 'default', ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value))\n \n const heightClass = {\n sm: 'h-1',\n default: 'h-1.5',\n lg: 'h-2.5',\n }[size]\n\n return (\n <div className={cn('w-full', className)} ref={ref} {...props}>\n {showLabel && (\n <div className=\"flex justify-between text-xs mb-1\">\n <span className=\"text-gray-500\">{label}</span>\n <span className=\"font-semibold text-[var(--black)]\">{clampedValue}%</span>\n </div>\n )}\n <div\n className={cn(\n 'w-full bg-gray-200 rounded-full overflow-hidden',\n heightClass\n )}\n >\n <div\n className={cn(progressVariants({ variant }))}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n </div>\n )\n }\n)\nProgress.displayName = 'Progress'\n\nexport { Progress, progressVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst iconBoxVariants = cva(\n 'inline-flex items-center justify-center shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-[var(--black)] text-white',\n primary: 'bg-[var(--cyan)] text-[var(--black)]',\n outline: 'border-2 border-gray-200 bg-white text-[var(--black)]',\n ghost: 'bg-gray-100 text-gray-600',\n gradient: 'bg-gradient-to-br from-[var(--black)] to-[var(--cyan-dark)] text-white',\n },\n size: {\n sm: 'w-8 h-8',\n default: 'w-10 h-10',\n lg: 'w-12 h-12',\n xl: 'w-14 h-14',\n },\n rounded: {\n sm: 'rounded-sm',\n default: 'rounded-sm',\n md: 'rounded-sm',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n rounded: 'sm',\n },\n }\n)\n\nexport interface IconBoxProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof iconBoxVariants> {}\n\nconst IconBox = React.forwardRef<HTMLDivElement, IconBoxProps>(\n ({ className, variant, size, rounded, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(iconBoxVariants({ variant, size, rounded }), className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconBox.displayName = 'IconBox'\n\nexport { IconBox, iconBoxVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst tagVariants = cva(\n 'inline-flex items-center gap-2 font-medium transition-colors cursor-pointer rounded-sm',\n {\n variants: {\n variant: {\n default: 'bg-gray-100 text-[var(--black)]',\n primary: 'bg-[var(--cyan)]/10 text-[var(--cyan)]',\n outline: 'border border-gray-200 bg-white text-gray-700 hover:border-[var(--black)] hover:text-[var(--black)]',\n dark: 'bg-[var(--black)] text-white',\n },\n size: {\n sm: 'px-2 py-1 text-[10px]',\n default: 'px-3 py-1.5 text-xs',\n lg: 'px-4 py-2 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface TagProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tagVariants> {\n /** Optional icon to display before text */\n icon?: React.ReactNode\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n ({ className, variant, size, icon, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n {children}\n </span>\n )\n }\n)\nTag.displayName = 'Tag'\n\nexport { Tag, tagVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst statVariants = cva('', {\n variants: {\n variant: {\n default: '',\n card: 'p-3 rounded-sm bg-gray-50 text-center',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n variant: 'default',\n align: 'left',\n },\n})\n\nconst valueVariants = cva('font-bold', {\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-4xl md:text-5xl',\n xl: 'text-5xl md:text-6xl',\n },\n color: {\n default: 'text-[var(--black)]',\n primary: 'text-[var(--cyan)]',\n white: 'text-white',\n gradient: 'text-gradient',\n },\n },\n defaultVariants: {\n size: 'default',\n color: 'default',\n },\n})\n\nexport interface StatProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof statVariants> {\n /** The main value to display */\n value: string | number\n /** Label below the value */\n label?: string\n /** Optional suffix after value (e.g., \"faster\", \"cheaper\") */\n suffix?: string\n /** Size of the value text */\n valueSize?: 'sm' | 'default' | 'lg' | 'xl'\n /** Color of the value */\n valueColor?: 'default' | 'primary' | 'white' | 'gradient'\n}\n\nconst Stat = React.forwardRef<HTMLDivElement, StatProps>(\n (\n {\n className,\n variant,\n align,\n value,\n label,\n suffix,\n valueSize = 'default',\n valueColor = 'default',\n ...props\n },\n ref\n ) => {\n const justifyClass = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n }[align || 'left']\n\n return (\n <div\n ref={ref}\n className={cn(statVariants({ variant, align }), className)}\n {...props}\n >\n <div className={cn('flex flex-wrap lg:flex-nowrap items-baseline gap-x-2', justifyClass)}>\n <span className={cn(valueVariants({ size: valueSize, color: valueColor }))}>\n {value}\n </span>\n {suffix && (\n <span className={cn(\n \"font-medium text-[var(--cyan)] shrink-0\",\n valueSize === 'lg' || valueSize === 'xl' ? 'text-lg md:text-xl' : 'text-base md:text-lg'\n )}>\n {suffix}\n </span>\n )}\n </div>\n {label && (\n <div className={cn(\n \"font-medium mt-1\",\n valueColor === 'white' ? 'text-white/70 text-sm md:text-base' : 'text-gray-500 text-xs md:text-sm'\n )}>\n {label}\n </div>\n )}\n </div>\n )\n }\n)\nStat.displayName = 'Stat'\n\nexport { Stat, statVariants, valueVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\nimport { Card } from './card'\n\nconst metricCardVariants = cva('p-5', {\n variants: {\n variant: {\n default: '',\n outlined: 'border-l-4',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nconst iconContainerVariants = cva('p-2 rounded-lg shrink-0', {\n variants: {\n color: {\n cyan: 'bg-[var(--cyan)]/10',\n purple: 'bg-purple-50',\n green: 'bg-green-50',\n amber: 'bg-amber-50',\n red: 'bg-red-50',\n gray: 'bg-gray-100',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nconst iconVariants = cva('h-5 w-5', {\n variants: {\n color: {\n cyan: 'text-[var(--cyan)]',\n purple: 'text-purple-500',\n green: 'text-green-500',\n amber: 'text-amber-500',\n red: 'text-red-500',\n gray: 'text-gray-500',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nexport interface MetricCardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof metricCardVariants> {\n /** The metric value to display */\n value: string | number\n /** Label describing the metric */\n label: string\n /** Icon component to display */\n icon?: React.ComponentType<{ className?: string }>\n /** Color scheme for the icon */\n iconColor?: 'cyan' | 'purple' | 'green' | 'amber' | 'red' | 'gray'\n /** Border color for outlined variant */\n borderColor?: string\n}\n\nconst MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n (\n {\n className,\n variant,\n value,\n label,\n icon: Icon,\n iconColor = 'cyan',\n borderColor,\n ...props\n },\n ref\n ) => {\n return (\n <Card\n ref={ref}\n className={cn(\n metricCardVariants({ variant }),\n variant === 'outlined' && borderColor,\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n {Icon && (\n <div className={cn(iconContainerVariants({ color: iconColor }))}>\n <Icon className={cn(iconVariants({ color: iconColor }))} />\n </div>\n )}\n <div className=\"min-w-0\">\n <p className=\"text-2xl font-bold text-[var(--black)] truncate\">\n {value}\n </p>\n <p className=\"text-sm text-gray-500 truncate\">{label}</p>\n </div>\n </div>\n </Card>\n )\n }\n)\nMetricCard.displayName = 'MetricCard'\n\nexport { MetricCard, metricCardVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface MetricLabelProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The label text */\n children: React.ReactNode\n}\n\n/**\n * MetricLabel - A utility component for consistent metric labeling\n * \n * Uses the standardized pattern: text-xs uppercase tracking-wide text-muted-foreground\n * Typically used above metric values in dashboards and cards.\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <p className=\"text-2xl font-bold\">€5,000</p>\n */\nconst MetricLabel = React.forwardRef<HTMLParagraphElement, MetricLabelProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'text-xs text-muted-foreground uppercase tracking-wide',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricLabel.displayName = 'MetricLabel'\n\nexport interface MetricValueProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The value to display */\n children: React.ReactNode\n /** Size variant */\n size?: 'default' | 'lg' | 'sm'\n /** Highlight the value (uses brand cyan) */\n highlight?: boolean\n}\n\n/**\n * MetricValue - A utility component for consistent metric value display\n * \n * Pairs with MetricLabel for a complete metric display pattern.\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue highlight>€5,000</MetricValue>\n */\nconst MetricValue = React.forwardRef<HTMLParagraphElement, MetricValueProps>(\n ({ className, children, size = 'default', highlight = false, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'font-bold mt-1',\n size === 'lg' && 'text-3xl',\n size === 'default' && 'text-2xl',\n size === 'sm' && 'text-xl',\n highlight && 'text-[#00e5cc]',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricValue.displayName = 'MetricValue'\n\nexport interface MetricSubtextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The subtext content */\n children: React.ReactNode\n}\n\n/**\n * MetricSubtext - A utility component for metric subtitles/descriptions\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue>€5,000</MetricValue>\n * <MetricSubtext>ARR: €60,000</MetricSubtext>\n */\nconst MetricSubtext = React.forwardRef<HTMLParagraphElement, MetricSubtextProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'text-xs text-muted-foreground mt-1',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricSubtext.displayName = 'MetricSubtext'\n\n/**\n * Metric - A compound component combining Label, Value, and optional Subtext\n * \n * @example\n * <Metric>\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue highlight>€5,000</MetricValue>\n * <MetricSubtext>ARR: €60,000</MetricSubtext>\n * </Metric>\n */\nconst Metric = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nMetric.displayName = 'Metric'\n\nexport { MetricLabel, MetricValue, MetricSubtext, Metric }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\nimport { Progress } from './progress'\n\nconst usageBarVariants = cva('space-y-3', {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nconst progressColorVariants = cva('', {\n variants: {\n color: {\n cyan: '[&>div]:bg-[var(--cyan)]',\n purple: '[&>div]:bg-purple-500',\n green: '[&>div]:bg-green-500',\n amber: '[&>div]:bg-amber-500',\n red: '[&>div]:bg-red-500',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nexport interface UsageBarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof usageBarVariants> {\n /** Label for the usage metric */\n label: string\n /** Current usage value */\n used: number\n /** Maximum/included value */\n included: number\n /** Icon component to display */\n icon?: React.ComponentType<{ className?: string }>\n /** Color scheme for the progress bar */\n color?: 'cyan' | 'purple' | 'green' | 'amber' | 'red'\n /** Show the over-limit message when exceeded */\n showOverLimit?: boolean\n}\n\nconst UsageBar = React.forwardRef<HTMLDivElement, UsageBarProps>(\n (\n {\n className,\n size,\n label,\n used,\n included,\n icon: Icon,\n color = 'cyan',\n showOverLimit = true,\n ...props\n },\n ref\n ) => {\n const percentage = included > 0 ? Math.min((used / included) * 100, 100) : 0\n const isOverLimit = used > included\n\n const progressHeight = {\n sm: 'h-1.5',\n default: 'h-2.5',\n lg: 'h-3',\n }[size || 'default']\n\n return (\n <div\n ref={ref}\n className={cn(usageBarVariants({ size }), className)}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {Icon && (\n <Icon className={cn(\n 'h-5 w-5',\n isOverLimit ? 'text-red-500' : 'text-gray-500'\n )} />\n )}\n <span className=\"font-medium text-[var(--black)]\">{label}</span>\n </div>\n <div className=\"text-right\">\n <span\n className={cn(\n 'text-lg font-semibold',\n isOverLimit ? 'text-red-500' : 'text-[var(--black)]'\n )}\n >\n {used.toLocaleString()}\n </span>\n <span className=\"text-gray-500\"> / {included.toLocaleString()}</span>\n </div>\n </div>\n <Progress\n value={percentage}\n className={cn(\n progressHeight,\n isOverLimit\n ? '[&>div]:bg-red-500'\n : progressColorVariants({ color })\n )}\n />\n {isOverLimit && showOverLimit && (\n <p className=\"text-sm text-red-500\">\n Over limit by {(used - included).toLocaleString()} actions\n </p>\n )}\n </div>\n )\n }\n)\nUsageBar.displayName = 'UsageBar'\n\nexport { UsageBar, usageBarVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface UsageChartDataPoint {\n /** Label for the data point (e.g., month name) */\n label: string\n /** Primary value */\n value: number\n /** Secondary value (optional, for stacked bars) */\n secondaryValue?: number\n}\n\nexport interface UsageChartProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chart data points */\n data: UsageChartDataPoint[]\n /** Height of the chart area in pixels */\n height?: number\n /** Primary bar color */\n primaryColor?: string\n /** Secondary bar color (for stacked bars) */\n secondaryColor?: string\n /** Show value labels on hover */\n showTooltip?: boolean\n /** Format function for values */\n formatValue?: (value: number) => string\n}\n\nconst UsageChart = React.forwardRef<HTMLDivElement, UsageChartProps>(\n (\n {\n className,\n data,\n height = 200,\n primaryColor = 'var(--cyan)',\n secondaryColor = '#a855f7',\n showTooltip = true,\n formatValue = (v) => v.toLocaleString(),\n ...props\n },\n ref\n ) => {\n const [hoveredIndex, setHoveredIndex] = React.useState<number | null>(null)\n\n // Calculate max value for scaling\n const maxValue = React.useMemo(() => {\n return Math.max(\n ...data.map((d) => d.value + (d.secondaryValue || 0)),\n 1\n )\n }, [data])\n\n // Add padding to max value for visual breathing room\n const scaledMax = maxValue * 1.1\n\n const barWidth = 100 / Math.max(data.length, 1)\n const barGap = barWidth * 0.3\n const actualBarWidth = barWidth - barGap\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n <div className=\"relative\" style={{ height }}>\n {/* Y-axis grid lines */}\n <div className=\"absolute inset-0 flex flex-col justify-between pointer-events-none\">\n {[0, 1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex items-center w-full\">\n <div className=\"w-full border-t border-gray-100\" />\n </div>\n ))}\n </div>\n\n {/* Bars */}\n <svg\n className=\"absolute inset-0 w-full h-full\"\n preserveAspectRatio=\"none\"\n >\n {data.map((point, index) => {\n const primaryHeight = (point.value / scaledMax) * 100\n const secondaryHeight = point.secondaryValue\n ? (point.secondaryValue / scaledMax) * 100\n : 0\n const totalHeight = primaryHeight + secondaryHeight\n const x = index * barWidth + barGap / 2\n const isHovered = hoveredIndex === index\n\n return (\n <g\n key={index}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n className=\"cursor-pointer\"\n >\n {/* Hover background */}\n <rect\n x={`${x}%`}\n y=\"0\"\n width={`${actualBarWidth}%`}\n height=\"100%\"\n fill={isHovered ? 'rgba(0,0,0,0.02)' : 'transparent'}\n rx=\"4\"\n />\n {/* Secondary bar (stacked on top) */}\n {point.secondaryValue !== undefined && point.secondaryValue > 0 && (\n <rect\n x={`${x}%`}\n y={`${100 - totalHeight}%`}\n width={`${actualBarWidth}%`}\n height={`${secondaryHeight}%`}\n fill={secondaryColor}\n rx=\"4\"\n className=\"transition-all duration-200\"\n style={{\n opacity: isHovered ? 1 : 0.85,\n }}\n />\n )}\n {/* Primary bar */}\n <rect\n x={`${x}%`}\n y={`${100 - primaryHeight - (point.secondaryValue ? 0 : 0)}%`}\n width={`${actualBarWidth}%`}\n height={`${primaryHeight}%`}\n fill={primaryColor}\n rx={point.secondaryValue ? '0' : '4'}\n style={{\n borderTopLeftRadius: point.secondaryValue ? 0 : 4,\n borderTopRightRadius: point.secondaryValue ? 0 : 4,\n }}\n className=\"transition-all duration-200\"\n />\n </g>\n )\n })}\n </svg>\n\n {/* Tooltip */}\n {showTooltip && hoveredIndex !== null && data[hoveredIndex] && (\n <div\n className=\"absolute z-10 px-3 py-2 text-sm bg-[var(--black)] text-white rounded-lg shadow-lg pointer-events-none transform -translate-x-1/2\"\n style={{\n left: `${(hoveredIndex + 0.5) * barWidth}%`,\n top: -8,\n }}\n >\n <div className=\"font-medium\">{data[hoveredIndex].label}</div>\n <div className=\"flex items-center gap-2 mt-1\">\n <span\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: primaryColor }}\n />\n <span>{formatValue(data[hoveredIndex].value)}</span>\n </div>\n {data[hoveredIndex].secondaryValue !== undefined && (\n <div className=\"flex items-center gap-2\">\n <span\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: secondaryColor }}\n />\n <span>{formatValue(data[hoveredIndex].secondaryValue)}</span>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* X-axis labels */}\n <div className=\"flex mt-3\">\n {data.map((point, index) => (\n <div\n key={index}\n className=\"text-center text-xs text-gray-500 truncate\"\n style={{ width: `${barWidth}%` }}\n >\n {point.label}\n </div>\n ))}\n </div>\n </div>\n )\n }\n)\nUsageChart.displayName = 'UsageChart'\n\nexport { UsageChart }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Show error state */\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, error, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n 'flex h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--black)] placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n ref={ref}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n />\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n return (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // only prevent text selection if clicking inside the label itself\n const target = event.target as HTMLElement;\n if (target.closest('button, input, select, textarea')) return;\n\n props.onMouseDown?.(event);\n // prevent text selection when double clicking label\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }}\n />\n );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n Label,\n //\n Root,\n};\nexport type { LabelProps };\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none text-[var(--black)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport type { LabelProps } from '@radix-ui/react-label'\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Show error state */\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors resize-none',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n ref={ref}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretDown } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, error, children, ...props }, ref) => {\n return (\n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n 'h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background',\n 'placeholder:text-gray-500',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',\n 'appearance-none pr-10',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n >\n {children}\n </select>\n <CaretDown \n size={16} \n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 pointer-events-none\" \n />\n </div>\n )\n }\n)\nSelect.displayName = 'Select'\n\nexport { Select }\n","/**\n * Dilipod Icon Library\n *\n * Re-exports all Phosphor icons for use across the design system.\n * Import icons from '@dilipod/ui' instead of '@phosphor-icons/react' directly.\n *\n * @example\n * import { ArrowRight, Brain, CheckCircle } from '@dilipod/ui'\n */\n\n// Export all icons from Phosphor\nexport * from '@phosphor-icons/react'\n\n// Export Icon type for typing icon components\nexport type { Icon } from '@phosphor-icons/react'\n","'use client'\n\nimport * as React from 'react'\nimport { Check } from '../icons'\nimport { cn } from '../lib/utils'\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n onCheckedChange?: (checked: boolean) => void\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, checked, onCheckedChange, ...props }, ref) => {\n return (\n <label className=\"relative inline-flex items-center cursor-pointer\">\n <input\n type=\"checkbox\"\n className=\"sr-only peer\"\n checked={checked}\n onChange={(e) => onCheckedChange?.(e.target.checked)}\n ref={ref}\n {...props}\n />\n <div\n className={cn(\n 'w-5 h-5 border border-gray-300 rounded-[2px] flex items-center justify-center transition-colors',\n 'peer-checked:bg-[var(--black)] peer-checked:border-[var(--black)]',\n 'peer-focus-visible:outline-none',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n className\n )}\n >\n {checked && <Check className=\"h-3.5 w-3.5 text-white\" weight=\"bold\" />}\n </div>\n </label>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }\n","'use client'\n\nimport * as React from 'react'\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport { cn } from '../lib/utils'\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size = 'default', ...props }, ref) => {\n const sizeStyles = {\n sm: {\n root: 'h-4 w-7',\n thumb: 'h-3 w-3 data-[state=checked]:translate-x-3',\n },\n default: {\n root: 'h-5 w-9',\n thumb: 'h-4 w-4 data-[state=checked]:translate-x-4',\n },\n lg: {\n root: 'h-6 w-11',\n thumb: 'h-5 w-5 data-[state=checked]:translate-x-5',\n },\n }\n\n return (\n <SwitchPrimitive.Root\n className={cn(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--cyan)] data-[state=unchecked]:bg-input',\n sizeStyles[size].root,\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n 'pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0',\n sizeStyles[size].thumb\n )}\n />\n </SwitchPrimitive.Root>\n )\n})\nSwitch.displayName = SwitchPrimitive.Root.displayName\n\n// Convenience component with label\nexport interface LabeledSwitchProps extends SwitchProps {\n label: string\n description?: string\n labelPosition?: 'left' | 'right'\n}\n\nconst LabeledSwitch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n LabeledSwitchProps\n>(({ label, description, labelPosition = 'right', className, id, ...props }, ref) => {\n const switchId = id || React.useId()\n\n const labelContent = (\n <div className=\"space-y-0.5\">\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3',\n labelPosition === 'left' && 'flex-row-reverse justify-end',\n className\n )}\n >\n <Switch ref={ref} id={switchId} {...props} />\n {labelContent}\n </div>\n )\n})\nLabeledSwitch.displayName = 'LabeledSwitch'\n\nexport { Switch, LabeledSwitch }\n","'use client'\n\nimport * as React from 'react'\nimport * as SliderPrimitive from '@radix-ui/react-slider'\nimport { cn } from '../lib/utils'\n\nexport interface SliderProps\n extends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n /** Show value label */\n showValue?: boolean\n /** Format function for the value display */\n formatValue?: (value: number) => string\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({ className, showValue, formatValue, size = 'default', ...props }, ref) => {\n const value = props.value ?? props.defaultValue ?? [0]\n const currentValue = Array.isArray(value) ? value[0] : value\n\n const sizeStyles = {\n sm: {\n track: 'h-1',\n thumb: 'h-3.5 w-3.5',\n },\n default: {\n track: 'h-1.5',\n thumb: 'h-4 w-4',\n },\n lg: {\n track: 'h-2',\n thumb: 'h-5 w-5',\n },\n }\n\n return (\n <div className={cn('flex items-center gap-3', showValue && 'pr-12 relative')}>\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n 'relative flex w-full touch-none select-none items-center',\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n className={cn(\n 'relative w-full grow overflow-hidden rounded-full bg-gray-200',\n sizeStyles[size].track\n )}\n >\n <SliderPrimitive.Range className=\"absolute h-full bg-[var(--cyan)]\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n className={cn(\n 'block rounded-full border-2 border-[var(--cyan)] bg-white shadow-md ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--cyan)] focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'hover:border-[var(--cyan-dark,#00bfaa)] cursor-pointer',\n sizeStyles[size].thumb\n )}\n />\n </SliderPrimitive.Root>\n {showValue && (\n <span className=\"absolute right-0 text-sm font-mono text-[var(--black)] min-w-[3rem] text-right\">\n {formatValue ? formatValue(currentValue) : currentValue}\n </span>\n )}\n </div>\n )\n})\nSlider.displayName = SliderPrimitive.Root.displayName\n\n// Convenience component with label\nexport interface LabeledSliderProps extends SliderProps {\n label: string\n helperText?: string\n}\n\nconst LabeledSlider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n LabeledSliderProps\n>(({ label, helperText, className, ...props }, ref) => {\n return (\n <div className={cn('space-y-2', className)}>\n <label className=\"text-sm font-medium leading-none text-[var(--black)]\">\n {label}\n </label>\n <Slider ref={ref} {...props} />\n {helperText && (\n <p className=\"text-xs text-muted-foreground\">{helperText}</p>\n )}\n </div>\n )\n})\nLabeledSlider.displayName = 'LabeledSlider'\n\nexport { Slider, LabeledSlider }\n","'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Circle } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn('grid gap-2', className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle weight=\"fill\" className=\"h-2.5 w-2.5 fill-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n// Convenience component for labeled radio items\nexport interface RadioGroupOptionProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n label: string\n description?: string\n}\n\nconst RadioGroupOption = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupOptionProps\n>(({ label, description, className, id, ...props }, ref) => {\n const optionId = id || React.useId()\n\n return (\n <div className={cn('flex items-start gap-3', className)}>\n <RadioGroupItem ref={ref} id={optionId} {...props} />\n <div className=\"space-y-0.5\">\n <label\n htmlFor={optionId}\n className=\"text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n </div>\n )\n})\nRadioGroupOption.displayName = 'RadioGroupOption'\n\n// Card variant for selection cards\nexport interface RadioGroupCardProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n label: string\n description?: string\n children?: React.ReactNode\n}\n\nconst RadioGroupCard = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupCardProps\n>(({ label, description, children, className, id, ...props }, ref) => {\n const cardId = id || React.useId()\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={cardId}\n className={cn(\n 'relative flex cursor-pointer rounded-lg border bg-background p-4 transition-all hover:border-[var(--cyan)]/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=checked]:border-[var(--cyan)] data-[state=checked]:ring-1 data-[state=checked]:ring-[var(--cyan)] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <div className=\"flex w-full items-start gap-3\">\n <div className=\"flex h-5 items-center\">\n <div className=\"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow\">\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center h-full\">\n <Circle weight=\"fill\" className=\"h-2.5 w-2.5 fill-[var(--cyan)]\" />\n </RadioGroupPrimitive.Indicator>\n </div>\n </div>\n <div className=\"flex-1 space-y-1\">\n <label\n htmlFor={cardId}\n className=\"text-sm font-medium leading-none cursor-pointer\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n {children}\n </div>\n </div>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupCard.displayName = 'RadioGroupCard'\n\nexport { RadioGroup, RadioGroupItem, RadioGroupOption, RadioGroupCard }\n","'use client'\n\nimport * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { CaretDown } from '../icons'\n\nimport { cn } from '../lib/utils'\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-gray-200', className)}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex flex-1 items-center justify-between py-4 font-medium text-[var(--black)] transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n <CaretDown className=\"h-4 w-4 shrink-0 text-gray-500 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Separator\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Separator';\nconst DEFAULT_ORIENTATION = 'horizontal';\nconst ORIENTATIONS = ['horizontal', 'vertical'] as const;\n\ntype Orientation = (typeof ORIENTATIONS)[number];\ntype SeparatorElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface SeparatorProps extends PrimitiveDivProps {\n /**\n * Either `vertical` or `horizontal`. Defaults to `horizontal`.\n */\n orientation?: Orientation;\n /**\n * Whether or not the component is purely decorative. When true, accessibility-related attributes\n * are updated so that that the rendered element is removed from the accessibility tree.\n */\n decorative?: boolean;\n}\n\nconst Separator = React.forwardRef<SeparatorElement, SeparatorProps>((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n // `aria-orientation` defaults to `horizontal` so we only need it if `orientation` is vertical\n const ariaOrientation = orientation === 'vertical' ? orientation : undefined;\n const semanticProps = decorative\n ? { role: 'none' }\n : { 'aria-orientation': ariaOrientation, role: 'separator' };\n\n return (\n <Primitive.div\n data-orientation={orientation}\n {...semanticProps}\n {...domProps}\n ref={forwardedRef}\n />\n );\n});\n\nSeparator.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction isValidOrientation(orientation: any): orientation is Orientation {\n return ORIENTATIONS.includes(orientation);\n}\n\nconst Root = Separator;\n\nexport {\n Separator,\n //\n Root,\n};\nexport type { SeparatorProps };\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nimport { cn } from '../lib/utils'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = 'horizontal', decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-gray-200',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport type { SeparatorProps } from '@radix-ui/react-separator'\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { CaretDown } from '../icons'\n\nimport { cn } from '../lib/utils'\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n 'relative z-10 flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n 'group flex flex-1 list-none items-center justify-center space-x-1',\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-10 w-max items-center justify-center rounded-md bg-white px-4 py-2 text-sm font-medium text-[var(--black)] transition-colors hover:bg-gray-100 hover:text-[var(--black)] focus:bg-gray-100 focus:text-[var(--black)] focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-[var(--black)] data-[state=open]:bg-gray-100/50 data-[state=open]:hover:bg-gray-100 data-[state=open]:focus:bg-gray-100'\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <CaretDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto',\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn('absolute left-0 top-full flex justify-center')}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n 'origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-gray-200 bg-white text-[var(--black)] shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n 'top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in',\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-gray-200 shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, CaretRight, Circle } from \"../icons\"\n\nimport { cn } from \"../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <CaretRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-lg\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-sm border bg-popover p-1.5 text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-3 py-2 text-sm outline-none transition-colors focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-3 py-2 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport type { Icon } from '../icons'\n\nexport interface SidebarNavItem {\n name: string\n href: string\n icon: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n}\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Navigation items for the main section */\n mainNav?: SidebarNavItem[]\n /** Navigation items for the bottom section */\n bottomNav?: SidebarNavItem[]\n /** Current pathname for active state detection */\n pathname?: string\n /** Optional search button configuration */\n searchButton?: {\n label?: string\n shortcut?: string\n onClick?: () => void\n }\n /** Optional help/support link */\n helpLink?: {\n href: string\n label?: string\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n }\n /** Optional assistant button configuration */\n assistantButton?: {\n label?: string\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n onClick?: () => void\n }\n /** Header content (e.g., Logo) */\n header?: React.ReactNode\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<React.AnchorHTMLAttributes<HTMLAnchorElement> & { href: string }>\n}\n\nexport interface SidebarNavItemProps {\n item: SidebarNavItem\n isActive?: boolean\n className?: string\n /** Custom Link component */\n LinkComponent?: React.ComponentType<{ href: string; className?: string; children?: React.ReactNode } & Record<string, any>>\n}\n\nconst SidebarNavItem = React.forwardRef<HTMLAnchorElement, SidebarNavItemProps>(\n ({ item, isActive, className, LinkComponent, ...props }, ref) => {\n const Icon = item.icon as React.ComponentType<any>\n const baseClassName = cn(\n 'flex items-center gap-3 rounded-md px-3 py-2.5 text-sm transition-colors focus-visible:outline-none',\n isActive\n ? 'bg-muted text-foreground font-medium'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50',\n className\n )\n\n if (LinkComponent) {\n const Comp = LinkComponent\n return (\n <Comp\n ref={ref}\n href={item.href}\n className={baseClassName}\n {...(props as any)}\n >\n <Icon className=\"h-5 w-5 shrink-0\" weight={isActive ? 'fill' : 'regular'} />\n <span>{item.name}</span>\n </Comp>\n )\n }\n\n return (\n <a\n ref={ref}\n href={item.href}\n className={baseClassName}\n {...(props as any)}\n >\n <Icon className=\"h-5 w-5 shrink-0\" weight={isActive ? 'fill' : 'regular'} />\n <span>{item.name}</span>\n </a>\n )\n }\n)\nSidebarNavItem.displayName = 'SidebarNavItem'\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n mainNav = [],\n bottomNav = [],\n pathname,\n searchButton,\n helpLink,\n assistantButton,\n header,\n LinkComponent,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isActive = (href: string) => {\n if (!pathname) return false\n if (href === '/dashboard' || href === '/') {\n return pathname === '/dashboard' || pathname === '/'\n }\n return pathname.startsWith(href)\n }\n\n return (\n <aside\n ref={ref}\n className={cn(\n 'relative flex h-full w-60 flex-col border-r border-border bg-background',\n className\n )}\n {...props}\n >\n {/* Header */}\n {header && (\n <div className=\"flex h-14 items-center px-4 border-b\">\n {header}\n </div>\n )}\n\n {/* Search */}\n {searchButton && (\n <div className=\"px-3 py-3\">\n <button\n onClick={searchButton.onClick}\n className=\"flex w-full items-center gap-2 rounded-sm border bg-background px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50 transition-colors\"\n >\n {searchButton.label && <span>{searchButton.label}</span>}\n {searchButton.shortcut && (\n <kbd className=\"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded-sm\">\n {searchButton.shortcut}\n </kbd>\n )}\n </button>\n </div>\n )}\n\n {/* Main Navigation */}\n {mainNav.length > 0 && (\n <nav className=\"flex-1 px-3 pt-4 space-y-1\">\n {mainNav.map((item) => (\n <SidebarNavItem\n key={item.name}\n item={item}\n isActive={isActive(item.href)}\n LinkComponent={LinkComponent}\n />\n ))}\n </nav>\n )}\n\n {/* Custom children content */}\n {children}\n\n {/* Bottom Navigation */}\n {bottomNav.length > 0 && (\n <div className=\"px-3 pb-3 space-y-1 border-t pt-3\">\n {bottomNav.map((item) => (\n <SidebarNavItem\n key={item.name}\n item={item}\n isActive={isActive(item.href)}\n LinkComponent={LinkComponent}\n />\n ))}\n </div>\n )}\n\n {/* Help & Assistant Section */}\n {(helpLink || assistantButton) && (\n <div className=\"px-3 pb-4 pt-3 border-t\">\n {assistantButton && (\n <button\n onClick={assistantButton.onClick}\n className=\"flex w-full items-center gap-3 rounded-lg bg-[var(--cyan)]/10 px-3 py-2.5 text-sm font-medium text-[var(--cyan)] hover:bg-[var(--cyan)]/20 transition-colors mb-2\"\n >\n {assistantButton.icon && (\n <div className=\"flex h-7 w-7 items-center justify-center rounded-full bg-[var(--cyan)] text-white\">\n <assistantButton.icon className=\"h-4 w-4\" />\n </div>\n )}\n <span>{assistantButton.label || 'Ask Assistant'}</span>\n </button>\n )}\n {helpLink && (\n <a\n href={helpLink.href}\n className=\"flex items-center gap-3 rounded-sm px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors\"\n >\n {helpLink.icon && (\n <helpLink.icon className=\"h-4 w-4\" />\n )}\n {helpLink.label}\n </a>\n )}\n </div>\n )}\n </aside>\n )\n }\n)\nSidebar.displayName = 'Sidebar'\n\nexport { Sidebar, SidebarNavItem }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst alertVariants = cva(\n 'rounded-sm border p-3 text-sm',\n {\n variants: {\n variant: {\n default: 'bg-background border-border text-foreground',\n success: 'bg-green-50 border-green-200 text-green-900',\n error: 'bg-red-50 border-red-200 text-red-900',\n warning: 'bg-amber-50 border-amber-200 text-amber-900',\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n primary: 'bg-[var(--cyan)]/10 border-[var(--cyan)]/20 text-[var(--cyan)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Optional icon to display */\n icon?: React.ReactNode\n /** Optional title */\n title?: string\n /** Optional action button */\n action?: React.ReactNode\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant, icon, title, action, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 flex-1\">\n {icon && <div className=\"shrink-0 mt-0.5\">{icon}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"font-semibold mb-1\">{title}</p>\n )}\n <div className={title ? 'text-sm' : ''}>{children}</div>\n </div>\n </div>\n {action && (\n <div className=\"shrink-0\">\n {action}\n </div>\n )}\n </div>\n </div>\n )\n }\n)\nAlert.displayName = 'Alert'\n\nexport { Alert, alertVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Optional icon to display */\n icon?: React.ReactNode\n /** Title text */\n title?: string\n /** Description text */\n description?: string\n /** Optional action button */\n action?: React.ReactNode\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, size = 'default', ...props }, ref) => {\n const paddingClass = {\n sm: 'p-8',\n default: 'p-12',\n lg: 'p-16',\n }[size]\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-sm border border-dashed text-center',\n paddingClass,\n className\n )}\n {...props}\n >\n {icon && (\n <div className=\"flex justify-center mb-4\">\n {icon}\n </div>\n )}\n {title && (\n <h3 className=\"text-sm font-semibold text-foreground mb-1\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground mb-4\">\n {description}\n </p>\n )}\n {action && (\n <div className=\"flex justify-center\">\n {action}\n </div>\n )}\n </div>\n )\n }\n)\nEmptyState.displayName = 'EmptyState'\n\nexport { EmptyState }\n","'use client'\n\nimport * as React from 'react'\nimport { Card, CardContent } from './card'\nimport { IconBox } from './icon-box'\nimport { Button } from './button'\nimport { cn } from '../lib/utils'\n\nexport interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Title text */\n title?: string\n /** Description text */\n description?: string\n /** Whether to show the retry button */\n showRetry?: boolean\n /** Whether to show the home/dashboard link */\n showHomeLink?: boolean\n /** Custom retry button text */\n retryText?: string\n /** Custom home link text */\n homeLinkText?: string\n /** Callback when retry is clicked */\n onRetry?: () => void\n /** Callback when home link is clicked */\n onHomeClick?: () => void\n /** Custom icon to display */\n icon?: React.ReactNode\n /** Custom action buttons */\n actions?: React.ReactNode\n}\n\nconst ErrorState = React.forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n title = 'Something went wrong',\n description = 'We encountered an error loading this page. Please try again.',\n showRetry = true,\n showHomeLink = true,\n retryText = 'Try again',\n homeLinkText = 'Go to dashboard',\n onRetry,\n onHomeClick,\n icon,\n actions,\n className,\n ...props\n },\n ref\n ) => {\n // Default icon - Warning icon\n const defaultIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n className=\"text-red-500\"\n >\n <path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z\" />\n </svg>\n )\n\n // Default refresh icon for retry button\n const refreshIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n className=\"mr-2\"\n >\n <path d=\"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64A80,80,0,1,0,207.6,176.16a8,8,0,1,1,13.54,8.49A96,96,0,1,1,227.59,64l.3-.31L208,44.31V56a8,8,0,0,0,8,8h16A8,8,0,0,0,240,56Z\" />\n </svg>\n )\n\n const hasDefaultActions = (showRetry && onRetry) || (showHomeLink && onHomeClick)\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-center min-h-[60vh]', className)}\n {...props}\n >\n <Card className=\"max-w-md w-full\">\n <CardContent className=\"p-8 text-center\">\n <IconBox size=\"lg\" className=\"mx-auto mb-4 bg-red-50\">\n {icon || defaultIcon}\n </IconBox>\n <h2 className=\"text-lg font-semibold text-[var(--black)] mb-2\">\n {title}\n </h2>\n <p className=\"text-sm text-muted-foreground mb-6\">{description}</p>\n {actions ? (\n <div className=\"flex gap-3 justify-center\">{actions}</div>\n ) : hasDefaultActions ? (\n <div className=\"flex gap-3 justify-center\">\n {showRetry && onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n {refreshIcon}\n {retryText}\n </Button>\n )}\n {showHomeLink && onHomeClick && (\n <Button onClick={onHomeClick}>{homeLinkText}</Button>\n )}\n </div>\n ) : null}\n </CardContent>\n </Card>\n </div>\n )\n }\n)\nErrorState.displayName = 'ErrorState'\n\nexport { ErrorState }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n /** Code content */\n children?: React.ReactNode\n /** Language for syntax highlighting (optional) */\n language?: string\n}\n\nconst CodeBlock = React.forwardRef<HTMLPreElement, CodeBlockProps>(\n ({ className, children, language, ...props }, ref) => {\n return (\n <pre\n ref={ref}\n className={cn(\n 'rounded-sm bg-muted p-4 text-sm overflow-auto font-mono',\n className\n )}\n {...(language && { 'data-language': language })}\n {...props}\n >\n <code>{children}</code>\n </pre>\n )\n }\n)\nCodeBlock.displayName = 'CodeBlock'\n\nexport { CodeBlock }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport { Label } from './label'\n\nexport interface FormFieldProps {\n /** Field label */\n label?: string\n /** Error message to display */\n error?: string\n /** Helper text to display below the field */\n helperText?: string\n /** Hint element to display on the right side of the label (e.g., link) */\n hint?: React.ReactNode\n /** Whether the field is required */\n required?: boolean\n /** Field ID for accessibility */\n id?: string\n /** Additional className */\n className?: string\n /** Field content (Input, Textarea, etc.) */\n children: React.ReactNode\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, error, helperText, hint, required, id, className, children, ...props }, ref) => {\n const fieldId = id || React.useId()\n const errorId = `${fieldId}-error`\n const helperId = `${fieldId}-helper`\n\n // Clone children to add error state and IDs\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childProps = child.props as { className?: string; [key: string]: any }\n return React.cloneElement(child as React.ReactElement<any>, {\n id: fieldId,\n 'aria-invalid': error ? 'true' : undefined,\n 'aria-describedby': error ? errorId : helperText ? helperId : undefined,\n className: cn(\n childProps.className,\n error && 'border-red-500 focus-visible:ring-red-500'\n ),\n })\n }\n return child\n })\n\n return (\n <div ref={ref} className={cn('space-y-2', className)} {...props}>\n {(label || hint) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <Label htmlFor={fieldId} className={required ? 'after:content-[\"*\"] after:ml-0.5 after:text-red-500' : ''}>\n {label}\n </Label>\n )}\n {hint && <div>{hint}</div>}\n </div>\n )}\n {enhancedChildren}\n {error && (\n <p id={errorId} className=\"text-sm text-red-600\" role=\"alert\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p id={helperId} className=\"text-xs text-muted-foreground\">\n {helperText}\n </p>\n )}\n </div>\n )\n }\n)\nFormField.displayName = 'FormField'\n\nexport { FormField }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"overflow-x-auto\">\n <table\n ref={ref}\n className={cn('w-full border-collapse', className)}\n {...props}\n />\n </div>\n))\nTable.displayName = 'Table'\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('', className)} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('border-t bg-muted/50 font-medium', className)}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)}\n {...props}\n />\n))\nTableRow.displayName = 'TableRow'\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-semibold text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = 'TableHead'\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n))\nTableCell.displayName = 'TableCell'\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nTableCaption.displayName = 'TableCaption'\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Text to display in the divider */\n text?: string\n /** Orientation */\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n ({ className, text, orientation = 'horizontal', ...props }, ref) => {\n if (orientation === 'vertical') {\n return (\n <div\n ref={ref}\n className={cn('w-px h-full bg-border', className)}\n {...props}\n />\n )\n }\n\n if (text) {\n return (\n <div\n ref={ref}\n className={cn('relative flex items-center', className)}\n {...props}\n >\n <div className=\"flex-1 border-t\" />\n <span className=\"px-2 text-xs uppercase text-muted-foreground bg-background\">\n {text}\n </span>\n <div className=\"flex-1 border-t\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={cn('border-t', className)}\n {...props}\n />\n )\n }\n)\nDivider.displayName = 'Divider'\n\nexport { Divider }\n","'use client'\n\nimport * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../lib/utils'\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-sm bg-muted p-1 text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 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 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\n// Underline variant tabs\nconst TabsListUnderline = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-start border-b border-border',\n className\n )}\n {...props}\n />\n))\nTabsListUnderline.displayName = 'TabsListUnderline'\n\nconst TabsTriggerUnderline = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap px-4 py-2.5 text-sm font-medium text-muted-foreground transition-all hover:text-foreground border-b-2 border-transparent -mb-px',\n 'data-[state=active]:text-[var(--cyan)] data-[state=active]:border-[var(--cyan)] data-[state=active]:font-semibold',\n 'disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nTabsTriggerUnderline.displayName = 'TabsTriggerUnderline'\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n TabsListUnderline,\n TabsTriggerUnderline,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from '@phosphor-icons/react'\n\nimport { cn } from '../lib/utils'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/60',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg gap-4 border border-border bg-white p-6 shadow-lg rounded-sm -translate-x-1/2 -translate-y-1/2',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight text-[var(--black)]',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'\nimport { cn } from '../lib/utils'\nimport { buttonVariants } from './button'\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg 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]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-sm',\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = 'AlertDialogHeader'\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = 'AlertDialogFooter'\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-[var(--black)]', className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: 'outline' }),\n 'mt-2 sm:mt-0',\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\n// Convenience component for common confirmation dialogs\nexport interface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: string\n confirmText?: string\n cancelText?: string\n onConfirm: () => void\n onCancel?: () => void\n variant?: 'default' | 'destructive'\n loading?: boolean\n}\n\nfunction ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n onConfirm,\n onCancel,\n variant = 'default',\n loading = false,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description && (\n <AlertDialogDescription>{description}</AlertDialogDescription>\n )}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel\n onClick={() => {\n onCancel?.()\n onOpenChange(false)\n }}\n >\n {cancelText}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={() => {\n onConfirm()\n }}\n className={cn(\n variant === 'destructive' &&\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90'\n )}\n disabled={loading}\n >\n {loading ? 'Loading...' : confirmText}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n ConfirmDialog,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../lib/utils'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverClose = PopoverPrimitive.Close\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-sm border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nconst PopoverArrow = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitive.Arrow\n ref={ref}\n className={cn('fill-popover', className)}\n {...props}\n />\n))\nPopoverArrow.displayName = PopoverPrimitive.Arrow.displayName\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverArrow,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../lib/utils'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-sm bg-[var(--black)] px-3 py-1.5 text-xs text-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-[var(--black)]', className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\n// Convenience component for simple tooltips\nexport interface SimpleTooltipProps {\n content: React.ReactNode\n children: React.ReactNode\n side?: 'top' | 'right' | 'bottom' | 'left'\n align?: 'start' | 'center' | 'end'\n delayDuration?: number\n}\n\nfunction SimpleTooltip({\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 200,\n}: SimpleTooltipProps) {\n return (\n <TooltipProvider delayDuration={delayDuration}>\n <Tooltip>\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent side={side} align={align}>\n {content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n SimpleTooltip,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as ToastPrimitives from '@radix-ui/react-toast'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X, Check, WarningCircle, Info } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px]',\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-sm border-none p-4 transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-[0.98] data-[state=open]:zoom-in-[0.98] duration-150',\n {\n variants: {\n variant: {\n default: 'bg-[var(--black)] text-white',\n success: 'bg-[var(--black)] text-white',\n error: 'bg-[var(--black)] text-white',\n warning: 'bg-[var(--black)] text-white',\n info: 'bg-[var(--black)] text-white',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-sm border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'absolute right-3 top-3 rounded-sm p-1 text-white/60 transition-colors hover:text-white focus:outline-none',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X size={16} />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn('text-sm font-semibold', className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn('text-sm text-white/70', className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\n// Toast icon helper\nconst ToastIcon = ({ variant }: { variant?: 'default' | 'success' | 'error' | 'warning' | 'info' }) => {\n switch (variant) {\n case 'success':\n return <Check size={18} weight=\"bold\" className=\"text-[var(--cyan)]\" />\n case 'error':\n return <WarningCircle size={18} weight=\"fill\" className=\"text-red-400\" />\n case 'warning':\n return <WarningCircle size={18} weight=\"fill\" className=\"text-amber-400\" />\n case 'info':\n return <Info size={18} weight=\"fill\" className=\"text-[var(--cyan)]\" />\n default:\n return <Info size={18} weight=\"fill\" className=\"text-white/70\" />\n }\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n ToastIcon,\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { ToastActionElement, ToastProps } from './toast'\n\nconst TOAST_LIMIT = 5\nconst TOAST_REMOVE_DELAY = 1000\nconst TOAST_AUTO_DISMISS_DELAY = 4000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\nconst autoDismissTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst scheduleAutoDismiss = (toastId: string) => {\n if (autoDismissTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n autoDismissTimeouts.delete(toastId)\n dispatch({\n type: 'DISMISS_TOAST',\n toastId: toastId,\n })\n }, TOAST_AUTO_DISMISS_DELAY)\n\n autoDismissTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n // Schedule auto-dismiss for the new toast\n scheduleAutoDismiss(action.toast.id)\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n }\n}\n\nexport { useToast, toast }\n","'use client'\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastIcon,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast'\nimport { useToast } from './use-toast'\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, ...props }) {\n const safeVariant = variant ?? undefined\n return (\n <Toast key={id} variant={safeVariant} {...props}>\n <div className=\"flex gap-3\">\n <ToastIcon variant={safeVariant} />\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n </div>\n {action}\n <ToastClose />\n </Toast>\n )\n })}\n <ToastViewport />\n </ToastProvider>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Variant of the skeleton */\n variant?: 'default' | 'circular' | 'rounded'\n /** Width of the skeleton (can be number for px or string like '100%') */\n width?: number | string\n /** Height of the skeleton (can be number for px or string like '2rem') */\n height?: number | string\n /** Whether to show animation */\n animate?: boolean\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant = 'default', width, height, animate = true, style, ...props }, ref) => {\n const variantStyles = {\n default: 'rounded-sm',\n circular: 'rounded-full',\n rounded: 'rounded-md',\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-muted',\n animate && 'animate-pulse',\n variantStyles[variant],\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n ...style,\n }}\n {...props}\n />\n )\n }\n)\nSkeleton.displayName = 'Skeleton'\n\n// Common skeleton patterns\nexport interface SkeletonTextProps extends Omit<SkeletonProps, 'variant'> {\n /** Number of lines to render */\n lines?: number\n /** Gap between lines */\n gap?: number\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, gap = 8, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('space-y-2', className)} style={{ gap }}>\n {Array.from({ length: lines }).map((_, i) => (\n <Skeleton\n key={i}\n height={16}\n width={i === lines - 1 ? '70%' : '100%'}\n {...props}\n />\n ))}\n </div>\n )\n }\n)\nSkeletonText.displayName = 'SkeletonText'\n\nexport interface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether to include a header */\n hasHeader?: boolean\n /** Whether to include an avatar/icon */\n hasAvatar?: boolean\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ hasHeader = true, hasAvatar = false, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('rounded-lg border p-6 space-y-4', className)}\n {...props}\n >\n {hasHeader && (\n <div className=\"flex items-center gap-4\">\n {hasAvatar && <Skeleton variant=\"circular\" width={40} height={40} />}\n <div className=\"space-y-2 flex-1\">\n <Skeleton height={20} width=\"50%\" />\n <Skeleton height={14} width=\"30%\" />\n </div>\n </div>\n )}\n <SkeletonText lines={3} />\n </div>\n )\n }\n)\nSkeletonCard.displayName = 'SkeletonCard'\n\nexport { Skeleton, SkeletonText, SkeletonCard }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretLeft, CaretRight, DotsThree } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\n\nexport interface PaginationProps {\n /** Current page (1-indexed) */\n currentPage: number\n /** Total number of pages */\n totalPages: number\n /** Callback when page changes */\n onPageChange: (page: number) => void\n /** Number of pages to show around current page */\n siblingCount?: number\n /** Whether to show first/last page buttons */\n showBoundaryPages?: boolean\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n /** Additional class name */\n className?: string\n}\n\nfunction generatePagination(\n currentPage: number,\n totalPages: number,\n siblingCount: number\n): (number | 'ellipsis')[] {\n const totalPageNumbers = siblingCount * 2 + 5 // siblings + first + last + current + 2 ellipsis\n\n if (totalPageNumbers >= totalPages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n const showLeftDots = leftSiblingIndex > 2\n const showRightDots = rightSiblingIndex < totalPages - 1\n\n if (!showLeftDots && showRightDots) {\n const leftRange = Array.from(\n { length: 3 + siblingCount * 2 },\n (_, i) => i + 1\n )\n return [...leftRange, 'ellipsis', totalPages]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightRange = Array.from(\n { length: 3 + siblingCount * 2 },\n (_, i) => totalPages - (3 + siblingCount * 2) + i + 1\n )\n return [1, 'ellipsis', ...rightRange]\n }\n\n const middleRange = Array.from(\n { length: siblingCount * 2 + 1 },\n (_, i) => leftSiblingIndex + i\n )\n return [1, 'ellipsis', ...middleRange, 'ellipsis', totalPages]\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n showBoundaryPages = true,\n size = 'default',\n className,\n },\n ref\n ) => {\n const pages = generatePagination(currentPage, totalPages, siblingCount)\n\n const buttonSize = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'default'\n const iconSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16\n\n if (totalPages <= 1) {\n return null\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn('flex items-center gap-1', className)}\n >\n {/* Previous button */}\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n aria-label=\"Go to previous page\"\n >\n <CaretLeft size={iconSize} />\n </Button>\n\n {/* Page numbers */}\n <div className=\"flex items-center gap-1\">\n {pages.map((page, index) => {\n if (page === 'ellipsis') {\n return (\n <span\n key={`ellipsis-${index}`}\n className=\"flex h-9 w-9 items-center justify-center text-muted-foreground\"\n >\n <DotsThree size={iconSize} />\n </span>\n )\n }\n\n const isCurrentPage = page === currentPage\n return (\n <Button\n key={page}\n variant={isCurrentPage ? 'default' : 'outline'}\n size={buttonSize}\n onClick={() => onPageChange(page)}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </Button>\n )\n })}\n </div>\n\n {/* Next button */}\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n aria-label=\"Go to next page\"\n >\n <CaretRight size={iconSize} />\n </Button>\n </nav>\n )\n }\n)\nPagination.displayName = 'Pagination'\n\n// Simple variant with just prev/next\nexport interface SimplePaginationProps {\n currentPage: number\n totalPages: number\n onPageChange: (page: number) => void\n size?: 'sm' | 'default' | 'lg'\n className?: string\n showPageInfo?: boolean\n}\n\nconst SimplePagination = React.forwardRef<HTMLElement, SimplePaginationProps>(\n (\n {\n currentPage,\n totalPages,\n onPageChange,\n size = 'default',\n className,\n showPageInfo = true,\n },\n ref\n ) => {\n const buttonSize = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'default'\n const iconSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16\n\n if (totalPages <= 1) {\n return null\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn('flex items-center gap-2', className)}\n >\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n aria-label=\"Go to previous page\"\n >\n <CaretLeft size={iconSize} />\n <span className=\"ml-1\">Previous</span>\n </Button>\n\n {showPageInfo && (\n <span className=\"text-sm text-muted-foreground px-2\">\n Page {currentPage} of {totalPages}\n </span>\n )}\n\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n aria-label=\"Go to next page\"\n >\n <span className=\"mr-1\">Next</span>\n <CaretRight size={iconSize} />\n </Button>\n </nav>\n )\n }\n)\nSimplePagination.displayName = 'SimplePagination'\n\nexport { Pagination, SimplePagination }\n","'use client'\n\nimport * as React from 'react'\nimport { Check } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface Step {\n id: number\n label: string\n description?: string\n}\n\nexport interface StepProgressProps {\n steps: Step[]\n currentStep: number\n onStepClick?: (step: number) => void\n /** Orientation of the stepper */\n orientation?: 'horizontal' | 'vertical'\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n /** Whether to show labels */\n showLabels?: boolean\n className?: string\n}\n\nconst StepProgress = React.forwardRef<HTMLDivElement, StepProgressProps>(\n (\n {\n steps,\n currentStep,\n onStepClick,\n orientation = 'horizontal',\n size = 'default',\n showLabels = true,\n className,\n },\n ref\n ) => {\n const sizeStyles = {\n sm: {\n indicator: 'w-6 h-6 text-xs',\n icon: 12,\n label: 'text-xs',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-4 sm:w-8' : 'h-6',\n },\n default: {\n indicator: 'w-7 h-7 text-xs',\n icon: 14,\n label: 'text-sm',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-6 sm:w-10 md:w-14' : 'h-8',\n },\n lg: {\n indicator: 'w-8 h-8 text-sm',\n icon: 16,\n label: 'text-sm',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-8 sm:w-12 md:w-16' : 'h-10',\n },\n }\n\n const styles = sizeStyles[size]\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center' : 'flex-col',\n className\n )}\n >\n {steps.map((step, index) => {\n const isCompleted = step.id < currentStep\n const isCurrent = step.id === currentStep\n const isClickable = onStepClick && step.id < currentStep\n\n return (\n <div\n key={step.id}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center' : 'flex-col items-start'\n )}\n >\n {/* Step */}\n <button\n type=\"button\"\n onClick={() => isClickable && onStepClick(step.id)}\n disabled={!isClickable}\n className={cn(\n 'flex items-center gap-2 px-2 py-1.5 rounded-sm transition-colors',\n isClickable ? 'cursor-pointer hover:bg-gray-50' : 'cursor-default',\n orientation === 'vertical' && 'flex-row'\n )}\n >\n {/* Number/Check indicator */}\n <span\n className={cn(\n 'rounded-sm flex items-center justify-center font-bold transition-colors',\n styles.indicator,\n isCompleted\n ? 'bg-[var(--cyan)] text-white'\n : isCurrent\n ? 'bg-[var(--black)] text-white'\n : 'bg-gray-100 text-gray-400'\n )}\n >\n {isCompleted ? (\n <Check size={styles.icon} weight=\"bold\" />\n ) : (\n step.id\n )}\n </span>\n\n {/* Label */}\n {showLabels && (\n <div className={cn(\n orientation === 'horizontal' && 'hidden sm:block',\n 'text-left'\n )}>\n <span\n className={cn(\n 'font-medium transition-colors whitespace-nowrap',\n styles.label,\n isCompleted\n ? 'text-[var(--cyan)]'\n : isCurrent\n ? 'text-[var(--black)]'\n : 'text-gray-400'\n )}\n >\n {step.label}\n </span>\n {step.description && orientation === 'vertical' && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {step.description}\n </p>\n )}\n </div>\n )}\n </button>\n\n {/* Connector line */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'transition-colors',\n styles.connector,\n styles.connectorLength,\n isCompleted ? 'bg-[var(--cyan)]' : 'bg-gray-200',\n orientation === 'vertical' && 'ml-[13px] my-1'\n )}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n }\n)\nStepProgress.displayName = 'StepProgress'\n\n// Compact variant - just dots\nexport interface StepDotsProps {\n totalSteps: number\n currentStep: number\n onStepClick?: (step: number) => void\n className?: string\n}\n\nconst StepDots = React.forwardRef<HTMLDivElement, StepDotsProps>(\n ({ totalSteps, currentStep, onStepClick, className }, ref) => {\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)}>\n {Array.from({ length: totalSteps }, (_, i) => i + 1).map((step) => {\n const isCompleted = step < currentStep\n const isCurrent = step === currentStep\n const isClickable = onStepClick && step < currentStep\n\n return (\n <button\n key={step}\n type=\"button\"\n onClick={() => isClickable && onStepClick(step)}\n disabled={!isClickable}\n className={cn(\n 'w-2 h-2 rounded-full transition-colors',\n isClickable && 'cursor-pointer',\n !isClickable && 'cursor-default',\n isCompleted || isCurrent ? 'bg-[var(--cyan)]' : 'bg-gray-200'\n )}\n aria-label={`Step ${step}`}\n />\n )\n })}\n </div>\n )\n }\n)\nStepDots.displayName = 'StepDots'\n\nexport { StepProgress, StepDots }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretRight, House } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n icon?: React.ReactNode\n}\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[]\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n /** Separator between items */\n separator?: React.ReactNode\n /** Whether to show home icon for first item */\n showHomeIcon?: boolean\n /** Maximum items to show (will collapse middle items) */\n maxItems?: number\n /** Size variant */\n size?: 'sm' | 'default'\n}\n\nconst Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n items,\n LinkComponent,\n separator,\n showHomeIcon = false,\n maxItems,\n size = 'default',\n className,\n ...props\n },\n ref\n ) => {\n const sizeStyles = {\n sm: 'text-xs gap-1',\n default: 'text-sm gap-1.5',\n }\n\n const iconSize = size === 'sm' ? 10 : 12\n\n // Collapse items if maxItems is set\n let displayItems = items\n let isCollapsed = false\n if (maxItems && items.length > maxItems) {\n isCollapsed = true\n displayItems = [\n items[0],\n { label: '...', href: undefined },\n ...items.slice(-(maxItems - 2)),\n ]\n }\n\n const defaultSeparator = (\n <CaretRight size={iconSize} className=\"text-gray-400\" />\n )\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn('flex items-center text-gray-500', sizeStyles[size], className)}\n {...props}\n >\n <ol className={cn('flex items-center', sizeStyles[size])}>\n {displayItems.map((item, index) => {\n const isFirst = index === 0\n const isLast = index === displayItems.length - 1\n const isEllipsis = item.label === '...'\n\n return (\n <li key={index} className={cn('flex items-center', sizeStyles[size])}>\n {index > 0 && (\n <span className=\"mx-1 text-gray-400\">\n {separator || defaultSeparator}\n </span>\n )}\n\n {isEllipsis ? (\n <span className=\"text-gray-400\">{item.label}</span>\n ) : item.href && !isLast ? (\n LinkComponent ? (\n <LinkComponent\n href={item.href}\n className=\"flex items-center gap-1 hover:text-[var(--black)] transition-colors\"\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </LinkComponent>\n ) : (\n <a\n href={item.href}\n className=\"flex items-center gap-1 hover:text-[var(--black)] transition-colors\"\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </a>\n )\n ) : (\n <span\n className={cn(\n 'flex items-center gap-1',\n isLast && 'text-[var(--black)] font-medium'\n )}\n aria-current={isLast ? 'page' : undefined}\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumbs.displayName = 'Breadcrumbs'\n\n// Simple breadcrumb link component for use within the Breadcrumbs\nexport interface BreadcrumbLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n asChild?: boolean\n}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n 'hover:text-[var(--black)] transition-colors',\n className\n )}\n {...props}\n />\n )\n)\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\nexport { Breadcrumbs, BreadcrumbLink }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Label } from './label'\n\nexport type DateRangePreset = '7d' | '30d' | '90d' | 'custom' | 'today' | 'yesterday' | 'this-week' | 'this-month' | 'this-year'\n\nexport interface DateRangePickerProps {\n /** Currently selected preset */\n value: DateRangePreset\n /** Callback when preset changes */\n onChange: (value: DateRangePreset) => void\n /** Custom start date (ISO string) */\n customStart?: string\n /** Custom end date (ISO string) */\n customEnd?: string\n /** Callback when custom dates change */\n onCustomChange?: (start: string, end: string) => void\n /** Available presets to show */\n presets?: DateRangePreset[]\n /** Size variant */\n size?: 'sm' | 'default'\n /** Additional class name */\n className?: string\n /** Show custom date inputs inline */\n inlineCustom?: boolean\n}\n\nconst presetLabels: Record<DateRangePreset, string> = {\n 'today': 'Today',\n 'yesterday': 'Yesterday',\n '7d': 'Last 7 days',\n '30d': 'Last 30 days',\n '90d': 'Last 90 days',\n 'this-week': 'This week',\n 'this-month': 'This month',\n 'this-year': 'This year',\n 'custom': 'Custom',\n}\n\nconst DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n value,\n onChange,\n customStart = '',\n customEnd = '',\n onCustomChange,\n presets = ['7d', '30d', '90d', 'custom'],\n size = 'default',\n className,\n inlineCustom = true,\n },\n ref\n ) => {\n const buttonSize = size === 'sm' ? 'sm' : 'default'\n\n return (\n <div ref={ref} className={cn('flex flex-wrap items-center gap-2', className)}>\n {presets.map((preset) => (\n <Button\n key={preset}\n variant={value === preset ? 'default' : 'outline'}\n size={buttonSize}\n onClick={() => onChange(preset)}\n >\n {presetLabels[preset]}\n </Button>\n ))}\n\n {value === 'custom' && inlineCustom && onCustomChange && (\n <div className=\"flex items-center gap-2\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"start-date\" className=\"text-xs sr-only\">\n Start\n </Label>\n <Input\n id=\"start-date\"\n type=\"date\"\n value={customStart}\n onChange={(e) => onCustomChange(e.target.value, customEnd)}\n className={cn(size === 'sm' ? 'h-8 text-xs' : 'h-9')}\n aria-label=\"Start date\"\n />\n </div>\n <span className=\"text-muted-foreground\">to</span>\n <div className=\"space-y-1\">\n <Label htmlFor=\"end-date\" className=\"text-xs sr-only\">\n End\n </Label>\n <Input\n id=\"end-date\"\n type=\"date\"\n value={customEnd}\n onChange={(e) => onCustomChange(customStart, e.target.value)}\n className={cn(size === 'sm' ? 'h-8 text-xs' : 'h-9')}\n aria-label=\"End date\"\n />\n </div>\n </div>\n )}\n </div>\n )\n }\n)\nDateRangePicker.displayName = 'DateRangePicker'\n\n// Compact variant with dropdown\nexport interface DateRangeSelectProps {\n value: DateRangePreset\n onChange: (value: DateRangePreset) => void\n presets?: DateRangePreset[]\n className?: string\n}\n\nconst DateRangeSelect = React.forwardRef<HTMLSelectElement, DateRangeSelectProps>(\n ({ value, onChange, presets = ['7d', '30d', '90d'], className }, ref) => {\n return (\n <select\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value as DateRangePreset)}\n className={cn(\n 'h-9 rounded-sm border border-input bg-background px-3 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n >\n {presets.map((preset) => (\n <option key={preset} value={preset}>\n {presetLabels[preset]}\n </option>\n ))}\n </select>\n )\n }\n)\nDateRangeSelect.displayName = 'DateRangeSelect'\n\n// Helper to calculate date range from preset\nexport function getDateRangeFromPreset(preset: DateRangePreset): { start: Date; end: Date } {\n const now = new Date()\n const end = new Date(now)\n end.setHours(23, 59, 59, 999)\n\n let start = new Date(now)\n start.setHours(0, 0, 0, 0)\n\n switch (preset) {\n case 'today':\n break\n case 'yesterday':\n start.setDate(start.getDate() - 1)\n end.setDate(end.getDate() - 1)\n break\n case '7d':\n start.setDate(start.getDate() - 7)\n break\n case '30d':\n start.setDate(start.getDate() - 30)\n break\n case '90d':\n start.setDate(start.getDate() - 90)\n break\n case 'this-week':\n start.setDate(start.getDate() - start.getDay())\n break\n case 'this-month':\n start.setDate(1)\n break\n case 'this-year':\n start.setMonth(0, 1)\n break\n default:\n break\n }\n\n return { start, end }\n}\n\nexport { DateRangePicker, DateRangeSelect }\n","'use client'\n\nimport { useState, useRef } from 'react'\nimport { \n File, \n FileVideo, \n FileDoc, \n FilePdf, \n FileImage, \n Download, \n X, \n Play, \n ArrowSquareOut, \n CircleNotch,\n Folder\n} from '@phosphor-icons/react'\nimport { Card, CardContent, CardHeader, CardTitle } from './card'\n\nexport interface UploadedFile {\n path: string\n filename: string\n type: string\n size: number\n url?: string\n}\n\nexport interface FilePreviewProps {\n files: UploadedFile[]\n title?: string\n /**\n * Function to get signed URL for a file. If not provided, uses the url property from the file object.\n */\n getSignedUrl?: (path: string) => Promise<string | null>\n /**\n * Show as a card with header, or just the file list\n */\n showCard?: boolean\n /**\n * Empty state message\n */\n emptyMessage?: string\n}\n\nfunction getFileIcon(type: string) {\n if (type.startsWith('video/') || type === 'screen_recording') return FileVideo\n if (type.startsWith('image/') || type === 'image') return FileImage\n if (type === 'application/pdf' || type === 'pdf') return FilePdf\n if (type.includes('document') || type === 'document') return FileDoc\n return File\n}\n\nfunction getTypeLabel(type: string): string {\n if (type.startsWith('video/') || type === 'screen_recording') return 'Video'\n if (type.startsWith('audio/')) return 'Audio'\n if (type.startsWith('image/') || type === 'image') return 'Image'\n if (type === 'application/pdf' || type === 'pdf') return 'PDF'\n if (type.includes('document') || type === 'document') return 'Document'\n return 'File'\n}\n\nfunction formatSize(size: number): string {\n if (size < 1024) return `${size} B`\n if (size < 1024 * 1024) return `${Math.round(size / 1024)} KB`\n return `${(size / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction canPreview(file: UploadedFile): boolean {\n const ext = file.filename.toLowerCase().split('.').pop() || ''\n // Images\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return true\n // Videos\n if (['mp4', 'webm', 'mov', 'avi', 'mkv'].includes(ext)) return true\n // PDFs\n if (ext === 'pdf') return true\n // By type\n if (file.type.startsWith('image/') || file.type === 'image') return true\n if (file.type.startsWith('video/') || file.type === 'screen_recording') return true\n if (file.type === 'application/pdf' || file.type === 'pdf') return true\n return false\n}\n\nfunction getPreviewType(file: UploadedFile): 'image' | 'video' | 'pdf' | 'none' {\n const ext = file.filename.toLowerCase().split('.').pop() || ''\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext) || file.type.startsWith('image/') || file.type === 'image') return 'image'\n if (['mp4', 'webm', 'mov', 'avi', 'mkv'].includes(ext) || file.type.startsWith('video/') || file.type === 'screen_recording') return 'video'\n if (ext === 'pdf' || file.type === 'application/pdf' || file.type === 'pdf') return 'pdf'\n return 'none'\n}\n\nexport function FilePreview({ \n files, \n title = 'Uploaded Files',\n getSignedUrl,\n showCard = true,\n emptyMessage = 'No files uploaded'\n}: FilePreviewProps) {\n const [previewFile, setPreviewFile] = useState<UploadedFile | null>(null)\n const [videoError, setVideoError] = useState(false)\n const [signedUrl, setSignedUrl] = useState<string | null>(null)\n const [loadingUrl, setLoadingUrl] = useState(false)\n const [urlError, setUrlError] = useState<string | null>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n\n const handleOpenPreview = async (file: UploadedFile) => {\n setVideoError(false)\n setPreviewFile(file)\n setUrlError(null)\n \n // Get the URL\n if (file.url) {\n setSignedUrl(file.url)\n } else if (getSignedUrl) {\n setLoadingUrl(true)\n try {\n const url = await getSignedUrl(file.path)\n if (url) {\n setSignedUrl(url)\n } else {\n setUrlError('Failed to load file URL')\n }\n } catch (error) {\n setUrlError(error instanceof Error ? error.message : 'Failed to load file')\n } finally {\n setLoadingUrl(false)\n }\n } else {\n setUrlError('No URL available for this file')\n }\n }\n\n const handleClosePreview = () => {\n setPreviewFile(null)\n setSignedUrl(null)\n setUrlError(null)\n setLoadingUrl(false)\n setVideoError(false)\n }\n\n const handleDownload = async (e: React.MouseEvent, file: UploadedFile) => {\n e.stopPropagation()\n \n let url = file.url\n if (!url && getSignedUrl) {\n url = await getSignedUrl(file.path) || undefined\n }\n \n if (url) {\n window.open(url, '_blank')\n }\n }\n\n const content = (\n <>\n {files.length > 0 ? (\n <div className=\"space-y-2\">\n {files.map((file, i) => {\n const FileIcon = getFileIcon(file.type)\n const typeLabel = getTypeLabel(file.type)\n const sizeLabel = formatSize(file.size)\n const isPreviewable = canPreview(file)\n const previewType = getPreviewType(file)\n \n return (\n <div \n key={i}\n className={`flex items-center justify-between p-3 rounded-md bg-gray-50 transition-colors ${\n isPreviewable ? 'hover:bg-gray-100 cursor-pointer' : ''\n }`}\n onClick={() => isPreviewable && handleOpenPreview(file)}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n <div className=\"relative shrink-0\">\n <div className=\"w-10 h-10 rounded-sm bg-white border border-gray-200 flex items-center justify-center\">\n <FileIcon className=\"w-5 h-5 text-[var(--cyan)]\" weight=\"fill\" />\n </div>\n {previewType === 'video' && (\n <Play className=\"absolute -bottom-0.5 -right-0.5 w-3.5 h-3.5 text-[var(--cyan)] bg-white rounded-full\" weight=\"fill\" />\n )}\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-[var(--black)] truncate\">{file.filename}</p>\n <p className=\"text-xs text-muted-foreground\">\n {typeLabel} · {sizeLabel}\n {isPreviewable && (\n <span className=\"text-[var(--cyan)] ml-1\">· Click to preview</span>\n )}\n </p>\n </div>\n </div>\n <button \n onClick={(e) => handleDownload(e, file)}\n className=\"p-2 rounded-sm hover:bg-gray-200 transition-colors shrink-0\"\n title=\"Download\"\n >\n <Download className=\"w-4 h-4 text-muted-foreground\" />\n </button>\n </div>\n )\n })}\n </div>\n ) : (\n <div className=\"flex items-center justify-center h-32 border border-dashed border-gray-200 rounded-md\">\n <div className=\"text-center\">\n <Folder size={24} className=\"text-gray-300 mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n </div>\n </div>\n )}\n\n {/* Preview Modal */}\n {previewFile && (\n <div \n className=\"fixed inset-0 z-50 bg-black/80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n >\n <div \n className=\"bg-white rounded-lg max-w-5xl w-full max-h-[90vh] flex flex-col overflow-hidden shadow-2xl\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <div className=\"flex items-center gap-3 min-w-0\">\n {(() => {\n const FileIcon = getFileIcon(previewFile.type)\n return <FileIcon className=\"w-5 h-5 text-[var(--cyan)] flex-shrink-0\" weight=\"fill\" />\n })()}\n <div className=\"min-w-0\">\n <p className=\"font-medium text-[var(--black)] truncate\">{previewFile.filename}</p>\n <p className=\"text-xs text-muted-foreground\">\n {getTypeLabel(previewFile.type)} · {formatSize(previewFile.size)}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n {signedUrl && (\n <>\n <a\n href={signedUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors\"\n title=\"Open in new tab\"\n >\n <ArrowSquareOut className=\"w-5 h-5 text-muted-foreground\" />\n </a>\n <a\n href={signedUrl}\n download={previewFile.filename}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors\"\n title=\"Download\"\n >\n <Download className=\"w-5 h-5 text-muted-foreground\" />\n </a>\n </>\n )}\n <button\n onClick={handleClosePreview}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors ml-2\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-auto p-4 bg-gray-900 flex items-center justify-center min-h-[400px]\">\n {loadingUrl && (\n <div className=\"text-center text-white\">\n <CircleNotch className=\"w-8 h-8 mx-auto mb-2 animate-spin text-[var(--cyan)]\" />\n <p className=\"text-sm text-gray-400\">Loading file...</p>\n </div>\n )}\n {urlError && (\n <div className=\"text-center text-white max-w-md\">\n <File className=\"w-16 h-16 mx-auto mb-4 text-gray-500\" />\n <p className=\"text-lg font-medium mb-2\">Failed to Load File</p>\n <p className=\"text-sm text-gray-400\">{urlError}</p>\n </div>\n )}\n {signedUrl && !loadingUrl && !urlError && (\n <>\n {getPreviewType(previewFile) === 'image' && (\n <img \n src={signedUrl} \n alt={previewFile.filename}\n className=\"max-w-full max-h-[70vh] object-contain rounded-md\"\n />\n )}\n {getPreviewType(previewFile) === 'video' && !videoError && (\n <video \n ref={videoRef}\n src={signedUrl}\n controls\n autoPlay\n className=\"w-full max-h-[70vh] rounded-md bg-black\"\n onError={() => setVideoError(true)}\n >\n Your browser does not support the video tag.\n </video>\n )}\n {getPreviewType(previewFile) === 'video' && videoError && (\n <div className=\"text-center text-white max-w-md\">\n <FileVideo className=\"w-16 h-16 mx-auto mb-4 text-gray-500\" />\n <p className=\"text-lg font-medium mb-2\">Video Preview Not Available</p>\n <p className=\"text-sm text-gray-400 mb-6\">\n This video format (.{previewFile.filename.split('.').pop()}) cannot be played directly in the browser.\n </p>\n <div className=\"flex gap-3 justify-center\">\n <a\n href={signedUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-white text-gray-900 rounded-full text-sm font-medium hover:bg-gray-100 transition-colors\"\n >\n <ArrowSquareOut className=\"w-4 h-4\" />\n Open in New Tab\n </a>\n <a\n href={signedUrl}\n download={previewFile.filename}\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-[var(--cyan)] text-gray-900 rounded-full text-sm font-medium hover:bg-[var(--cyan)]/90 transition-colors\"\n >\n <Download className=\"w-4 h-4\" />\n Download\n </a>\n </div>\n </div>\n )}\n {getPreviewType(previewFile) === 'pdf' && (\n <iframe\n src={signedUrl}\n className=\"w-full h-[70vh] rounded-md border-0 bg-white\"\n title={previewFile.filename}\n />\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )}\n </>\n )\n\n if (!showCard) {\n return content\n }\n\n return (\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n </CardHeader>\n <CardContent>\n {content}\n </CardContent>\n </Card>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { CaretRight } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface SettingsNavItem {\n title: string\n description: string\n href: string\n icon: React.ReactNode\n}\n\nexport interface SettingsNavGroup {\n title: string\n items: SettingsNavItem[]\n}\n\nexport interface SettingsNavProps extends React.HTMLAttributes<HTMLDivElement> {\n groups: SettingsNavGroup[]\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n}\n\nconst SettingsNav = React.forwardRef<HTMLDivElement, SettingsNavProps>(\n ({ groups, LinkComponent, className, ...props }, ref) => {\n const Link = LinkComponent || 'a'\n\n return (\n <div ref={ref} className={cn('space-y-8', className)} {...props}>\n {groups.map((group) => (\n <div key={group.title}>\n <h2 className=\"text-sm font-medium text-muted-foreground uppercase tracking-wide mb-3 px-1\">\n {group.title}\n </h2>\n <div className=\"space-y-1\">\n {group.items.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200\"\n >\n <div className=\"flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors\">\n <span className=\"text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5\">\n {item.icon}\n </span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors\">\n {item.title}\n </h3>\n <p className=\"text-sm text-muted-foreground\">\n {item.description}\n </p>\n </div>\n <CaretRight\n size={18}\n className=\"text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0\"\n />\n </Link>\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\nSettingsNav.displayName = 'SettingsNav'\n\n// Single item variant\nexport interface SettingsNavLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n title: string\n description?: string\n icon?: React.ReactNode\n /** Custom Link component */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n}\n\nconst SettingsNavLink = React.forwardRef<HTMLAnchorElement, SettingsNavLinkProps>(\n ({ title, description, icon, href, LinkComponent, className, ...props }, ref) => {\n const content = (\n <>\n {icon && (\n <div className=\"flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors\">\n <span className=\"text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5\">\n {icon}\n </span>\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors\">\n {title}\n </h3>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <CaretRight\n size={18}\n className=\"text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0\"\n />\n </>\n )\n\n const linkClassName = cn(\n 'group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200',\n className\n )\n\n if (LinkComponent && href) {\n return (\n <LinkComponent href={href} className={linkClassName}>\n {content}\n </LinkComponent>\n )\n }\n\n return (\n <a ref={ref} href={href} className={linkClassName} {...props}>\n {content}\n </a>\n )\n }\n)\nSettingsNavLink.displayName = 'SettingsNavLink'\n\nexport { SettingsNav, SettingsNavLink }\n","'use client'\n\nimport * as React from 'react'\nimport { Plus, PencilSimple, Trash, Warning, CheckCircle, Question, Lightning, Check, CaretDown, CaretUp } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Input } from './input'\nimport { Select } from './select'\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from './dialog'\n\n// Types\nexport type ScenarioType = 'escalation' | 'default_behavior' | 'quality_check' | 'edge_case'\n\nexport interface Scenario {\n id: string\n type: ScenarioType\n situation: string\n action: string\n}\n\nexport interface ScenarioSuggestion {\n type: ScenarioType\n situation: string\n action: string\n}\n\nexport interface ScenariosManagerProps {\n scenarios: Scenario[]\n onAdd: (scenario: Omit<Scenario, 'id'>) => Promise<void>\n onUpdate: (id: string, scenario: Omit<Scenario, 'id'>) => Promise<void>\n onDelete: (id: string) => Promise<void>\n onComplete?: () => Promise<void>\n suggestions?: ScenarioSuggestion[]\n isLoading?: boolean\n isComplete?: boolean\n minScenariosToComplete?: number\n /** Whether to show expanded by default */\n defaultExpanded?: boolean\n className?: string\n}\n\n// Type configuration - using Dilipod brand colors\nconst typeConfig: Record<ScenarioType, { \n label: string\n icon: React.ElementType\n color: string\n bgColor: string\n description: string\n}> = {\n escalation: {\n label: 'Ask me first',\n icon: Warning,\n color: 'text-amber-600',\n bgColor: 'bg-amber-50',\n description: 'Stop and check with me before proceeding',\n },\n default_behavior: {\n label: 'Handle it',\n icon: CheckCircle,\n color: 'text-[var(--cyan)]',\n bgColor: 'bg-[var(--cyan)]/10',\n description: 'Proceed automatically using this rule',\n },\n quality_check: {\n label: 'Must be correct',\n icon: CheckCircle,\n color: 'text-emerald-600',\n bgColor: 'bg-emerald-50',\n description: 'This is what \"done right\" looks like',\n },\n edge_case: {\n label: 'Watch out',\n icon: Question,\n color: 'text-muted-foreground',\n bgColor: 'bg-muted',\n description: 'Common mistakes or tricky situations',\n },\n}\n\n// Individual scenario card\nfunction ScenarioCard({\n scenario,\n onEdit,\n onDelete,\n}: {\n scenario: Scenario\n onEdit: () => void\n onDelete: () => void\n}) {\n const config = typeConfig[scenario.type]\n const Icon = config.icon\n\n return (\n <div className=\"group relative border border-border rounded-sm p-4 hover:border-[var(--cyan)]/30 hover:bg-[var(--cyan)]/[0.02] transition-all\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 flex-1 min-w-0\">\n <div className={cn('w-9 h-9 rounded-sm flex items-center justify-center shrink-0', config.bgColor)}>\n <Icon size={18} weight=\"fill\" className={config.color} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1.5\">\n <Badge variant=\"outline\" size=\"sm\" className=\"font-medium\">{config.label}</Badge>\n </div>\n <p className=\"text-sm text-[var(--black)]\">\n <span className=\"font-medium\">When:</span> {scenario.situation}\n </p>\n <p className=\"text-sm text-muted-foreground mt-1\">\n <span className=\"text-[var(--black)] font-medium\">Action:</span> {scenario.action}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-[var(--black)]\"\n onClick={onEdit}\n >\n <PencilSimple size={16} />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-red-600 hover:bg-red-50\"\n onClick={onDelete}\n >\n <Trash size={16} />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n\n// Suggestion chip\nfunction SuggestionChip({\n suggestion,\n onAdd,\n disabled,\n}: {\n suggestion: ScenarioSuggestion\n onAdd: () => void\n disabled?: boolean\n}) {\n return (\n <button\n type=\"button\"\n onClick={onAdd}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center gap-1.5 px-3 py-1.5 rounded-sm border border-dashed border-border',\n 'text-sm text-muted-foreground hover:border-[var(--cyan)] hover:text-[var(--cyan)] hover:bg-[var(--cyan)]/5',\n 'transition-all disabled:opacity-50 disabled:cursor-not-allowed'\n )}\n >\n <Plus size={14} weight=\"bold\" />\n {suggestion.situation}\n </button>\n )\n}\n\n// Add/Edit dialog\nfunction ScenarioDialog({\n open,\n onOpenChange,\n scenario,\n onSave,\n isLoading,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n scenario?: Scenario | null\n onSave: (data: Omit<Scenario, 'id'>) => Promise<void>\n isLoading?: boolean\n}) {\n const [type, setType] = React.useState<ScenarioType>(scenario?.type || 'escalation')\n const [situation, setSituation] = React.useState(scenario?.situation || '')\n const [action, setAction] = React.useState(scenario?.action || '')\n const [isSaving, setIsSaving] = React.useState(false)\n\n // Reset form when dialog opens/closes or scenario changes\n React.useEffect(() => {\n if (open) {\n setType(scenario?.type || 'escalation')\n setSituation(scenario?.situation || '')\n setAction(scenario?.action || '')\n }\n }, [open, scenario])\n\n const handleSave = async () => {\n if (!situation.trim() || !action.trim()) return\n \n setIsSaving(true)\n try {\n await onSave({ type, situation: situation.trim(), action: action.trim() })\n onOpenChange(false)\n } finally {\n setIsSaving(false)\n }\n }\n\n const isValid = situation.trim() && action.trim()\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>{scenario ? 'Edit scenario' : 'Add scenario'}</DialogTitle>\n <DialogDescription>\n Define when something happens and what action to take.\n </DialogDescription>\n </DialogHeader>\n \n <div className=\"grid gap-4 py-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">Type</label>\n <Select\n value={type}\n onChange={(e) => setType(e.target.value as ScenarioType)}\n >\n {Object.entries(typeConfig).map(([key, config]) => (\n <option key={key} value={key}>\n {config.label} — {config.description}\n </option>\n ))}\n </Select>\n </div>\n \n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">When...</label>\n <Input\n placeholder=\"e.g., Invoice amount doesn't match PO\"\n value={situation}\n onChange={(e) => setSituation(e.target.value)}\n />\n <p className=\"text-xs text-muted-foreground\">Describe the situation or trigger</p>\n </div>\n \n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">Then...</label>\n <Input\n placeholder=\"e.g., Flag for review, don't process\"\n value={action}\n onChange={(e) => setAction(e.target.value)}\n />\n <p className=\"text-xs text-muted-foreground\">What should happen in this situation</p>\n </div>\n </div>\n \n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button \n onClick={handleSave} \n disabled={!isValid || isSaving}\n loading={isSaving}\n >\n {scenario ? 'Save changes' : 'Add scenario'}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n// Main component\nexport function ScenariosManager({\n scenarios,\n onAdd,\n onUpdate,\n onDelete,\n onComplete,\n suggestions = [],\n isLoading,\n isComplete = false,\n minScenariosToComplete = 1,\n defaultExpanded = true,\n className,\n}: ScenariosManagerProps) {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [editingScenario, setEditingScenario] = React.useState<Scenario | null>(null)\n const [deletingId, setDeletingId] = React.useState<string | null>(null)\n const [isCompleting, setIsCompleting] = React.useState(false)\n const [isExpanded, setIsExpanded] = React.useState(defaultExpanded)\n\n const canComplete = scenarios.length >= minScenariosToComplete && !isComplete && onComplete\n\n const handleAddClick = () => {\n setEditingScenario(null)\n setDialogOpen(true)\n }\n\n const handleEditClick = (scenario: Scenario) => {\n setEditingScenario(scenario)\n setDialogOpen(true)\n }\n\n const handleSave = async (data: Omit<Scenario, 'id'>) => {\n if (editingScenario) {\n await onUpdate(editingScenario.id, data)\n } else {\n await onAdd(data)\n }\n }\n\n const handleDelete = async (id: string) => {\n setDeletingId(id)\n try {\n await onDelete(id)\n } finally {\n setDeletingId(null)\n }\n }\n\n const handleSuggestionAdd = async (suggestion: ScenarioSuggestion) => {\n await onAdd(suggestion)\n }\n\n const handleComplete = async () => {\n if (!onComplete) return\n setIsCompleting(true)\n try {\n await onComplete()\n } finally {\n setIsCompleting(false)\n }\n }\n\n // Filter out suggestions that already exist\n const filteredSuggestions = suggestions.filter(\n (s) => !scenarios.some(\n (existing) => existing.situation.toLowerCase() === s.situation.toLowerCase()\n )\n )\n\n return (\n <div className={cn('space-y-4', className)}>\n {/* Header - clickable to expand/collapse */}\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"w-full flex items-center justify-between hover:bg-muted/30 -mx-2 px-2 py-1 rounded-sm transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-sm bg-[var(--cyan)]/10 flex items-center justify-center\">\n <Lightning size={20} weight=\"fill\" className=\"text-[var(--cyan)]\" />\n </div>\n <div className=\"text-left\">\n <h3 className=\"font-semibold text-[var(--black)]\">Scenarios</h3>\n <p className=\"text-sm text-muted-foreground\">\n {scenarios.length === 0\n ? 'Define rules for edge cases and escalations'\n : `${scenarios.length} scenario${scenarios.length === 1 ? '' : 's'} defined`}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n {isComplete && (\n <div className=\"flex items-center gap-1.5 text-[var(--cyan)]\">\n <CheckCircle size={16} weight=\"fill\" />\n <span className=\"text-sm font-medium\">Complete</span>\n </div>\n )}\n {isExpanded ? (\n <CaretUp size={20} className=\"text-muted-foreground\" />\n ) : (\n <CaretDown size={20} className=\"text-muted-foreground\" />\n )}\n </div>\n </button>\n\n {/* Expandable content */}\n {isExpanded && (\n <>\n {/* Add button */}\n <div className=\"flex justify-end\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleAddClick}>\n <Plus size={16} className=\"mr-1\" />\n Add scenario\n </Button>\n </div>\n\n {/* Scenarios list */}\n {scenarios.length > 0 && (\n <div className=\"grid gap-3\">\n {scenarios.map((scenario) => (\n <ScenarioCard\n key={scenario.id}\n scenario={scenario}\n onEdit={() => handleEditClick(scenario)}\n onDelete={() => handleDelete(scenario.id)}\n />\n ))}\n </div>\n )}\n\n {/* Empty state */}\n {scenarios.length === 0 && (\n <div className=\"border border-dashed border-border rounded-sm p-8 text-center\">\n <div className=\"w-12 h-12 rounded-sm bg-muted flex items-center justify-center mx-auto mb-3\">\n <Lightning size={24} className=\"text-muted-foreground\" />\n </div>\n <p className=\"text-sm text-muted-foreground mb-4\">\n No scenarios yet. Add rules for how the worker should handle edge cases.\n </p>\n <Button variant=\"outline\" size=\"sm\" onClick={handleAddClick}>\n <Plus size={16} className=\"mr-1.5\" />\n Add your first scenario\n </Button>\n </div>\n )}\n\n {/* Suggestions */}\n {filteredSuggestions.length > 0 && !isComplete && (\n <div className=\"pt-2\">\n <p className=\"text-xs text-muted-foreground mb-2\">Suggested scenarios:</p>\n <div className=\"flex flex-wrap gap-2\">\n {filteredSuggestions.map((suggestion, index) => (\n <SuggestionChip\n key={index}\n suggestion={suggestion}\n onAdd={() => handleSuggestionAdd(suggestion)}\n disabled={isLoading}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Complete button */}\n {canComplete && (\n <div className=\"pt-4 border-t border-border\">\n <div className=\"flex items-center justify-between gap-4 bg-[var(--cyan)]/5 rounded-sm p-4 -mx-1\">\n <div>\n <p className=\"text-sm font-medium text-[var(--black)]\">\n Ready to proceed?\n </p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n Mark your scenarios as complete to continue with the onboarding.\n </p>\n </div>\n <Button\n onClick={handleComplete}\n disabled={isCompleting}\n loading={isCompleting}\n size=\"sm\"\n className=\"shrink-0\"\n >\n <Check size={16} className=\"mr-1.5\" />\n Mark complete\n </Button>\n </div>\n </div>\n )}\n\n {/* Complete state - only show when expanded */}\n {isComplete && (\n <div className=\"pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground\">\n You can still add or edit scenarios while we build your worker.\n </p>\n </div>\n )}\n </>\n )}\n\n {/* Dialog */}\n <ScenarioDialog\n open={dialogOpen}\n onOpenChange={setDialogOpen}\n scenario={editingScenario}\n onSave={handleSave}\n isLoading={isLoading}\n />\n </div>\n )\n}\n","'use client'\n\nimport { useState } from 'react'\nimport { Card, CardContent } from './card'\nimport { Button } from './button'\nimport { toast } from './use-toast'\nimport { cn } from '../lib/utils'\n\n// Working hours per FTE per year\n// 40 hrs/week × 47 weeks (52 - 4 vacation - 1 holidays) = 1,880 hours\nconst HOURS_PER_FTE_YEAR = 1880\n\n// Price per worker by tier (euros/month)\nconst TIER_PRICING: Record<string, number> = {\n starter: 29,\n growth: 25,\n scale: 21,\n enterprise: 21,\n}\n\nexport interface ImpactMetrics {\n time_saved_minutes_per_run: number\n hourly_rate_euros: number\n fte_equivalent: number\n estimated_annual_savings_euros: number\n}\n\nexport interface ImpactMetricsFormProps {\n /** The worker/agent ID */\n workerId: string\n /** Initial metrics values */\n initialMetrics: ImpactMetrics\n /** Total executions for this worker */\n totalExecutions?: number\n /** Customer's pricing plan */\n customerPlan?: string\n /** API endpoint to save metrics (e.g., \"/api/workers\" or \"/api/agents\") */\n apiBasePath?: string\n /** Optional custom save handler - if provided, will be called instead of default API */\n onSave?: (workerId: string, metrics: ImpactMetrics) => Promise<boolean>\n /** Whether to show toast notifications */\n showToasts?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport function ImpactMetricsForm({ \n workerId, \n initialMetrics, \n totalExecutions = 0, \n customerPlan = 'starter',\n apiBasePath = '/api/workers',\n onSave,\n showToasts = true,\n className,\n}: ImpactMetricsFormProps) {\n const [metrics, setMetrics] = useState(initialMetrics)\n const [savedMetrics, setSavedMetrics] = useState(initialMetrics)\n const [isSaving, setIsSaving] = useState(false)\n \n // Check if metrics have been saved before (non-default values in DB)\n const isInitiallySaved = \n initialMetrics.time_saved_minutes_per_run !== 30 ||\n initialMetrics.hourly_rate_euros !== 20 ||\n initialMetrics.fte_equivalent !== 0.1\n \n const [isEditing, setIsEditing] = useState(!isInitiallySaved)\n\n // Worker cost based on customer's plan\n const workerCostPerMonth = TIER_PRICING[customerPlan] || TIER_PRICING.starter\n const workerCostPerYear = workerCostPerMonth * 12\n\n // Calculate estimated annual savings based on FTE equivalent minus worker cost\n const calculateAnnualSavings = (fteEquivalent: number, hourlyRate: number) => {\n const laborSavings = fteEquivalent * HOURS_PER_FTE_YEAR * hourlyRate\n return laborSavings - workerCostPerYear\n }\n\n const handleSave = async () => {\n setIsSaving(true)\n try {\n const annualSavings = calculateAnnualSavings(\n metrics.fte_equivalent,\n metrics.hourly_rate_euros\n )\n\n const updatedMetrics = { ...metrics, estimated_annual_savings_euros: annualSavings }\n \n let success = false\n \n if (onSave) {\n // Use custom save handler\n success = await onSave(workerId, updatedMetrics)\n } else {\n // Use default API\n const response = await fetch(`${apiBasePath}/${workerId}/impact-metrics`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(updatedMetrics),\n })\n success = response.ok\n }\n\n if (success) {\n setMetrics(updatedMetrics)\n setSavedMetrics(updatedMetrics)\n setIsEditing(false)\n if (showToasts) {\n toast({\n title: 'Metrics saved',\n description: 'Impact metrics have been updated.',\n variant: 'success',\n })\n }\n } else {\n throw new Error('Failed to save')\n }\n } catch (error) {\n console.error('Failed to save metrics:', error)\n if (showToasts) {\n toast({\n title: 'Failed to save',\n description: 'Could not save metrics. Please try again.',\n variant: 'error',\n })\n }\n } finally {\n setIsSaving(false)\n }\n }\n\n const handleCancel = () => {\n setMetrics(savedMetrics)\n setIsEditing(false)\n }\n\n // Calculate hours saved per year based on FTE\n const hoursSavedPerYear = Math.round(metrics.fte_equivalent * HOURS_PER_FTE_YEAR)\n \n // Calculate implied frequency based on time per task and FTE%\n const timePerTaskHours = metrics.time_saved_minutes_per_run / 60\n const impliedFrequencyPerYear = timePerTaskHours > 0 \n ? Math.round(hoursSavedPerYear / timePerTaskHours) \n : 0\n const impliedFrequencyPerMonth = Math.round(impliedFrequencyPerYear / 12)\n \n // Calculate labor savings (before worker cost)\n const laborSavingsPerYear = metrics.fte_equivalent * HOURS_PER_FTE_YEAR * metrics.hourly_rate_euros\n \n // Net annual savings\n const netAnnualSavings = laborSavingsPerYear - workerCostPerYear\n\n return (\n <Card className={cn(\"border-[var(--cyan)]/20 bg-gradient-to-br from-white to-[var(--cyan)]/5\", className)}>\n <CardContent className=\"p-5\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Impact Metrics (ROI)</p>\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n {isInitiallySaved && (\n <Button \n onClick={handleCancel} \n size=\"sm\"\n variant=\"ghost\"\n >\n Cancel\n </Button>\n )}\n <Button \n onClick={handleSave} \n disabled={isSaving} \n size=\"sm\"\n >\n {isSaving ? 'Saving...' : 'Save'}\n </Button>\n </>\n ) : (\n <Button \n onClick={() => setIsEditing(true)} \n size=\"sm\"\n variant=\"outline\"\n >\n Edit\n </Button>\n )}\n </div>\n </div>\n\n {/* Metrics Grid */}\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-6\">\n {/* Time per task */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Time per Task</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <input\n type=\"number\"\n value={metrics.time_saved_minutes_per_run}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n time_saved_minutes_per_run: parseInt(e.target.value) || 0 \n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n />\n <span className=\"text-sm text-muted-foreground\">min</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n {metrics.time_saved_minutes_per_run}<span className=\"text-sm font-normal text-muted-foreground ml-1\">min</span>\n </p>\n )}\n </div>\n\n {/* Manual cost */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Manual Cost</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-sm text-muted-foreground\">€</span>\n <input\n type=\"number\"\n value={metrics.hourly_rate_euros}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n hourly_rate_euros: parseFloat(e.target.value) || 0 \n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n step=\"0.5\"\n />\n <span className=\"text-sm text-muted-foreground\">/hr</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n €{metrics.hourly_rate_euros}<span className=\"text-sm font-normal text-muted-foreground ml-1\">/hr</span>\n </p>\n )}\n </div>\n\n {/* Job portion */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Job Portion</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <input\n type=\"number\"\n value={Math.round(metrics.fte_equivalent * 100)}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n fte_equivalent: (parseFloat(e.target.value) || 0) / 100\n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n max=\"1000\"\n step=\"5\"\n />\n <span className=\"text-sm text-muted-foreground\">%</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n {Math.round(metrics.fte_equivalent * 100)}<span className=\"text-sm font-normal text-muted-foreground ml-1\">%</span>\n </p>\n )}\n <p className=\"text-xs text-muted-foreground mt-0.5\">{hoursSavedPerYear}h/year</p>\n </div>\n\n {/* Net Annual Savings */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Net Annual Savings</p>\n <p className={cn(\"text-2xl font-bold\", netAnnualSavings >= 0 ? \"text-[var(--cyan)]\" : \"text-red-500\")}>\n €{netAnnualSavings.toLocaleString(undefined, { maximumFractionDigits: 0 })}\n </p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n €{laborSavingsPerYear.toLocaleString(undefined, { maximumFractionDigits: 0 })} − €{workerCostPerYear}\n </p>\n </div>\n </div>\n\n {/* Implied frequency indicator */}\n {impliedFrequencyPerYear > 0 && (\n <p className=\"text-xs text-muted-foreground mt-4 pt-3 border-t border-border/50\">\n Implied: ~{impliedFrequencyPerMonth}×/month ({impliedFrequencyPerYear}×/year)\n </p>\n )}\n </CardContent>\n </Card>\n )\n}\n","'use client'\n\nimport { useState, ReactNode } from 'react'\nimport { Button } from './button'\nimport { Textarea } from './textarea'\nimport { \n CircleNotch,\n PaperPlaneTilt,\n CaretDown,\n CaretUp\n} from '@phosphor-icons/react'\n\n// ============================================\n// Types\n// ============================================\n\nexport interface Activity {\n /** Unique identifier for the activity */\n id: string\n /** Type of activity (e.g., 'note', 'status_change', 'workflow_update', 'assignment') */\n activity_type: string\n /** Main content of the activity */\n content: string\n /** User who created the activity (display name or email) */\n user: string\n /** When the activity was created */\n created_at: string | Date\n /** Additional metadata */\n metadata?: Record<string, unknown>\n}\n\nexport interface ActivityTimelineProps {\n /** List of activities to display */\n activities: Activity[]\n /** Whether the activities are loading */\n loading?: boolean\n /** Labels for different activity types (type -> label) */\n activityLabels?: Record<string, string>\n /** Number of activities to show before collapsing (default: 3) */\n collapsedCount?: number\n /** Whether to show the note input form */\n showNoteInput?: boolean\n /** Placeholder for the note input */\n notePlaceholder?: string\n /** Callback when a new note is submitted */\n onAddNote?: (note: string) => Promise<void>\n /** Whether the component is currently submitting a note */\n submitting?: boolean\n /** Custom date formatter function */\n formatDate?: (date: Date | string) => string\n /** Custom loading component */\n loadingComponent?: ReactNode\n /** Custom empty state message */\n emptyMessage?: string\n /** Additional CSS class */\n className?: string\n}\n\n// ============================================\n// Default Date Formatter\n// ============================================\n\nfunction defaultFormatDate(date: Date | string): string {\n const d = typeof date === 'string' ? new Date(date) : date\n const now = new Date()\n const diffMs = now.getTime() - d.getTime()\n const diffMins = Math.floor(diffMs / 60000)\n const diffHours = Math.floor(diffMs / 3600000)\n const diffDays = Math.floor(diffMs / 86400000)\n \n if (diffMins < 1) return 'just now'\n if (diffMins < 60) return `${diffMins}m ago`\n if (diffHours < 24) return `${diffHours}h ago`\n if (diffDays < 7) return `${diffDays}d ago`\n \n return d.toLocaleDateString()\n}\n\n// ============================================\n// Main Component\n// ============================================\n\nexport function ActivityTimeline({\n activities,\n loading = false,\n activityLabels = {},\n collapsedCount = 3,\n showNoteInput = true,\n notePlaceholder = 'Add a note...',\n onAddNote,\n submitting = false,\n formatDate = defaultFormatDate,\n loadingComponent,\n emptyMessage = 'No activity yet',\n className = '',\n}: ActivityTimelineProps) {\n const [newNote, setNewNote] = useState('')\n const [expanded, setExpanded] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const handleAddNote = async () => {\n if (!newNote.trim() || !onAddNote) return\n\n setIsSubmitting(true)\n try {\n await onAddNote(newNote.trim())\n setNewNote('')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n handleAddNote()\n }\n }\n\n // Show only first N activities unless expanded\n const visibleActivities = expanded ? activities : activities.slice(0, collapsedCount)\n const hasMore = activities.length > collapsedCount\n\n const isCurrentlySubmitting = submitting || isSubmitting\n\n const DefaultLoading = (\n <div className=\"flex items-center justify-center py-4\">\n <CircleNotch className=\"w-5 h-5 animate-spin text-muted-foreground\" />\n </div>\n )\n\n return (\n <div className={`space-y-3 ${className}`}>\n {/* Add Note Form - Compact inline */}\n {showNoteInput && onAddNote && (\n <div className=\"flex gap-2\">\n <Textarea\n value={newNote}\n onChange={(e) => setNewNote(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={notePlaceholder}\n rows={1}\n className=\"resize-none min-h-[36px] py-2\"\n />\n <Button\n onClick={handleAddNote}\n disabled={isCurrentlySubmitting || !newNote.trim()}\n size=\"sm\"\n className=\"flex-shrink-0 h-9\"\n >\n {isCurrentlySubmitting ? (\n <CircleNotch className=\"w-4 h-4 animate-spin\" />\n ) : (\n <PaperPlaneTilt className=\"w-4 h-4\" weight=\"bold\" />\n )}\n </Button>\n </div>\n )}\n\n {/* Activity List - Minimal */}\n {loading ? (\n loadingComponent || DefaultLoading\n ) : activities.length === 0 ? (\n <p className=\"text-xs text-muted-foreground text-center py-2\">\n {emptyMessage}\n </p>\n ) : (\n <div className=\"space-y-2\">\n {visibleActivities.map((activity) => {\n const label = activityLabels[activity.activity_type] || ''\n return (\n <div key={activity.id} className=\"text-sm border-l-2 border-gray-200 pl-3 py-1\">\n <p className=\"text-gray-700\">\n {label && <span className=\"text-muted-foreground\">{label} </span>}\n {activity.content}\n </p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {activity.user} · {formatDate(activity.created_at)}\n </p>\n </div>\n )\n })}\n \n {/* Show more/less toggle */}\n {hasMore && (\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n {expanded ? (\n <>\n <CaretUp className=\"w-3 h-3\" />\n Show less\n </>\n ) : (\n <>\n <CaretDown className=\"w-3 h-3\" />\n Show {activities.length - collapsedCount} more\n </>\n )}\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default ActivityTimeline\n","'use client'\n\nimport { useState, lazy, Suspense, ReactNode } from 'react'\nimport { Card, CardContent, CardHeader, CardTitle } from './card'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Textarea } from './textarea'\nimport { Alert } from './alert'\nimport { Select } from './select'\nimport {\n WebhooksLogo,\n Timer,\n GitBranch,\n Globe,\n Robot,\n Code,\n CheckCircle,\n Package,\n CloudArrowUp,\n CloudArrowDown,\n Copy,\n PencilSimple,\n Eye,\n TreeStructure,\n DownloadSimple,\n ArrowSquareOut,\n ClockCounterClockwise,\n ArrowsClockwise,\n ArrowsLeftRight,\n Plus,\n Minus,\n Pencil,\n X,\n} from '@phosphor-icons/react'\n\n// Lazy load the flow visualization to avoid SSR issues\nconst WorkflowFlow = lazy(() => import('./workflow-flow').then(m => ({ default: m.WorkflowFlow })))\n\n// ============================================\n// Types\n// ============================================\n\nexport interface N8nWorkflow {\n name: string\n nodes: Array<{\n id: string\n name: string\n type: string\n parameters?: Record<string, unknown>\n }>\n connections: Record<string, unknown>\n settings?: Record<string, unknown>\n tags?: Array<{ name: string }>\n}\n\n/**\n * Sim Studio workflow state format\n * Uses blocks (object keyed by ID) and edges (array)\n */\nexport interface SimWorkflow {\n // Actual Sim Studio state format\n blocks?: Record<string, {\n id: string\n type: string\n name: string\n position?: { x: number; y: number }\n subBlocks?: Record<string, unknown>\n outputs?: Record<string, unknown>\n enabled?: boolean\n }>\n edges?: Array<{\n id?: string\n source?: string\n target?: string\n sourceHandle?: string\n targetHandle?: string\n // Legacy format support\n from?: string\n to?: string\n }>\n loops?: Record<string, unknown>\n parallels?: Record<string, unknown>\n variables?: Record<string, unknown>\n lastSaved?: number\n isDeployed?: boolean\n // Legacy format (for backwards compatibility)\n name?: string\n description?: string\n trigger?: {\n type: string\n config?: Record<string, unknown>\n }\n nodes?: Array<{\n id: string\n type: string\n config?: Record<string, unknown>\n }>\n}\n\nexport type WorkflowTemplate = 'blank' | 'request_analyzer' | 'documentation_updater' | 'execution_monitor' | 'usage_reporter' | 'custom'\n\nexport interface WorkflowViewerProps {\n /** The workflow definition to display */\n workflow: N8nWorkflow | SimWorkflow | null\n /** Which platform the workflow is for */\n platform: 'n8n' | 'sim'\n /** Card title */\n title?: string\n /** Webhook URL to display */\n webhookUrl?: string | null\n /** External workflow ID (e.g., n8n workflow ID) */\n workflowId?: string | null\n /** Internal workflow definition ID */\n workflowDefinitionId?: string | null\n /** Associated worker/agent ID */\n workerId?: string | null\n /** Associated worker/agent name */\n workerName?: string | null\n /** Internal worker type for templates */\n internalWorkerType?: string | null\n /** Last sync timestamp */\n lastSynced?: string | null\n /** Whether the workflow is active */\n isActive?: boolean\n /** Sync error message */\n syncError?: string | null\n /** Additional CSS class */\n className?: string\n /** Allow editing the workflow JSON */\n editable?: boolean\n /** Allow creating new workflows */\n allowCreate?: boolean\n /** Allow changing the platform */\n allowPlatformChange?: boolean\n /** Allow changing the active status */\n allowStatusChange?: boolean\n /** Callback when workflow is updated */\n onWorkflowUpdate?: (workflow: N8nWorkflow | SimWorkflow) => void\n /** Callback when workflow is created */\n onWorkflowCreated?: (workflowDefId: string) => void\n /** Callback when platform changes */\n onPlatformChange?: (platform: 'n8n' | 'sim') => void\n /** Callback when status changes */\n onStatusChange?: (isActive: boolean) => void\n /** Custom API handlers for save/sync operations */\n apiHandlers?: {\n /** Save workflow to database */\n saveWorkflow?: (workflowDefId: string, workflow: N8nWorkflow | SimWorkflow, platform: 'n8n' | 'sim') => Promise<{ success: boolean; error?: string }>\n /** Save settings (platform, status) */\n saveSettings?: (workflowDefId: string, settings: { platform?: 'n8n' | 'sim'; is_active?: boolean }) => Promise<{ success: boolean; error?: string }>\n /** Push workflow to n8n */\n pushToN8n?: (workerId: string) => Promise<{ success: boolean; error?: string }>\n /** Pull workflow from n8n */\n pullFromN8n?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; descriptionSync?: { needsUpdate: boolean; reason?: string } }>\n /** Export workflow from Sim Studio (backup) */\n exportFromSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; backup?: { id: string; version: number; exportedAt: string }; workflow?: { blocksCount: number; edgesCount: number } }>\n /** Get backup history for Sim workflow */\n getSimBackups?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; backups?: Array<{ id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string }> }>\n /** Get a specific backup's full state */\n getBackupState?: (workflowDefId: string, backupId: string) => Promise<{ success: boolean; error?: string; backup?: { id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string; state: SimWorkflow | null } }>\n /** Push workflow to Sim Studio */\n pushToSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; workflowId?: string }>\n /** Pull workflow from Sim Studio */\n pullFromSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; descriptionSync?: { needsUpdate: boolean; reason?: string } }>\n /** Create new workflow */\n createWorkflow?: (data: { agent_id: string; name: string; platform: 'n8n' | 'sim'; n8n_workflow?: N8nWorkflow | null; sim_workflow?: SimWorkflow | null; is_active: boolean; is_global: boolean }) => Promise<{ success: boolean; error?: string; workflow?: { id: string } }>\n /** Load workflow template */\n loadTemplate?: (type: string, workerId: string) => Promise<{ success: boolean; error?: string; workflow?: N8nWorkflow | SimWorkflow }>\n /** Switch workflow platform (e.g., n8n to Sim) */\n switchPlatform?: (workflowDefId: string, targetPlatform: 'n8n' | 'sim') => Promise<{ success: boolean; error?: string; simWorkflowId?: string }>\n }\n /** Sim workflow ID (for Sim Studio integration) */\n simWorkflowId?: string | null\n /** Sim Studio base URL for external links */\n simStudioUrl?: string\n /** Custom loading component */\n loadingComponent?: ReactNode\n /** Format distance function for timestamps */\n formatDistance?: (date: Date, options?: { addSuffix?: boolean }) => string\n}\n\n// Blank workflow templates\nconst BLANK_N8N_WORKFLOW: N8nWorkflow = {\n name: 'New Workflow',\n nodes: [\n {\n id: 'webhook-trigger',\n name: 'Webhook',\n type: 'n8n-nodes-base.webhook',\n parameters: {\n httpMethod: 'POST',\n path: 'my-webhook',\n },\n },\n ],\n connections: {},\n settings: { executionOrder: 'v1' },\n}\n\nconst BLANK_SIM_WORKFLOW: SimWorkflow = {\n name: 'New Workflow',\n description: 'A new Sim workflow',\n trigger: { type: 'webhook_input' },\n nodes: [\n { id: 'input', type: 'webhook_input' },\n { id: 'output', type: 'output' },\n ],\n edges: [{ from: 'input', to: 'output' }],\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\nfunction getNodeIcon(type: string) {\n if (type.includes('webhook')) return <WebhooksLogo size={16} weight=\"fill\" />\n if (type.includes('Trigger') || type.includes('schedule')) return <Timer size={16} weight=\"fill\" />\n if (type.includes('if') || type.includes('switch')) return <GitBranch size={16} weight=\"fill\" />\n if (type.includes('httpRequest')) return <Globe size={16} weight=\"fill\" />\n if (type.includes('langchain') || type.includes('openai') || type.includes('anthropic')) return <Robot size={16} weight=\"fill\" />\n if (type.includes('code')) return <Code size={16} weight=\"fill\" />\n if (type.includes('respondToWebhook')) return <CheckCircle size={16} weight=\"fill\" />\n if (type.includes('set')) return <Package size={16} weight=\"fill\" />\n return <Package size={16} />\n}\n\nfunction getNodeTypeLabel(type: string): string {\n const typeMap: Record<string, string> = {\n 'n8n-nodes-base.webhook': 'Webhook Trigger',\n 'n8n-nodes-base.scheduleTrigger': 'Schedule Trigger',\n 'n8n-nodes-base.if': 'Condition',\n 'n8n-nodes-base.httpRequest': 'HTTP Request',\n 'n8n-nodes-base.set': 'Set Data',\n 'n8n-nodes-base.code': 'Code',\n 'n8n-nodes-base.respondToWebhook': 'Webhook Response',\n '@n8n/n8n-nodes-langchain.agent': 'AI Agent',\n '@n8n/n8n-nodes-langchain.lmChatOpenAi': 'OpenAI Model',\n '@n8n/n8n-nodes-langchain.lmChatAnthropic': 'Anthropic Model',\n }\n return typeMap[type] || type.split('.').pop() || type\n}\n\nfunction getSimNodeTypeLabel(type: string): string {\n const typeMap: Record<string, string> = {\n 'webhook_input': 'Webhook Input',\n 'llm': 'AI/LLM',\n 'code': 'Code',\n 'http_request': 'HTTP Request',\n 'condition': 'Condition',\n 'output': 'Output',\n }\n return typeMap[type] || type\n}\n\nfunction defaultFormatDistance(date: Date, options?: { addSuffix?: boolean }): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffMins = Math.floor(diffMs / 60000)\n const diffHours = Math.floor(diffMs / 3600000)\n const diffDays = Math.floor(diffMs / 86400000)\n \n let result = ''\n if (diffMins < 1) result = 'less than a minute'\n else if (diffMins < 60) result = `${diffMins} minute${diffMins > 1 ? 's' : ''}`\n else if (diffHours < 24) result = `${diffHours} hour${diffHours > 1 ? 's' : ''}`\n else result = `${diffDays} day${diffDays > 1 ? 's' : ''}`\n \n return options?.addSuffix ? `${result} ago` : result\n}\n\n// ============================================\n// Diff Utilities\n// ============================================\n\ninterface DiffResult {\n blocksAdded: string[]\n blocksRemoved: string[]\n blocksModified: string[]\n edgesAdded: number\n edgesRemoved: number\n summary: string\n}\n\nfunction computeWorkflowDiff(stateA: SimWorkflow | null, stateB: SimWorkflow | null): DiffResult {\n if (!stateA || !stateB) {\n return {\n blocksAdded: [],\n blocksRemoved: [],\n blocksModified: [],\n edgesAdded: 0,\n edgesRemoved: 0,\n summary: 'Unable to compare - missing workflow data',\n }\n }\n\n const blocksA = stateA.blocks || {}\n const blocksB = stateB.blocks || {}\n const edgesA = stateA.edges || []\n const edgesB = stateB.edges || []\n\n const blockIdsA = new Set(Object.keys(blocksA))\n const blockIdsB = new Set(Object.keys(blocksB))\n\n const blocksAdded = [...blockIdsB].filter(id => !blockIdsA.has(id))\n const blocksRemoved = [...blockIdsA].filter(id => !blockIdsB.has(id))\n\n // Check for modified blocks (blocks that exist in both but have different content)\n const blocksModified: string[] = []\n for (const id of blockIdsA) {\n if (blockIdsB.has(id)) {\n const blockA = blocksA[id]\n const blockB = blocksB[id]\n // Deep compare by stringifying\n if (JSON.stringify(blockA) !== JSON.stringify(blockB)) {\n blocksModified.push(id)\n }\n }\n }\n\n // Compare edges by creating a signature for each\n const edgeSignature = (e: { source?: string; target?: string; from?: string; to?: string }) =>\n `${e.source || e.from}->${e.target || e.to}`\n const edgeSigsA = new Set(edgesA.map(edgeSignature))\n const edgeSigsB = new Set(edgesB.map(edgeSignature))\n\n const edgesAdded = [...edgeSigsB].filter(sig => !edgeSigsA.has(sig)).length\n const edgesRemoved = [...edgeSigsA].filter(sig => !edgeSigsB.has(sig)).length\n\n // Generate summary\n const changes: string[] = []\n if (blocksAdded.length > 0) changes.push(`+${blocksAdded.length} block${blocksAdded.length > 1 ? 's' : ''}`)\n if (blocksRemoved.length > 0) changes.push(`-${blocksRemoved.length} block${blocksRemoved.length > 1 ? 's' : ''}`)\n if (blocksModified.length > 0) changes.push(`~${blocksModified.length} modified`)\n if (edgesAdded > 0) changes.push(`+${edgesAdded} edge${edgesAdded > 1 ? 's' : ''}`)\n if (edgesRemoved > 0) changes.push(`-${edgesRemoved} edge${edgesRemoved > 1 ? 's' : ''}`)\n\n return {\n blocksAdded,\n blocksRemoved,\n blocksModified,\n edgesAdded,\n edgesRemoved,\n summary: changes.length > 0 ? changes.join(', ') : 'No changes detected',\n }\n}\n\n// ============================================\n// N8n Workflow Summary Component\n// ============================================\n\nfunction N8nWorkflowSummary({ workflow, showFlow = false }: { workflow: N8nWorkflow; showFlow?: boolean }) {\n const nodes = workflow.nodes || []\n \n const triggerNode = nodes.find(n => \n n.type.includes('webhook') || n.type.includes('Trigger')\n )\n \n const aiNodes = nodes.filter(n => \n n.type.includes('langchain') || n.type.includes('openai') || n.type.includes('anthropic')\n )\n \n const httpNodes = nodes.filter(n => \n n.type === 'n8n-nodes-base.httpRequest'\n )\n \n const conditionNodes = nodes.filter(n => \n n.type === 'n8n-nodes-base.if'\n )\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n {triggerNode && getNodeIcon(triggerNode.type)}\n <span className=\"text-xs font-medium\">Trigger</span>\n </div>\n <p className=\"text-sm font-semibold truncate\">\n {triggerNode ? getNodeTypeLabel(triggerNode.type) : 'None'}\n </p>\n </div>\n \n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <TreeStructure size={16} />\n <span className=\"text-xs font-medium\">Steps</span>\n </div>\n <p className=\"text-sm font-semibold\">{nodes.length} nodes</p>\n </div>\n \n {aiNodes.length > 0 && (\n <div className=\"bg-purple-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-purple-600 mb-1\">\n <Robot size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">AI</span>\n </div>\n <p className=\"text-sm font-semibold text-purple-700\">\n {aiNodes.length} {aiNodes.length === 1 ? 'node' : 'nodes'}\n </p>\n </div>\n )}\n \n {httpNodes.length > 0 && (\n <div className=\"bg-blue-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-blue-600 mb-1\">\n <Globe size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">APIs</span>\n </div>\n <p className=\"text-sm font-semibold text-blue-700\">\n {httpNodes.length} {httpNodes.length === 1 ? 'request' : 'requests'}\n </p>\n </div>\n )}\n \n {conditionNodes.length > 0 && (\n <div className=\"bg-yellow-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-yellow-600 mb-1\">\n <GitBranch size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">Logic</span>\n </div>\n <p className=\"text-sm font-semibold text-yellow-700\">\n {conditionNodes.length} {conditionNodes.length === 1 ? 'condition' : 'conditions'}\n </p>\n </div>\n )}\n </div>\n\n {showFlow && (\n <Suspense fallback={\n <div className=\"h-[320px] bg-slate-50 rounded-lg border border-slate-200 flex items-center justify-center\">\n <div className=\"text-slate-400 text-sm\">Loading...</div>\n </div>\n }>\n <WorkflowFlow workflow={workflow as any} height={320} />\n </Suspense>\n )}\n \n {!showFlow && (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Workflow Nodes</h4>\n <div className=\"flex flex-wrap gap-1.5\">\n {nodes.map((node) => (\n <span \n key={node.id} \n className=\"px-2 py-1 rounded bg-slate-100 text-slate-600 text-xs\"\n >\n {node.name}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// ============================================\n// Sim Workflow Summary Component\n// ============================================\n\nfunction SimWorkflowSummary({ workflow }: { workflow: SimWorkflow }) {\n // Handle actual Sim Studio format (blocks object) or legacy format (nodes array)\n const blocks = workflow.blocks || {}\n const blockList = Object.values(blocks)\n const edges = workflow.edges || []\n\n // Fall back to legacy nodes array if no blocks\n const legacyNodes = workflow.nodes || []\n const hasBlocks = blockList.length > 0\n const displayNodes = hasBlocks ? blockList : legacyNodes\n\n // Find trigger block (usually 'starter' type)\n const triggerBlock = blockList.find(b => b.type === 'starter' || b.type === 'webhook' || b.type === 'api')\n const triggerType = triggerBlock?.type || workflow.trigger?.type\n\n // Count AI and HTTP blocks\n const aiBlocks = blockList.filter(b => b.type === 'agent' || b.type === 'llm' || b.type === 'openai' || b.type === 'anthropic')\n const httpBlocks = blockList.filter(b => b.type === 'api' || b.type === 'http_request')\n\n // Check if workflow is empty\n const isEmpty = displayNodes.length === 0\n\n if (isEmpty) {\n return (\n <div className=\"py-8 text-center\">\n <TreeStructure size={32} className=\"mx-auto mb-3 text-muted-foreground/50\" />\n <p className=\"text-sm text-muted-foreground mb-1\">No workflow blocks yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Open the workflow in Sim Studio to build it, then click &quot;Pull from Sim&quot; to sync changes.\n </p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <WebhooksLogo size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">Trigger</span>\n </div>\n <p className=\"text-sm font-semibold\">\n {triggerType ? getSimNodeTypeLabel(triggerType) : 'Manual'}\n </p>\n </div>\n\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <TreeStructure size={16} />\n <span className=\"text-xs font-medium\">Blocks</span>\n </div>\n <p className=\"text-sm font-semibold\">{displayNodes.length} blocks</p>\n </div>\n\n {edges.length > 0 && (\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <GitBranch size={16} />\n <span className=\"text-xs font-medium\">Edges</span>\n </div>\n <p className=\"text-sm font-semibold\">{edges.length} connections</p>\n </div>\n )}\n\n {aiBlocks.length > 0 && (\n <div className=\"bg-purple-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-purple-600 mb-1\">\n <Robot size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">AI</span>\n </div>\n <p className=\"text-sm font-semibold text-purple-700\">\n {aiBlocks.length} {aiBlocks.length === 1 ? 'block' : 'blocks'}\n </p>\n </div>\n )}\n\n {httpBlocks.length > 0 && (\n <div className=\"bg-blue-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-blue-600 mb-1\">\n <Globe size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">APIs</span>\n </div>\n <p className=\"text-sm font-semibold text-blue-700\">\n {httpBlocks.length} {httpBlocks.length === 1 ? 'request' : 'requests'}\n </p>\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Workflow Blocks</h4>\n <div className=\"flex flex-wrap gap-2\">\n {hasBlocks ? (\n blockList.map((block) => (\n <div\n key={block.id}\n className=\"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs bg-gray-100 text-gray-700 border-gray-300\"\n >\n <Package size={14} />\n <span className=\"font-medium\">{block.name || getSimNodeTypeLabel(block.type)}</span>\n </div>\n ))\n ) : (\n legacyNodes.map((node) => (\n <div\n key={node.id}\n className=\"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs bg-gray-100 text-gray-700 border-gray-300\"\n >\n <Package size={14} />\n <span className=\"font-medium\">{getSimNodeTypeLabel(node.type)}</span>\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n )\n}\n\n// ============================================\n// Main WorkflowViewer Component\n// ============================================\n\nexport function WorkflowViewer({\n workflow,\n platform,\n title = 'Workflow',\n webhookUrl,\n workflowId,\n workflowDefinitionId,\n workerId,\n workerName,\n internalWorkerType,\n lastSynced,\n isActive,\n syncError,\n className = '',\n editable = false,\n allowCreate = false,\n allowPlatformChange = false,\n allowStatusChange = false,\n onWorkflowUpdate,\n onWorkflowCreated,\n onPlatformChange,\n onStatusChange,\n apiHandlers,\n loadingComponent,\n formatDistance = defaultFormatDistance,\n simWorkflowId,\n simStudioUrl,\n}: WorkflowViewerProps) {\n const [viewMode, setViewMode] = useState<'summary' | 'flow' | 'json' | 'edit' | 'create' | 'backups'>('summary')\n const [editedJson, setEditedJson] = useState('')\n const [jsonError, setJsonError] = useState<string | null>(null)\n const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null)\n const [saving, setSaving] = useState(false)\n const [syncing, setSyncing] = useState(false)\n const [pulling, setPulling] = useState(false)\n const [creating, setCreating] = useState(false)\n const [selectedTemplate, setSelectedTemplate] = useState<WorkflowTemplate>('blank')\n const [exporting, setExporting] = useState(false)\n const [backups, setBackups] = useState<Array<{ id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string }>>([])\n const [loadingBackups, setLoadingBackups] = useState(false)\n const [pushingToSim, setPushingToSim] = useState(false)\n const [pullingFromSim, setPullingFromSim] = useState(false)\n const [switchingPlatform, setSwitchingPlatform] = useState(false)\n // Diff comparison state\n const [diffMode, setDiffMode] = useState(false)\n const [selectedBackupA, setSelectedBackupA] = useState<string | null>(null)\n const [selectedBackupB, setSelectedBackupB] = useState<string | null>(null)\n const [backupStateA, setBackupStateA] = useState<SimWorkflow | null>(null)\n const [backupStateB, setBackupStateB] = useState<SimWorkflow | null>(null)\n const [loadingDiff, setLoadingDiff] = useState(false)\n\n const [localPlatform, setLocalPlatform] = useState<'n8n' | 'sim'>(platform)\n const [localIsActive, setLocalIsActive] = useState(isActive ?? true)\n \n const hasUnsavedChanges = localPlatform !== platform || localIsActive !== (isActive ?? true)\n\n function copyToClipboard(text: string, label: string = 'Copied') {\n navigator.clipboard.writeText(text)\n setMessage({ type: 'success', text: label })\n setTimeout(() => setMessage(null), 2000)\n }\n\n function handleLocalPlatformChange(newPlatform: 'n8n' | 'sim') {\n setLocalPlatform(newPlatform)\n }\n\n function handleLocalStatusChange(newStatus: boolean) {\n setLocalIsActive(newStatus)\n }\n\n function cancelChanges() {\n setLocalPlatform(platform)\n setLocalIsActive(isActive ?? true)\n setMessage(null)\n }\n\n async function saveSettings() {\n if (!workflowDefinitionId || !apiHandlers?.saveSettings) {\n setMessage({ type: 'error', text: 'Cannot save - no workflow definition or API handler.' })\n return\n }\n\n setSaving(true)\n setMessage(null)\n\n try {\n const updateData: { platform?: 'n8n' | 'sim'; is_active?: boolean } = {}\n \n if (localPlatform !== platform) {\n updateData.platform = localPlatform\n }\n if (localIsActive !== (isActive ?? true)) {\n updateData.is_active = localIsActive\n }\n\n if (Object.keys(updateData).length === 0) {\n setMessage({ type: 'success', text: 'No changes to save' })\n setSaving(false)\n return\n }\n\n const result = await apiHandlers.saveSettings(workflowDefinitionId, updateData)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Settings saved successfully' })\n onPlatformChange?.(localPlatform)\n onStatusChange?.(localIsActive)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to save settings' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to save settings' })\n } finally {\n setSaving(false)\n }\n }\n\n function startEditing() {\n setEditedJson(JSON.stringify(workflow, null, 2))\n setJsonError(null)\n setViewMode('edit')\n }\n\n function cancelEditing() {\n setEditedJson('')\n setJsonError(null)\n setViewMode('summary')\n }\n\n function validateJson(json: string): N8nWorkflow | SimWorkflow | null {\n try {\n const parsed = JSON.parse(json)\n if (platform === 'n8n') {\n if (!parsed.nodes || !Array.isArray(parsed.nodes)) {\n throw new Error('n8n workflow must have a nodes array')\n }\n } else {\n // Sim Studio uses blocks object (not nodes array)\n if (!parsed.blocks || typeof parsed.blocks !== 'object') {\n throw new Error('Sim workflow must have a blocks object')\n }\n }\n return parsed\n } catch {\n return null\n }\n }\n\n async function saveWorkflow() {\n const parsed = validateJson(editedJson)\n if (!parsed) {\n setJsonError('Invalid JSON. Please check the syntax.')\n return\n }\n\n if (!workflowDefinitionId || !apiHandlers?.saveWorkflow) {\n setJsonError('Cannot save - no workflow definition or API handler.')\n return\n }\n\n setSaving(true)\n setJsonError(null)\n\n try {\n const result = await apiHandlers.saveWorkflow(workflowDefinitionId, parsed, platform)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Workflow saved to database' })\n setViewMode('summary')\n onWorkflowUpdate?.(parsed)\n } else {\n setJsonError(result.error || 'Failed to save workflow')\n }\n } catch {\n setJsonError('Failed to save workflow')\n } finally {\n setSaving(false)\n }\n }\n\n async function pushToN8n() {\n if (!workerId || !apiHandlers?.pushToN8n) {\n setMessage({ type: 'error', text: 'Cannot sync - no worker ID or API handler' })\n return\n }\n\n setSyncing(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pushToN8n(workerId)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Pushed to n8n successfully' })\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to push to n8n' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to push to n8n' })\n } finally {\n setSyncing(false)\n }\n }\n\n async function pullFromN8n() {\n if (!workflowId || !workflowDefinitionId || !apiHandlers?.pullFromN8n) {\n setMessage({ type: 'error', text: 'Cannot pull - no n8n workflow ID or API handler' })\n return\n }\n\n setPulling(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pullFromN8n(workflowDefinitionId)\n\n if (result.success) {\n if (result.descriptionSync?.needsUpdate) {\n setMessage({ \n type: 'success', \n text: `Pulled from n8n. Note: ${result.descriptionSync.reason || 'Worker description may need updating.'}` \n })\n } else {\n setMessage({ type: 'success', text: 'Pulled from n8n successfully' })\n }\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to pull from n8n' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to pull from n8n' })\n } finally {\n setPulling(false)\n }\n }\n\n async function exportFromSim() {\n if (!workflowDefinitionId || !simWorkflowId || !apiHandlers?.exportFromSim) {\n setMessage({ type: 'error', text: 'Cannot export - no Sim workflow ID or API handler' })\n return\n }\n\n setExporting(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.exportFromSim(workflowDefinitionId)\n\n if (result.success) {\n const blocksCount = result.workflow?.blocksCount || 0\n const edgesCount = result.workflow?.edgesCount || 0\n setMessage({ \n type: 'success', \n text: `Exported from Sim Studio (v${result.backup?.version || 1}, ${blocksCount} blocks, ${edgesCount} edges)`\n })\n // Refresh backups list if viewing\n if (viewMode === 'backups') {\n loadBackups()\n }\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to export from Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to export from Sim Studio' })\n } finally {\n setExporting(false)\n }\n }\n\n async function loadBackups() {\n if (!workflowDefinitionId || !apiHandlers?.getSimBackups) {\n return\n }\n\n setLoadingBackups(true)\n\n try {\n const result = await apiHandlers.getSimBackups(workflowDefinitionId)\n if (result.success && result.backups) {\n setBackups(result.backups)\n }\n } catch {\n console.error('Failed to load backups')\n } finally {\n setLoadingBackups(false)\n }\n }\n\n function showBackups() {\n setViewMode('backups')\n loadBackups()\n }\n\n async function loadBackupForDiff(backupId: string, slot: 'A' | 'B') {\n if (!workflowDefinitionId || !apiHandlers?.getBackupState) {\n return\n }\n\n setLoadingDiff(true)\n try {\n const result = await apiHandlers.getBackupState(workflowDefinitionId, backupId)\n if (result.success && result.backup) {\n if (slot === 'A') {\n setBackupStateA(result.backup.state)\n setSelectedBackupA(backupId)\n } else {\n setBackupStateB(result.backup.state)\n setSelectedBackupB(backupId)\n }\n }\n } catch {\n console.error('Failed to load backup for diff')\n } finally {\n setLoadingDiff(false)\n }\n }\n\n function startDiffMode() {\n setDiffMode(true)\n setSelectedBackupA(null)\n setSelectedBackupB(null)\n setBackupStateA(null)\n setBackupStateB(null)\n }\n\n function exitDiffMode() {\n setDiffMode(false)\n setSelectedBackupA(null)\n setSelectedBackupB(null)\n setBackupStateA(null)\n setBackupStateB(null)\n }\n\n function openInSimStudio() {\n if (simStudioUrl && simWorkflowId) {\n window.open(`${simStudioUrl}/w/${simWorkflowId}`, '_blank')\n }\n }\n\n async function pushToSim() {\n if (!workflowDefinitionId || !apiHandlers?.pushToSim) {\n setMessage({ type: 'error', text: 'Cannot push - no workflow definition ID or API handler' })\n return\n }\n\n setPushingToSim(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pushToSim(workflowDefinitionId)\n\n if (result.success) {\n setMessage({ \n type: 'success', \n text: result.workflowId \n ? `Pushed to Sim Studio (workflow: ${result.workflowId})`\n : 'Pushed to Sim Studio successfully'\n })\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to push to Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to push to Sim Studio' })\n } finally {\n setPushingToSim(false)\n }\n }\n\n async function pullFromSim() {\n if (!workflowDefinitionId || !simWorkflowId || !apiHandlers?.pullFromSim) {\n setMessage({ type: 'error', text: 'Cannot pull - no Sim workflow ID or API handler' })\n return\n }\n\n setPullingFromSim(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pullFromSim(workflowDefinitionId)\n\n if (result.success) {\n if (result.descriptionSync?.needsUpdate) {\n setMessage({ \n type: 'success', \n text: `Pulled from Sim Studio. Note: ${result.descriptionSync.reason || 'Worker description may need updating.'}` \n })\n } else {\n setMessage({ type: 'success', text: 'Pulled from Sim Studio successfully' })\n }\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to pull from Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to pull from Sim Studio' })\n } finally {\n setPullingFromSim(false)\n }\n }\n\n function startCreating() {\n if (internalWorkerType) {\n setSelectedTemplate(internalWorkerType as WorkflowTemplate)\n } else {\n setSelectedTemplate('blank')\n }\n const blank = platform === 'n8n' ? BLANK_N8N_WORKFLOW : BLANK_SIM_WORKFLOW\n setEditedJson(JSON.stringify(blank, null, 2))\n setViewMode('create')\n }\n\n async function createWorkflow() {\n const parsed = validateJson(editedJson)\n if (!parsed) {\n setJsonError('Invalid JSON. Please check the syntax.')\n return\n }\n\n if (!workerId || !apiHandlers?.createWorkflow) {\n setJsonError('Cannot create - no worker ID or API handler.')\n return\n }\n\n setCreating(true)\n setJsonError(null)\n\n try {\n const workflowName = (parsed as N8nWorkflow).name || \n `${workerName || 'Worker'} Workflow`\n\n const result = await apiHandlers.createWorkflow({\n agent_id: workerId,\n name: workflowName,\n platform,\n n8n_workflow: platform === 'n8n' ? parsed as N8nWorkflow : null,\n sim_workflow: platform === 'sim' ? parsed as SimWorkflow : null,\n is_active: true,\n is_global: false,\n })\n\n if (result.success && result.workflow) {\n setMessage({ type: 'success', text: 'Workflow created successfully' })\n onWorkflowCreated?.(result.workflow.id)\n } else {\n setJsonError(result.error || 'Failed to create workflow')\n }\n } catch {\n setJsonError('Failed to create workflow')\n } finally {\n setCreating(false)\n }\n }\n\n async function switchPlatform(targetPlatform: 'n8n' | 'sim') {\n if (!workflowDefinitionId || !apiHandlers?.switchPlatform) {\n setMessage({ type: 'error', text: 'Cannot switch platform - no workflow definition ID or API handler' })\n return\n }\n\n setSwitchingPlatform(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.switchPlatform(workflowDefinitionId, targetPlatform)\n\n if (result.success) {\n setMessage({ \n type: 'success', \n text: targetPlatform === 'sim' \n ? `Switched to Sim Studio${result.simWorkflowId ? ` (workflow: ${result.simWorkflowId})` : ''}`\n : 'Switched to n8n'\n })\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to switch platform' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to switch platform' })\n } finally {\n setSwitchingPlatform(false)\n }\n }\n\n async function loadTemplate() {\n if (!workerId || !workerName || !apiHandlers?.loadTemplate) {\n setJsonError('Worker information or API handler required to generate template.')\n return\n }\n\n if (selectedTemplate === 'blank' || selectedTemplate === 'custom') {\n return\n }\n\n setCreating(true)\n setJsonError(null)\n\n try {\n const result = await apiHandlers.loadTemplate(selectedTemplate, workerId)\n \n if (result.success && result.workflow) {\n setEditedJson(JSON.stringify(result.workflow, null, 2))\n setMessage({ type: 'success', text: 'Template loaded' })\n } else {\n setJsonError(result.error || 'Failed to load template')\n }\n } catch {\n setJsonError('Failed to load template')\n } finally {\n setCreating(false)\n }\n }\n\n const DefaultLoading = (\n <div className=\"h-[320px] bg-slate-50 rounded-lg border border-slate-200 flex items-center justify-center\">\n <div className=\"text-slate-400 text-sm\">Loading...</div>\n </div>\n )\n\n // Show create workflow UI when no workflow exists\n if (!workflow) {\n return (\n <Card className={className}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {allowCreate && viewMode !== 'create' && (\n <Button onClick={startCreating} variant=\"primary\" size=\"sm\">\n Create Workflow\n </Button>\n )}\n </div>\n </CardHeader>\n <CardContent>\n {viewMode === 'create' ? (\n <div className=\"space-y-4\">\n {message && (\n <Alert variant={message.type === 'success' ? 'success' : 'error'}>\n {message.text}\n </Alert>\n )}\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Start from template:</label>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n onClick={() => {\n setSelectedTemplate('blank')\n const blank = platform === 'n8n' ? BLANK_N8N_WORKFLOW : BLANK_SIM_WORKFLOW\n setEditedJson(JSON.stringify(blank, null, 2))\n }}\n variant={selectedTemplate === 'blank' ? 'primary' : 'outline'}\n size=\"sm\"\n >\n Blank\n </Button>\n {internalWorkerType && apiHandlers?.loadTemplate && (\n <Button\n onClick={() => {\n setSelectedTemplate(internalWorkerType as WorkflowTemplate)\n loadTemplate()\n }}\n variant={selectedTemplate === internalWorkerType ? 'primary' : 'outline'}\n size=\"sm\"\n >\n {internalWorkerType.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())} Template\n </Button>\n )}\n </div>\n </div>\n\n {jsonError && (\n <Alert variant=\"error\">{jsonError}</Alert>\n )}\n <Textarea\n value={editedJson}\n onChange={(e) => {\n setEditedJson(e.target.value)\n setJsonError(null)\n }}\n className=\"h-72 font-mono text-xs\"\n placeholder=\"Paste or edit workflow JSON here...\"\n />\n\n <div className=\"flex gap-2\">\n <Button onClick={() => setViewMode('summary')} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button\n onClick={createWorkflow}\n disabled={creating || !editedJson.trim()}\n variant=\"primary\"\n size=\"sm\"\n >\n {creating ? 'Creating...' : 'Create Workflow'}\n </Button>\n </div>\n\n <p className=\"text-xs text-muted-foreground\">\n Create a workflow definition. After creating, use &quot;Push to n8n&quot; to deploy it.\n </p>\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n No workflow defined yet.\n {allowCreate && ' Click \"Create Workflow\" to add one.'}\n </p>\n )}\n </CardContent>\n </Card>\n )\n }\n\n return (\n <Card className={className}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {allowStatusChange && workflowDefinitionId ? (\n <Badge \n variant={localIsActive ? 'success' : 'default'} \n size=\"sm\"\n >\n {localIsActive ? 'Active' : 'Inactive'}\n </Badge>\n ) : isActive !== undefined && (\n <Badge variant={isActive ? 'success' : 'default'} size=\"sm\">\n {isActive ? 'Active' : 'Inactive'}\n </Badge>\n )}\n {hasUnsavedChanges && (\n <Badge variant=\"warning\" size=\"sm\">Unsaved</Badge>\n )}\n {syncError && (\n <Badge variant=\"error\" size=\"sm\">Sync Error</Badge>\n )}\n </div>\n <div className=\"flex gap-1\">\n {viewMode === 'edit' ? (\n <>\n <Button onClick={cancelEditing} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button onClick={saveWorkflow} disabled={saving} variant=\"primary\" size=\"sm\">\n {saving ? 'Saving...' : 'Save JSON'}\n </Button>\n </>\n ) : (\n <>\n <div className=\"flex border border-border rounded-md overflow-hidden mr-2\">\n <button\n onClick={() => setViewMode('summary')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors ${\n viewMode === 'summary' \n ? 'bg-primary text-white' \n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <Eye size={14} />\n Summary\n </button>\n <button\n onClick={() => setViewMode('flow')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors border-l border-border ${\n viewMode === 'flow'\n ? 'bg-primary text-white'\n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <TreeStructure size={14} />\n Diagram\n </button>\n <button\n onClick={() => setViewMode('json')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors border-l border-border ${\n viewMode === 'json' \n ? 'bg-primary text-white' \n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <Code size={14} />\n JSON\n </button>\n </div>\n {editable && apiHandlers?.saveWorkflow && (\n <Button onClick={startEditing} variant=\"outline\" size=\"sm\" icon={<PencilSimple size={14} />}>\n Edit\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {message && (\n <Alert variant={message.type === 'success' ? 'success' : 'error'}>\n {message.text}\n </Alert>\n )}\n\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-muted-foreground\">\n {workflowId && (\n <span className=\"font-mono bg-muted px-2 py-1 rounded\">{workflowId}</span>\n )}\n {lastSynced && (\n <span>Synced {formatDistance(new Date(lastSynced), { addSuffix: true })}</span>\n )}\n </div>\n\n {/* Webhook URL display */}\n {webhookUrl && (\n <div className=\"flex items-center gap-2 p-2 bg-muted/50 rounded border border-border\">\n <WebhooksLogo size={14} className=\"text-muted-foreground flex-shrink-0\" />\n <code className=\"text-xs font-mono text-foreground truncate flex-1\">{webhookUrl}</code>\n <button\n onClick={() => copyToClipboard(webhookUrl, 'Webhook URL copied')}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground flex-shrink-0\"\n >\n <Copy size={12} />\n Copy\n </button>\n </div>\n )}\n\n {(allowPlatformChange || allowStatusChange) && workflowDefinitionId && hasUnsavedChanges && apiHandlers?.saveSettings && (\n <div className=\"p-3 bg-amber-50 border border-amber-200 rounded-lg space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium text-amber-800\">Unsaved changes</span>\n <div className=\"flex gap-2\">\n <Button onClick={cancelChanges} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button onClick={saveSettings} disabled={saving} variant=\"primary\" size=\"sm\">\n {saving ? 'Saving...' : 'Save'}\n </Button>\n </div>\n </div>\n \n <div className=\"flex gap-4 text-sm\">\n {allowPlatformChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Platform:</span>\n <Select\n value={localPlatform}\n onChange={(e) => handleLocalPlatformChange(e.target.value as 'n8n' | 'sim')}\n className=\"h-8 text-sm w-28\"\n >\n <option value=\"n8n\">n8n</option>\n <option value=\"sim\">Sim Studio</option>\n </Select>\n </div>\n )}\n {allowStatusChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Status:</span>\n <Select\n value={localIsActive ? 'active' : 'inactive'}\n onChange={(e) => handleLocalStatusChange(e.target.value === 'active')}\n className=\"h-8 text-sm w-28\"\n >\n <option value=\"active\">Active</option>\n <option value=\"inactive\">Inactive</option>\n </Select>\n </div>\n )}\n </div>\n </div>\n )}\n\n {syncError && (\n <Alert variant=\"error\">\n <strong>Sync Error:</strong> {syncError}\n </Alert>\n )}\n\n {/* n8n sync buttons */}\n {editable && workerId && platform === 'n8n' && viewMode !== 'edit' && apiHandlers?.pushToN8n && (\n <div className=\"flex flex-wrap gap-2\">\n <Button onClick={pushToN8n} disabled={syncing} variant=\"primary\" size=\"sm\" icon={<CloudArrowUp size={16} />}>\n {syncing ? 'Pushing...' : 'Push to n8n'}\n </Button>\n {workflowId && apiHandlers?.pullFromN8n && (\n <Button onClick={pullFromN8n} disabled={pulling} variant=\"outline\" size=\"sm\" icon={<CloudArrowDown size={16} />}>\n {pulling ? 'Pulling...' : 'Pull from n8n'}\n </Button>\n )}\n {/* Switch to Sim Studio button */}\n {workflowDefinitionId && apiHandlers?.switchPlatform && (\n <Button \n onClick={() => switchPlatform('sim')} \n disabled={switchingPlatform} \n variant=\"outline\" \n size=\"sm\" \n icon={<ArrowsClockwise size={16} />}\n className=\"border-purple-300 text-purple-700 hover:bg-purple-50 hover:border-purple-400\"\n >\n {switchingPlatform ? 'Switching...' : 'Switch to Sim Studio'}\n </Button>\n )}\n </div>\n )}\n\n {/* Sim Studio sync buttons */}\n {platform === 'sim' && viewMode !== 'edit' && (\n <div className=\"flex flex-wrap gap-2\">\n {/* Push/Pull buttons (require workflow definition) */}\n {editable && workflowDefinitionId && apiHandlers?.pushToSim && (\n <Button \n onClick={pushToSim} \n disabled={pushingToSim} \n variant=\"primary\" \n size=\"sm\" \n icon={<CloudArrowUp size={16} />}\n >\n {pushingToSim ? 'Pushing...' : 'Push to Sim'}\n </Button>\n )}\n {apiHandlers?.pullFromSim && (\n <Button\n onClick={pullFromSim}\n disabled={pullingFromSim || !simWorkflowId}\n variant=\"outline\"\n size=\"sm\"\n icon={<CloudArrowDown size={16} />}\n title={!simWorkflowId ? 'No Sim workflow linked yet. Push to Sim first.' : undefined}\n >\n {pullingFromSim ? 'Pulling...' : 'Pull from Sim'}\n </Button>\n )}\n {/* Export/Backup buttons (require sim workflow id) */}\n {simWorkflowId && apiHandlers?.exportFromSim && (\n <Button \n onClick={exportFromSim} \n disabled={exporting} \n variant=\"outline\" \n size=\"sm\" \n icon={<DownloadSimple size={16} />}\n >\n {exporting ? 'Exporting...' : 'Export Backup'}\n </Button>\n )}\n {simWorkflowId && apiHandlers?.getSimBackups && (\n <Button \n onClick={showBackups} \n variant=\"outline\" \n size=\"sm\" \n icon={<ClockCounterClockwise size={16} />}\n >\n History\n </Button>\n )}\n {simStudioUrl && simWorkflowId && (\n <Button \n onClick={openInSimStudio} \n variant=\"outline\" \n size=\"sm\" \n icon={<ArrowSquareOut size={16} />}\n >\n Open in Sim\n </Button>\n )}\n </div>\n )}\n\n <div className=\"pt-2\">\n {viewMode === 'edit' ? (\n <div className=\"space-y-3\">\n {jsonError && (\n <Alert variant=\"error\">{jsonError}</Alert>\n )}\n <Textarea\n value={editedJson}\n onChange={(e) => {\n setEditedJson(e.target.value)\n setJsonError(null)\n }}\n className=\"h-[400px] font-mono text-xs\"\n />\n <p className=\"text-xs text-muted-foreground\">\n Edit the workflow JSON above. Changes will be saved to the database. Use &quot;Push to n8n&quot; to sync.\n </p>\n </div>\n ) : viewMode === 'json' ? (\n <div className=\"relative rounded-sm overflow-hidden border border-border\">\n <div className=\"flex items-center justify-between px-4 py-2 bg-[var(--black)] border-b border-gray-800\">\n <span className=\"text-xs font-medium text-gray-400\">JSON</span>\n <Button\n onClick={() => copyToClipboard(JSON.stringify(workflow, null, 2), 'JSON copied')}\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 bg-transparent border-gray-600 text-gray-300 hover:bg-gray-800 hover:text-white hover:border-gray-500\"\n icon={<Copy size={12} />}\n >\n Copy\n </Button>\n </div>\n <pre className=\"p-4 bg-[var(--black)] text-gray-100 text-xs overflow-auto max-h-[500px] font-mono\">\n {JSON.stringify(workflow, null, 2)}\n </pre>\n </div>\n ) : viewMode === 'flow' ? (\n <Suspense fallback={loadingComponent || DefaultLoading}>\n <WorkflowFlow workflow={workflow as any} height={380} platform={platform} />\n </Suspense>\n ) : viewMode === 'backups' ? (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h4 className=\"text-sm font-medium\">\n {diffMode ? 'Compare Versions' : 'Backup History'}\n </h4>\n <div className=\"flex items-center gap-2\">\n {!diffMode && backups.length >= 2 && apiHandlers?.getBackupState && (\n <Button\n onClick={startDiffMode}\n variant=\"outline\"\n size=\"sm\"\n icon={<ArrowsLeftRight size={14} />}\n >\n Compare\n </Button>\n )}\n {diffMode && (\n <Button\n onClick={exitDiffMode}\n variant=\"outline\"\n size=\"sm\"\n icon={<X size={14} />}\n >\n Cancel\n </Button>\n )}\n <Button\n onClick={() => { exitDiffMode(); setViewMode('summary'); }}\n variant=\"outline\"\n size=\"sm\"\n >\n Back to Summary\n </Button>\n </div>\n </div>\n\n {/* Diff mode: version selection and results */}\n {diffMode && (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"p-3 bg-muted/50 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">From (older)</p>\n <Select\n value={selectedBackupA || ''}\n onChange={(e) => loadBackupForDiff(e.target.value, 'A')}\n disabled={loadingDiff}\n className=\"w-full\"\n >\n <option value=\"\">Select version...</option>\n {backups.map((b) => (\n <option key={b.id} value={b.id} disabled={b.id === selectedBackupB}>\n v{b.version} - {b.versionLabel || b.workflowName}\n </option>\n ))}\n </Select>\n </div>\n <div className=\"p-3 bg-muted/50 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">To (newer)</p>\n <Select\n value={selectedBackupB || ''}\n onChange={(e) => loadBackupForDiff(e.target.value, 'B')}\n disabled={loadingDiff}\n className=\"w-full\"\n >\n <option value=\"\">Select version...</option>\n {backups.map((b) => (\n <option key={b.id} value={b.id} disabled={b.id === selectedBackupA}>\n v{b.version} - {b.versionLabel || b.workflowName}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n {/* Diff results */}\n {loadingDiff ? (\n <div className=\"py-4 text-center text-muted-foreground\">Loading versions...</div>\n ) : backupStateA && backupStateB ? (\n (() => {\n const diff = computeWorkflowDiff(backupStateA, backupStateB)\n return (\n <div className=\"space-y-3\">\n <div className=\"p-3 bg-muted/30 rounded border border-border\">\n <p className=\"text-sm font-medium mb-2\">Changes Summary</p>\n <p className=\"text-sm text-muted-foreground\">{diff.summary}</p>\n </div>\n\n {diff.blocksAdded.length > 0 && (\n <div className=\"p-3 bg-green-500/10 rounded border border-green-500/30\">\n <div className=\"flex items-center gap-2 text-green-600 dark:text-green-400 mb-2\">\n <Plus size={14} />\n <span className=\"text-xs font-medium\">Blocks Added ({diff.blocksAdded.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksAdded.map((id) => {\n const block = backupStateB?.blocks?.[id]\n return (\n <Badge key={id} variant=\"success\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {diff.blocksRemoved.length > 0 && (\n <div className=\"p-3 bg-red-500/10 rounded border border-red-500/30\">\n <div className=\"flex items-center gap-2 text-red-600 dark:text-red-400 mb-2\">\n <Minus size={14} />\n <span className=\"text-xs font-medium\">Blocks Removed ({diff.blocksRemoved.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksRemoved.map((id) => {\n const block = backupStateA?.blocks?.[id]\n return (\n <Badge key={id} variant=\"error\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {diff.blocksModified.length > 0 && (\n <div className=\"p-3 bg-amber-500/10 rounded border border-amber-500/30\">\n <div className=\"flex items-center gap-2 text-amber-600 dark:text-amber-400 mb-2\">\n <Pencil size={14} />\n <span className=\"text-xs font-medium\">Blocks Modified ({diff.blocksModified.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksModified.map((id) => {\n const block = backupStateB?.blocks?.[id]\n return (\n <Badge key={id} variant=\"warning\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {(diff.edgesAdded > 0 || diff.edgesRemoved > 0) && (\n <div className=\"p-3 bg-muted/30 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Connection Changes</p>\n <div className=\"flex gap-3 text-sm\">\n {diff.edgesAdded > 0 && (\n <span className=\"text-green-600 dark:text-green-400\">+{diff.edgesAdded} added</span>\n )}\n {diff.edgesRemoved > 0 && (\n <span className=\"text-red-600 dark:text-red-400\">-{diff.edgesRemoved} removed</span>\n )}\n </div>\n </div>\n )}\n </div>\n )\n })()\n ) : selectedBackupA || selectedBackupB ? (\n <div className=\"py-4 text-center text-muted-foreground text-sm\">\n Select both versions to compare\n </div>\n ) : null}\n </div>\n )}\n\n {/* Regular backup list (when not in diff mode) */}\n {!diffMode && (\n <>\n {loadingBackups ? (\n <div className=\"py-8 text-center text-muted-foreground\">Loading backups...</div>\n ) : backups.length === 0 ? (\n <div className=\"py-8 text-center text-muted-foreground\">\n <ClockCounterClockwise size={32} className=\"mx-auto mb-2 opacity-50\" />\n <p>No backups yet</p>\n <p className=\"text-xs mt-1\">Click &quot;Export from Sim&quot; to create a backup</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {backups.map((backup, index) => (\n <div\n key={backup.id}\n className=\"flex items-center justify-between p-3 bg-muted/50 rounded border border-border\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded bg-primary/10 text-primary text-sm font-semibold\">\n v{backup.version}\n </div>\n <div>\n <p className=\"text-sm font-medium\">\n {backup.versionLabel || backup.workflowName}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {formatDistance(new Date(backup.exportedAt), { addSuffix: true })}\n {backup.isDeployed && (\n <Badge variant=\"success\" size=\"sm\" className=\"ml-2\">Deployed</Badge>\n )}\n </p>\n </div>\n </div>\n {index < backups.length - 1 && apiHandlers?.getBackupState && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n startDiffMode()\n loadBackupForDiff(backups[index + 1].id, 'A')\n loadBackupForDiff(backup.id, 'B')\n }}\n icon={<ArrowsLeftRight size={14} />}\n >\n Diff\n </Button>\n )}\n </div>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n ) : (\n platform === 'n8n' \n ? <N8nWorkflowSummary workflow={workflow as N8nWorkflow} showFlow={false} />\n : <SimWorkflowSummary workflow={workflow as SimWorkflow} />\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default WorkflowViewer\n"]}
1
+ {"version":3,"sources":["../src/components/workflow-flow.tsx","../src/index.ts","../src/lib/utils.ts","../src/components/button.tsx","../src/components/sheet.tsx","../src/components/logo.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/progress.tsx","../src/components/icon-box.tsx","../src/components/tag.tsx","../src/components/stat.tsx","../src/components/metric-card.tsx","../src/components/metric-label.tsx","../src/components/usage-bar.tsx","../src/components/usage-chart.tsx","../src/components/input.tsx","../node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-label/src/label.tsx","../src/components/label.tsx","../src/components/textarea.tsx","../src/components/select.tsx","../src/icons.ts","../src/components/checkbox.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/radio-group.tsx","../src/components/accordion.tsx","../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../node_modules/@radix-ui/react-separator/src/separator.tsx","../src/components/separator.tsx","../src/components/navigation-menu.tsx","../src/components/avatar.tsx","../src/components/dropdown-menu.tsx","../src/components/sidebar.tsx","../src/components/alert.tsx","../src/components/empty-state.tsx","../src/components/error-state.tsx","../src/components/code-block.tsx","../src/components/form-field.tsx","../src/components/table.tsx","../src/components/divider.tsx","../src/components/tabs.tsx","../src/components/dialog.tsx","../src/components/alert-dialog.tsx","../src/components/popover.tsx","../src/components/tooltip.tsx","../src/components/toast.tsx","../src/components/use-toast.tsx","../src/components/toaster.tsx","../src/components/skeleton.tsx","../src/components/pagination.tsx","../src/components/step-progress.tsx","../src/components/breadcrumbs.tsx","../src/components/date-range-picker.tsx","../src/components/file-preview.tsx","../src/components/settings-nav.tsx","../src/components/scenarios-manager.tsx","../src/components/impact-metrics-form.tsx","../src/components/activity-timeline.tsx","../src/components/workflow-viewer.tsx"],"names":["jsxs","jsx","Handle","Position","useMemo","forwardEdges","backwardEdges","roots","levels","queue","visited","nodesByLevel","xGap","yGap","positions","sortedLevels","nodes","edges","MarkerType","useNodesState","useEdgesState","ReactFlow","Background","Label","Separator","twMerge","clsx","cva","React","Slot","Slottable","SheetPrimitive","React2","X","React3","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","createSlot","Node","React14","React15","Root","React16","React17","React18","CaretDown","react_star","React19","React20","SwitchPrimitive","React21","SliderPrimitive","React22","RadioGroupPrimitive","Circle","AccordionPrimitive","React23","NODES","Primitive","React24","NAME","React25","React26","React27","NavigationMenuPrimitive","React28","AvatarPrimitive","DropdownMenuPrimitive","React29","React30","React31","React32","React33","React34","React35","React36","React37","TabsPrimitive","React38","DialogPrimitive","React39","AlertDialogPrimitive","React40","PopoverPrimitive","React41","TooltipPrimitive","React42","ToastPrimitives","React43","Check","WarningCircle","Info","toast","props","React44","React45","React46","CaretLeft","DotsThree","CaretRight","React47","React48","House","React49","FileVideo","FileImage","FilePdf","FileDoc","File","useState","useRef","Fragment","Play","Download","Folder","ArrowSquareOut","CircleNotch","React50","Link","Warning","CheckCircle","Question","PencilSimple","Trash","Plus","React51","Lightning","CaretUp","PaperPlaneTilt","WorkflowFlow","lazy","WebhooksLogo","Timer","GitBranch","Globe","Robot","Code","Package","getNodeTypeLabel","TreeStructure","Suspense","Eye","Copy","CloudArrowUp","CloudArrowDown","ArrowsClockwise","DownloadSimple","ClockCounterClockwise","ArrowsLeftRight","Minus","Pencil"],"mappings":"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","file":"index.js","sourcesContent":["'use client'\n\nimport { useMemo } from 'react'\nimport {\n ReactFlow,\n Node,\n Edge,\n Background,\n useNodesState,\n useEdgesState,\n Position,\n MarkerType,\n Handle,\n} from '@xyflow/react'\nimport '@xyflow/react/dist/style.css'\n\n// ============================================\n// Types\n// ============================================\n\nexport interface N8nNode {\n id: string\n name: string\n type: string\n parameters?: Record<string, unknown>\n}\n\nexport interface N8nWorkflow {\n name: string\n nodes: N8nNode[]\n connections: Record<string, Record<string, Array<Array<{ node: string; type: string; index: number }>>>>\n}\n\nexport interface SimBlock {\n id: string\n type: string\n name: string\n position?: { x: number; y: number }\n subBlocks?: Record<string, unknown>\n outputs?: Record<string, unknown>\n enabled?: boolean\n}\n\nexport interface SimWorkflow {\n blocks?: Record<string, SimBlock>\n edges?: Array<{\n id?: string\n source?: string\n target?: string\n sourceHandle?: string\n targetHandle?: string\n }>\n loops?: Record<string, unknown>\n parallels?: Record<string, unknown>\n}\n\nexport interface WorkflowFlowProps {\n /** The workflow to visualize (n8n or Sim format) */\n workflow: N8nWorkflow | SimWorkflow\n /** Height of the flow diagram container */\n height?: number\n /** Additional CSS class name */\n className?: string\n /** Platform type */\n platform?: 'n8n' | 'sim'\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\nfunction getNodeTypeLabel(type: string): string {\n const labels: Record<string, string> = {\n // n8n types\n 'n8n-nodes-base.webhook': 'Webhook',\n 'n8n-nodes-base.scheduleTrigger': 'Schedule',\n 'n8n-nodes-base.if': 'Condition',\n 'n8n-nodes-base.httpRequest': 'HTTP Request',\n 'n8n-nodes-base.set': 'Set Data',\n 'n8n-nodes-base.code': 'Code',\n 'n8n-nodes-base.respondToWebhook': 'Response',\n '@n8n/n8n-nodes-langchain.agent': 'AI Agent',\n '@n8n/n8n-nodes-langchain.lmChatOpenAi': 'OpenAI',\n '@n8n/n8n-nodes-langchain.lmChatAnthropic': 'Anthropic',\n // Sim Studio types\n 'starter': 'Webhook',\n 'webhook': 'Webhook',\n 'agent': 'AI Agent',\n 'llm': 'LLM',\n 'openai': 'OpenAI',\n 'anthropic': 'Anthropic',\n 'api': 'API Request',\n 'http_request': 'HTTP Request',\n 'condition': 'Condition',\n 'code': 'Code',\n 'response': 'Response',\n 'function': 'Function',\n 'evaluator': 'Evaluator',\n 'router': 'Router',\n }\n return labels[type] || type.split('.').pop()?.replace(/([A-Z])/g, ' $1').trim() || type\n}\n\n// ============================================\n// Custom Node Component\n// ============================================\n\nfunction CustomNode({ data }: { data: { label: string; type: string } }) {\n return (\n <div className=\"px-3 py-2 rounded bg-white border border-slate-200 shadow-sm min-w-[110px] text-center\">\n <Handle type=\"target\" position={Position.Left} className=\"!bg-slate-300 !w-1.5 !h-1.5 !border-0\" />\n <div className=\"text-xs font-medium text-slate-700 truncate max-w-[130px]\">\n {data.label}\n </div>\n <div className=\"text-[10px] text-slate-400 truncate max-w-[130px]\">\n {getNodeTypeLabel(data.type)}\n </div>\n <Handle type=\"source\" position={Position.Right} className=\"!bg-slate-300 !w-1.5 !h-1.5 !border-0\" />\n </div>\n )\n}\n\nconst nodeTypes = { custom: CustomNode }\n\n// ============================================\n// Main Component\n// ============================================\n\nexport function WorkflowFlow({ workflow, height = 350, className = '', platform = 'n8n' }: WorkflowFlowProps) {\n const { initialNodes, initialEdges } = useMemo(() => {\n // Handle Sim Studio format (blocks object + edges array)\n if (platform === 'sim') {\n const simWorkflow = workflow as SimWorkflow\n const blocks = simWorkflow.blocks || {}\n const simEdges = simWorkflow.edges || []\n const blockList = Object.values(blocks)\n\n if (blockList.length === 0) {\n return { initialNodes: [], initialEdges: [] }\n }\n\n // Build adjacency for layout\n const forwardEdges = new Map<string, string[]>()\n const backwardEdges = new Map<string, string[]>()\n\n simEdges.forEach(edge => {\n const from = edge.source\n const to = edge.target\n if (from && to) {\n if (!forwardEdges.has(from)) forwardEdges.set(from, [])\n forwardEdges.get(from)!.push(to)\n if (!backwardEdges.has(to)) backwardEdges.set(to, [])\n backwardEdges.get(to)!.push(from)\n }\n })\n\n // Find trigger blocks\n const triggerBlocks = blockList.filter(b =>\n b.type === 'starter' || b.type === 'webhook' || b.type === 'api'\n )\n\n const roots = triggerBlocks.length > 0\n ? triggerBlocks\n : blockList.filter(b => !backwardEdges.has(b.id) || backwardEdges.get(b.id)!.length === 0)\n\n // BFS to assign levels\n const levels = new Map<string, number>()\n const queue: string[] = []\n\n roots.forEach(r => {\n levels.set(r.id, 0)\n queue.push(r.id)\n })\n\n const visited = new Set<string>()\n while (queue.length > 0) {\n const id = queue.shift()!\n if (visited.has(id)) continue\n visited.add(id)\n\n const children = forwardEdges.get(id) || []\n const myLevel = levels.get(id) || 0\n\n children.forEach(child => {\n const childLevel = levels.get(child)\n if (childLevel === undefined || myLevel + 1 > childLevel) {\n levels.set(child, myLevel + 1)\n }\n if (!visited.has(child)) {\n queue.push(child)\n }\n })\n }\n\n // Handle disconnected blocks\n blockList.forEach(block => {\n if (!levels.has(block.id)) {\n const maxLevel = Math.max(0, ...Array.from(levels.values()))\n levels.set(block.id, maxLevel + 1)\n }\n })\n\n // Group by level and position\n const nodesByLevel = new Map<number, string[]>()\n levels.forEach((level, id) => {\n if (!nodesByLevel.has(level)) nodesByLevel.set(level, [])\n nodesByLevel.get(level)!.push(id)\n })\n\n const xGap = 170\n const yGap = 70\n const positions = new Map<string, { x: number; y: number }>()\n\n const sortedLevels = Array.from(nodesByLevel.keys()).sort((a, b) => a - b)\n sortedLevels.forEach(level => {\n const nodesInLevel = nodesByLevel.get(level)!\n const totalHeight = (nodesInLevel.length - 1) * yGap\n const startY = -totalHeight / 2\n nodesInLevel.forEach((id, i) => {\n positions.set(id, { x: level * xGap, y: startY + i * yGap })\n })\n })\n\n // Create ReactFlow nodes\n const nodes: Node[] = blockList.map(block => ({\n id: block.id,\n type: 'custom',\n position: positions.get(block.id) || { x: 0, y: 0 },\n data: { label: block.name || block.type, type: block.type },\n }))\n\n // Create edges\n const edges: Edge[] = simEdges.map((edge, idx) => ({\n id: edge.id || `edge-${idx}`,\n source: edge.source || '',\n target: edge.target || '',\n type: 'smoothstep',\n pathOptions: { borderRadius: 20 },\n style: { stroke: '#94a3b8', strokeWidth: 1.5 },\n markerEnd: { type: MarkerType.ArrowClosed, color: '#94a3b8', width: 14, height: 14 },\n })).filter(e => e.source && e.target)\n\n return { initialNodes: nodes, initialEdges: edges }\n }\n\n // Handle n8n format (nodes array + connections object)\n const n8nWorkflow = workflow as N8nWorkflow\n const n8nNodes = n8nWorkflow.nodes || []\n const connections = n8nWorkflow.connections || {}\n const nodeIdMap = new Map(n8nNodes.map(n => [n.name, n.id || n.name]))\n \n // Build adjacency lists (forward and backward)\n const forwardEdges = new Map<string, string[]>() // from -> [to]\n const backwardEdges = new Map<string, string[]>() // to -> [from]\n const allEdgeData: Array<{ from: string; to: string; outputType: string; oi: number; ci: number }> = []\n \n Object.entries(connections).forEach(([fromNodeName, outputTypes]) => {\n Object.entries(outputTypes).forEach(([outputType, outputs]) => {\n if (!Array.isArray(outputs)) return\n outputs.forEach((outputArray, oi) => {\n if (!Array.isArray(outputArray)) return\n outputArray.forEach((conn, ci) => {\n if (!forwardEdges.has(fromNodeName)) forwardEdges.set(fromNodeName, [])\n forwardEdges.get(fromNodeName)!.push(conn.node)\n \n if (!backwardEdges.has(conn.node)) backwardEdges.set(conn.node, [])\n backwardEdges.get(conn.node)!.push(fromNodeName)\n \n allEdgeData.push({ from: fromNodeName, to: conn.node, outputType, oi, ci })\n })\n })\n })\n })\n\n // Find trigger nodes (webhooks, schedule triggers) - these are the true starting points\n const triggerNodes = n8nNodes.filter(n => \n n.type.includes('webhook') || n.type.includes('Trigger') || n.type.includes('schedule')\n )\n \n // If no triggers found, find nodes with no incoming edges as fallback\n const roots = triggerNodes.length > 0 \n ? triggerNodes \n : n8nNodes.filter(n => !backwardEdges.has(n.name) || backwardEdges.get(n.name)!.length === 0)\n \n // Assign levels using BFS from trigger/root nodes only\n const levels = new Map<string, number>()\n const queue: string[] = []\n \n roots.forEach(r => {\n levels.set(r.name, 0)\n queue.push(r.name)\n })\n \n const visited = new Set<string>()\n while (queue.length > 0) {\n const name = queue.shift()!\n if (visited.has(name)) continue\n visited.add(name)\n \n const children = forwardEdges.get(name) || []\n const myLevel = levels.get(name) || 0\n \n children.forEach(child => {\n const childLevel = levels.get(child)\n if (childLevel === undefined || myLevel + 1 > childLevel) {\n levels.set(child, myLevel + 1)\n }\n if (!visited.has(child)) {\n queue.push(child)\n }\n })\n }\n \n // Handle nodes that weren't reached (like AI models that feed into other nodes)\n // Place them one level before the node they connect to\n n8nNodes.forEach(node => {\n if (!levels.has(node.name)) {\n const targets = forwardEdges.get(node.name) || []\n if (targets.length > 0) {\n // Find the level of the target and place this node one level before\n const targetLevels = targets.map(t => levels.get(t) ?? 0)\n const targetLevel = Math.min(...targetLevels)\n levels.set(node.name, Math.max(0, targetLevel - 1))\n } else {\n // No connections at all, place at the end\n const maxLevel = Math.max(0, ...Array.from(levels.values()))\n levels.set(node.name, maxLevel)\n }\n }\n })\n \n // Group nodes by level\n const nodesByLevel = new Map<number, string[]>()\n levels.forEach((level, name) => {\n if (!nodesByLevel.has(level)) nodesByLevel.set(level, [])\n nodesByLevel.get(level)!.push(name)\n })\n \n // Sort nodes within each level to minimize crossings\n // Simple heuristic: sort by average position of connected nodes in previous level\n const sortedLevels = Array.from(nodesByLevel.keys()).sort((a, b) => a - b)\n \n sortedLevels.forEach((level, levelIdx) => {\n if (levelIdx === 0) return // Skip first level\n \n const nodesInLevel = nodesByLevel.get(level)!\n const prevLevel = sortedLevels[levelIdx - 1]\n const prevNodes = nodesByLevel.get(prevLevel) || []\n const prevPositions = new Map(prevNodes.map((n, i) => [n, i]))\n \n // Calculate average position of parents for each node\n nodesInLevel.sort((a, b) => {\n const parentsA = backwardEdges.get(a) || []\n const parentsB = backwardEdges.get(b) || []\n \n const avgA = parentsA.length > 0 \n ? parentsA.reduce((sum, p) => sum + (prevPositions.get(p) ?? 0), 0) / parentsA.length \n : 0\n const avgB = parentsB.length > 0 \n ? parentsB.reduce((sum, p) => sum + (prevPositions.get(p) ?? 0), 0) / parentsB.length \n : 0\n \n return avgA - avgB\n })\n })\n \n // Assign positions\n const positions = new Map<string, { x: number; y: number }>()\n const xGap = 170\n const yGap = 70\n \n sortedLevels.forEach(level => {\n const nodesInLevel = nodesByLevel.get(level)!\n const totalHeight = (nodesInLevel.length - 1) * yGap\n const startY = -totalHeight / 2\n \n nodesInLevel.forEach((name, i) => {\n positions.set(name, { x: level * xGap, y: startY + i * yGap })\n })\n })\n\n // Create ReactFlow nodes\n const nodes: Node[] = n8nNodes.map(node => ({\n id: node.id || node.name,\n type: 'custom',\n position: positions.get(node.name) || { x: 0, y: 0 },\n data: { label: node.name, type: node.type },\n }))\n\n // Create edges with better styling\n const edges: Edge[] = allEdgeData.map(({ from, to, oi, ci }) => {\n const fromId = nodeIdMap.get(from)!\n const toId = nodeIdMap.get(to)!\n \n return {\n id: `${fromId}-${toId}-${oi}-${ci}`,\n source: fromId,\n target: toId,\n type: 'smoothstep',\n pathOptions: { borderRadius: 20 },\n style: { stroke: '#94a3b8', strokeWidth: 1.5 },\n markerEnd: { type: MarkerType.ArrowClosed, color: '#94a3b8', width: 14, height: 14 },\n }\n })\n\n return { initialNodes: nodes, initialEdges: edges }\n }, [workflow])\n\n const [nodes, , onNodesChange] = useNodesState(initialNodes)\n const [edges, , onEdgesChange] = useEdgesState(initialEdges)\n\n return (\n <div style={{ height }} className={`bg-slate-50 rounded-lg border border-slate-200 overflow-hidden ${className}`}>\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n fitView\n fitViewOptions={{ padding: 0.1, minZoom: 0.8 }}\n minZoom={0.5}\n maxZoom={2}\n proOptions={{ hideAttribution: true }}\n defaultEdgeOptions={{\n type: 'smoothstep',\n }}\n >\n <Background color=\"#e2e8f0\" gap={24} size={1} />\n </ReactFlow>\n </div>\n )\n}\n\nexport default WorkflowFlow\n","// Core Components\nexport { Button, buttonVariants } from './components/button'\nexport type { ButtonProps } from './components/button'\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n} from './components/sheet'\n\nexport { Logo } from './components/logo'\nexport type { LogoProps } from './components/logo'\n\n// New Design System Components\nexport { Badge, badgeVariants } from './components/badge'\nexport type { BadgeProps } from './components/badge'\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n} from './components/card'\n\nexport { Progress, progressVariants } from './components/progress'\nexport type { ProgressProps } from './components/progress'\n\nexport { IconBox, iconBoxVariants } from './components/icon-box'\nexport type { IconBoxProps } from './components/icon-box'\n\nexport { Tag, tagVariants } from './components/tag'\nexport type { TagProps } from './components/tag'\n\nexport { Stat, statVariants, valueVariants } from './components/stat'\nexport type { StatProps } from './components/stat'\n\nexport { MetricCard, metricCardVariants } from './components/metric-card'\nexport type { MetricCardProps } from './components/metric-card'\n\nexport { MetricLabel, MetricValue, MetricSubtext, Metric } from './components/metric-label'\nexport type { MetricLabelProps, MetricValueProps, MetricSubtextProps } from './components/metric-label'\n\nexport { UsageBar, usageBarVariants } from './components/usage-bar'\nexport type { UsageBarProps } from './components/usage-bar'\n\nexport { UsageChart } from './components/usage-chart'\nexport type { UsageChartProps, UsageChartDataPoint } from './components/usage-chart'\n\n// Form Components\nexport { Input } from './components/input'\nexport type { InputProps } from './components/input'\n\nexport { Label } from './components/label'\nexport type { LabelProps } from '@radix-ui/react-label'\n\nexport { Textarea } from './components/textarea'\nexport type { TextareaProps } from './components/textarea'\n\nexport { Select } from './components/select'\nexport type { SelectProps } from './components/select'\n\nexport { Checkbox } from './components/checkbox'\nexport type { CheckboxProps } from './components/checkbox'\n\nexport { Switch, LabeledSwitch } from './components/switch'\nexport type { SwitchProps, LabeledSwitchProps } from './components/switch'\n\nexport { Slider, LabeledSlider } from './components/slider'\nexport type { SliderProps, LabeledSliderProps } from './components/slider'\n\nexport { RadioGroup, RadioGroupItem, RadioGroupOption, RadioGroupCard } from './components/radio-group'\nexport type { RadioGroupOptionProps, RadioGroupCardProps } from './components/radio-group'\n\n// Navigation & Layout Components\nexport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from './components/accordion'\n\nexport { Separator } from './components/separator'\nexport type { SeparatorProps } from '@radix-ui/react-separator'\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n} from './components/navigation-menu'\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n} from './components/avatar'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n} from './components/dropdown-menu'\n\nexport { Sidebar } from './components/sidebar'\nexport type {\n SidebarProps,\n SidebarNavItem,\n SidebarNavItemProps,\n} from './components/sidebar'\n\nexport { Alert, alertVariants } from './components/alert'\nexport type { AlertProps } from './components/alert'\n\nexport { EmptyState } from './components/empty-state'\nexport type { EmptyStateProps } from './components/empty-state'\n\nexport { ErrorState } from './components/error-state'\nexport type { ErrorStateProps } from './components/error-state'\n\nexport { CodeBlock } from './components/code-block'\nexport type { CodeBlockProps } from './components/code-block'\n\nexport { FormField } from './components/form-field'\nexport type { FormFieldProps } from './components/form-field'\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/table'\n\nexport { Divider } from './components/divider'\nexport type { DividerProps } from './components/divider'\n\n// Tabs Components\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n TabsListUnderline,\n TabsTriggerUnderline,\n} from './components/tabs'\n\n// Dialog Components\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n} from './components/dialog'\n\n// Alert Dialog Components\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n ConfirmDialog,\n} from './components/alert-dialog'\nexport type { ConfirmDialogProps } from './components/alert-dialog'\n\n// Popover Components\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverArrow,\n} from './components/popover'\n\n// Tooltip Components\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n SimpleTooltip,\n} from './components/tooltip'\nexport type { SimpleTooltipProps } from './components/tooltip'\n\n// Toast Components\nexport {\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n ToastIcon,\n} from './components/toast'\nexport type { ToastProps, ToastActionElement } from './components/toast'\n\nexport { Toaster } from './components/toaster'\nexport { useToast, toast } from './components/use-toast'\n\n// Skeleton/Loading Components\nexport { Skeleton, SkeletonText, SkeletonCard } from './components/skeleton'\nexport type { SkeletonProps, SkeletonTextProps, SkeletonCardProps } from './components/skeleton'\n\n// Pagination Components\nexport { Pagination, SimplePagination } from './components/pagination'\nexport type { PaginationProps, SimplePaginationProps } from './components/pagination'\n\n// Step Progress Components\nexport { StepProgress, StepDots } from './components/step-progress'\nexport type { Step, StepProgressProps, StepDotsProps } from './components/step-progress'\n\n// Breadcrumb Components\nexport { Breadcrumbs, BreadcrumbLink } from './components/breadcrumbs'\nexport type { BreadcrumbItem, BreadcrumbsProps, BreadcrumbLinkProps } from './components/breadcrumbs'\n\n// Date Range Picker Components\nexport { DateRangePicker, DateRangeSelect, getDateRangeFromPreset } from './components/date-range-picker'\nexport type { DateRangePreset, DateRangePickerProps, DateRangeSelectProps } from './components/date-range-picker'\n\n// File Preview Components\nexport { FilePreview } from './components/file-preview'\nexport type { FilePreviewProps, UploadedFile } from './components/file-preview'\n\n// Settings Navigation Components\nexport { SettingsNav, SettingsNavLink } from './components/settings-nav'\nexport type { SettingsNavItem, SettingsNavGroup, SettingsNavProps, SettingsNavLinkProps } from './components/settings-nav'\n\n// Scenarios Manager Components\nexport { ScenariosManager } from './components/scenarios-manager'\nexport type { Scenario, ScenarioType, ScenarioSuggestion, ScenariosManagerProps } from './components/scenarios-manager'\n\n// Impact Metrics Components\nexport { ImpactMetricsForm } from './components/impact-metrics-form'\nexport type { ImpactMetrics, ImpactMetricsFormProps } from './components/impact-metrics-form'\n\n// Activity Timeline Components\nexport { ActivityTimeline } from './components/activity-timeline'\nexport type { Activity, ActivityTimelineProps } from './components/activity-timeline'\n\n// Workflow Components\nexport { WorkflowFlow } from './components/workflow-flow'\nexport type { WorkflowFlowProps, N8nWorkflow as WorkflowFlowN8nWorkflow, N8nNode } from './components/workflow-flow'\n\nexport { WorkflowViewer } from './components/workflow-viewer'\nexport type { \n WorkflowViewerProps, \n N8nWorkflow, \n SimWorkflow, \n WorkflowTemplate \n} from './components/workflow-viewer'\n\n// Utilities\nexport { cn } from './lib/utils'\n\n// Icons - Re-exported from @phosphor-icons/react\nexport * from './icons'\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer',\n {\n variants: {\n variant: {\n default:\n 'bg-[var(--black)] text-white border-2 border-[var(--black)] hover:bg-gray-800 hover:border-gray-800 active:scale-95',\n primary:\n 'bg-[var(--cyan)] text-white border-2 border-[var(--cyan)] hover:bg-[var(--cyan-dark)] hover:border-[var(--cyan-dark)] active:scale-95',\n destructive:\n 'bg-red-600 text-white border-2 border-red-600 hover:bg-red-700 hover:border-red-700 active:scale-95',\n outline:\n 'border-2 border-gray-300 bg-transparent hover:bg-gray-100 active:scale-95',\n secondary:\n 'bg-gray-100 text-[var(--black)] border-2 border-gray-100 hover:bg-gray-200 hover:border-gray-200 active:scale-95',\n ghost:\n 'hover:bg-gray-100 border-2 border-transparent',\n link:\n 'text-[var(--cyan)] underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-10 px-6 py-2',\n sm: 'h-9 px-4 text-xs',\n lg: 'h-12 px-8 text-base',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n /** Show loading state */\n loading?: boolean\n /** Loading text (defaults to current children text) */\n loadingText?: string\n /** Icon to show before the text */\n icon?: React.ReactNode\n /** Icon to show after the text */\n iconAfter?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, loading, loadingText, icon, iconAfter, children, disabled, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n const isDisabled = disabled || loading\n \n // Loading spinner component\n const LoadingSpinner = (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )\n\n // When using asChild with icons, we need to use Slottable\n if (asChild && (icon || iconAfter || loading)) {\n return (\n <Slot\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {loading && LoadingSpinner}\n {!loading && icon}\n <Slottable>{children}</Slottable>\n {!loading && iconAfter}\n </Slot>\n )\n }\n \n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {loading && LoadingSpinner}\n {!loading && icon}\n {loading ? loadingText || children : children}\n {!loading && iconAfter}\n </Comp>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","// @ts-nocheck\n'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X } from '@phosphor-icons/react'\n\nimport { cn } from '../lib/utils'\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Overlay accepts className at runtime\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-150',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-white p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out duration-150',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n {/* @ts-expect-error - Radix Dialog Close accepts className and children at runtime */}\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Title accepts className at runtime\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-[var(--black)]', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n // @ts-ignore - Radix Dialog Description accepts className at runtime\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-gray-500', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface LogoProps {\n variant?: 'dark' | 'light' // dark = black text, light = white text\n size?: 'sm' | 'md' | 'lg'\n href?: string | null // defaults to '/', pass null to disable link\n className?: string\n}\n\nconst sizes = {\n sm: { width: 100, height: 30 },\n md: { width: 130, height: 40 },\n lg: { width: 160, height: 50 },\n}\n\n/**\n * Logo component that renders the Dilipod logo as inline SVG\n * \n * @param variant - 'dark' for light backgrounds (black text), 'light' for dark backgrounds (white text)\n * @param size - 'sm' | 'md' | 'lg'\n * @param href - Optional link href (wraps logo in anchor tag)\n * @param className - Additional CSS classes\n */\nexport function Logo({\n variant = 'dark',\n size = 'md',\n href = '/',\n className,\n}: LogoProps) {\n const s = sizes[size]\n const textColor = variant === 'light' ? 'white' : '#0A0A0A'\n const iconTextColor = variant === 'light' ? 'white' : '#0A0A0A'\n\n const svgContent = (\n <svg\n width={s.width}\n height={s.height}\n viewBox=\"0 0 130 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <defs>\n <linearGradient id={`gradient-${variant}`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#007A70\" />\n <stop offset=\"50%\" stopColor=\"#00B8A9\" />\n <stop offset=\"100%\" stopColor=\"#00E5D4\" />\n </linearGradient>\n </defs>\n {/* Icon */}\n <rect width=\"40\" height=\"40\" rx=\"4\" fill={`url(#gradient-${variant})`} />\n <text\n x=\"20\"\n y=\"29\"\n textAnchor=\"middle\"\n fontFamily=\"system-ui, -apple-system, sans-serif\"\n fontSize=\"24\"\n fontWeight=\"700\"\n fill={iconTextColor}\n >\n D\n </text>\n {/* Text */}\n <text\n x=\"52\"\n y=\"28\"\n fontFamily=\"system-ui, -apple-system, sans-serif\"\n fontSize=\"20\"\n fontWeight=\"700\"\n letterSpacing=\"1\"\n fill={textColor}\n >\n Dilipod\n </text>\n </svg>\n )\n\n if (href !== null) {\n return (\n <a href={href} aria-label=\"Go to homepage\" className=\"inline-flex items-center group\">\n {svgContent}\n </a>\n )\n }\n\n return <div className=\"inline-flex items-center\">{svgContent}</div>\n}\n\nexport type { LogoProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst badgeVariants = cva(\n 'inline-flex items-center gap-1.5 rounded-sm font-semibold transition-colors',\n {\n variants: {\n variant: {\n default: 'bg-gray-100 text-gray-700',\n primary: 'bg-[var(--cyan)]/10 text-[var(--cyan)]',\n success: 'bg-green-100 text-green-700',\n warning: 'bg-amber-100 text-amber-700',\n error: 'bg-red-100 text-red-700',\n outline: 'border border-gray-200 text-gray-600 bg-white',\n },\n size: {\n sm: 'px-2 py-0.5 text-[10px]',\n default: 'px-2.5 py-1 text-xs',\n lg: 'px-3 py-1.5 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Show animated pulse dot */\n pulse?: boolean\n /** Custom pulse color (overrides variant-based color) */\n pulseColor?: 'default' | 'primary' | 'success' | 'warning' | 'error'\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, pulse, pulseColor: pulseColorProp, children, ...props }, ref) => {\n // Get pulse color based on variant or explicit pulseColor prop\n // Using explicit conditionals so Tailwind can detect the classes\n const getPulseColorClass = () => {\n const color = pulseColorProp || variant || 'default'\n switch (color) {\n case 'success': return 'bg-green-500'\n case 'warning': return 'bg-amber-500'\n case 'error': return 'bg-red-500'\n case 'primary': return 'bg-[var(--cyan)]'\n case 'outline': return 'bg-gray-400'\n default: return 'bg-gray-500'\n }\n }\n \n const pulseColorClass = getPulseColorClass()\n\n return (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {pulse && (\n <span className=\"relative flex h-1.5 w-1.5\">\n <span\n className={cn(\n 'absolute inline-flex h-full w-full animate-ping rounded-full opacity-75',\n pulseColorClass\n )}\n />\n <span\n className={cn(\n 'relative inline-flex h-1.5 w-1.5 rounded-full',\n pulseColorClass\n )}\n />\n </span>\n )}\n {children}\n </span>\n )\n }\n)\nBadge.displayName = 'Badge'\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-sm border border-gray-200 bg-white',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-lg font-bold leading-none tracking-tight text-[var(--black)]',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-gray-500', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst progressVariants = cva('h-full rounded-full transition-all duration-300', {\n variants: {\n variant: {\n default: 'bg-[var(--cyan)]',\n success: 'bg-green-500',\n warning: 'bg-amber-500',\n error: 'bg-red-500',\n gradient: 'bg-gradient-to-r from-[var(--cyan-dark)] to-[var(--cyan)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /** Progress value (0-100) */\n value: number\n /** Show percentage label */\n showLabel?: boolean\n /** Custom label text (defaults to \"Progress\") */\n label?: string\n /** Size of the progress bar */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, variant, showLabel, label = 'Progress', size = 'default', ...props }, ref) => {\n const clampedValue = Math.min(100, Math.max(0, value))\n \n const heightClass = {\n sm: 'h-1',\n default: 'h-1.5',\n lg: 'h-2.5',\n }[size]\n\n return (\n <div className={cn('w-full', className)} ref={ref} {...props}>\n {showLabel && (\n <div className=\"flex justify-between text-xs mb-1\">\n <span className=\"text-gray-500\">{label}</span>\n <span className=\"font-semibold text-[var(--black)]\">{clampedValue}%</span>\n </div>\n )}\n <div\n className={cn(\n 'w-full bg-gray-200 rounded-full overflow-hidden',\n heightClass\n )}\n >\n <div\n className={cn(progressVariants({ variant }))}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n </div>\n )\n }\n)\nProgress.displayName = 'Progress'\n\nexport { Progress, progressVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst iconBoxVariants = cva(\n 'inline-flex items-center justify-center shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-[var(--black)] text-white',\n primary: 'bg-[var(--cyan)] text-[var(--black)]',\n outline: 'border-2 border-gray-200 bg-white text-[var(--black)]',\n ghost: 'bg-gray-100 text-gray-600',\n gradient: 'bg-gradient-to-br from-[var(--black)] to-[var(--cyan-dark)] text-white',\n },\n size: {\n sm: 'w-8 h-8',\n default: 'w-10 h-10',\n lg: 'w-12 h-12',\n xl: 'w-14 h-14',\n },\n rounded: {\n sm: 'rounded-sm',\n default: 'rounded-sm',\n md: 'rounded-sm',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n rounded: 'sm',\n },\n }\n)\n\nexport interface IconBoxProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof iconBoxVariants> {}\n\nconst IconBox = React.forwardRef<HTMLDivElement, IconBoxProps>(\n ({ className, variant, size, rounded, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(iconBoxVariants({ variant, size, rounded }), className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nIconBox.displayName = 'IconBox'\n\nexport { IconBox, iconBoxVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst tagVariants = cva(\n 'inline-flex items-center gap-2 font-medium transition-colors cursor-pointer rounded-sm',\n {\n variants: {\n variant: {\n default: 'bg-gray-100 text-[var(--black)]',\n primary: 'bg-[var(--cyan)]/10 text-[var(--cyan)]',\n outline: 'border border-gray-200 bg-white text-gray-700 hover:border-[var(--black)] hover:text-[var(--black)]',\n dark: 'bg-[var(--black)] text-white',\n },\n size: {\n sm: 'px-2 py-1 text-[10px]',\n default: 'px-3 py-1.5 text-xs',\n lg: 'px-4 py-2 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nexport interface TagProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tagVariants> {\n /** Optional icon to display before text */\n icon?: React.ReactNode\n}\n\nconst Tag = React.forwardRef<HTMLSpanElement, TagProps>(\n ({ className, variant, size, icon, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(tagVariants({ variant, size }), className)}\n {...props}\n >\n {icon && <span className=\"shrink-0\">{icon}</span>}\n {children}\n </span>\n )\n }\n)\nTag.displayName = 'Tag'\n\nexport { Tag, tagVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst statVariants = cva('', {\n variants: {\n variant: {\n default: '',\n card: 'p-3 rounded-sm bg-gray-50 text-center',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n variant: 'default',\n align: 'left',\n },\n})\n\nconst valueVariants = cva('font-bold', {\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-4xl md:text-5xl',\n xl: 'text-5xl md:text-6xl',\n },\n color: {\n default: 'text-[var(--black)]',\n primary: 'text-[var(--cyan)]',\n white: 'text-white',\n gradient: 'text-gradient',\n },\n },\n defaultVariants: {\n size: 'default',\n color: 'default',\n },\n})\n\nexport interface StatProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof statVariants> {\n /** The main value to display */\n value: string | number\n /** Label below the value */\n label?: string\n /** Optional suffix after value (e.g., \"faster\", \"cheaper\") */\n suffix?: string\n /** Size of the value text */\n valueSize?: 'sm' | 'default' | 'lg' | 'xl'\n /** Color of the value */\n valueColor?: 'default' | 'primary' | 'white' | 'gradient'\n}\n\nconst Stat = React.forwardRef<HTMLDivElement, StatProps>(\n (\n {\n className,\n variant,\n align,\n value,\n label,\n suffix,\n valueSize = 'default',\n valueColor = 'default',\n ...props\n },\n ref\n ) => {\n const justifyClass = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n }[align || 'left']\n\n return (\n <div\n ref={ref}\n className={cn(statVariants({ variant, align }), className)}\n {...props}\n >\n <div className={cn('flex flex-wrap lg:flex-nowrap items-baseline gap-x-2', justifyClass)}>\n <span className={cn(valueVariants({ size: valueSize, color: valueColor }))}>\n {value}\n </span>\n {suffix && (\n <span className={cn(\n \"font-medium text-[var(--cyan)] shrink-0\",\n valueSize === 'lg' || valueSize === 'xl' ? 'text-lg md:text-xl' : 'text-base md:text-lg'\n )}>\n {suffix}\n </span>\n )}\n </div>\n {label && (\n <div className={cn(\n \"font-medium mt-1\",\n valueColor === 'white' ? 'text-white/70 text-sm md:text-base' : 'text-gray-500 text-xs md:text-sm'\n )}>\n {label}\n </div>\n )}\n </div>\n )\n }\n)\nStat.displayName = 'Stat'\n\nexport { Stat, statVariants, valueVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\nimport { Card } from './card'\n\nconst metricCardVariants = cva('p-5', {\n variants: {\n variant: {\n default: '',\n outlined: 'border-l-4',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nconst iconContainerVariants = cva('p-2 rounded-lg shrink-0', {\n variants: {\n color: {\n cyan: 'bg-[var(--cyan)]/10',\n purple: 'bg-purple-50',\n green: 'bg-green-50',\n amber: 'bg-amber-50',\n red: 'bg-red-50',\n gray: 'bg-gray-100',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nconst iconVariants = cva('h-5 w-5', {\n variants: {\n color: {\n cyan: 'text-[var(--cyan)]',\n purple: 'text-purple-500',\n green: 'text-green-500',\n amber: 'text-amber-500',\n red: 'text-red-500',\n gray: 'text-gray-500',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nexport interface MetricCardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof metricCardVariants> {\n /** The metric value to display */\n value: string | number\n /** Label describing the metric */\n label: string\n /** Icon component to display */\n icon?: React.ComponentType<{ className?: string }>\n /** Color scheme for the icon */\n iconColor?: 'cyan' | 'purple' | 'green' | 'amber' | 'red' | 'gray'\n /** Border color for outlined variant */\n borderColor?: string\n}\n\nconst MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\n (\n {\n className,\n variant,\n value,\n label,\n icon: Icon,\n iconColor = 'cyan',\n borderColor,\n ...props\n },\n ref\n ) => {\n return (\n <Card\n ref={ref}\n className={cn(\n metricCardVariants({ variant }),\n variant === 'outlined' && borderColor,\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n {Icon && (\n <div className={cn(iconContainerVariants({ color: iconColor }))}>\n <Icon className={cn(iconVariants({ color: iconColor }))} />\n </div>\n )}\n <div className=\"min-w-0\">\n <p className=\"text-2xl font-bold text-[var(--black)] truncate\">\n {value}\n </p>\n <p className=\"text-sm text-gray-500 truncate\">{label}</p>\n </div>\n </div>\n </Card>\n )\n }\n)\nMetricCard.displayName = 'MetricCard'\n\nexport { MetricCard, metricCardVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface MetricLabelProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The label text */\n children: React.ReactNode\n}\n\n/**\n * MetricLabel - A utility component for consistent metric labeling\n * \n * Uses the standardized pattern: text-xs uppercase tracking-wide text-muted-foreground\n * Typically used above metric values in dashboards and cards.\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <p className=\"text-2xl font-bold\">€5,000</p>\n */\nconst MetricLabel = React.forwardRef<HTMLParagraphElement, MetricLabelProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'text-xs text-muted-foreground uppercase tracking-wide',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricLabel.displayName = 'MetricLabel'\n\nexport interface MetricValueProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The value to display */\n children: React.ReactNode\n /** Size variant */\n size?: 'default' | 'lg' | 'sm'\n /** Highlight the value (uses brand cyan) */\n highlight?: boolean\n}\n\n/**\n * MetricValue - A utility component for consistent metric value display\n * \n * Pairs with MetricLabel for a complete metric display pattern.\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue highlight>€5,000</MetricValue>\n */\nconst MetricValue = React.forwardRef<HTMLParagraphElement, MetricValueProps>(\n ({ className, children, size = 'default', highlight = false, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'font-bold mt-1',\n size === 'lg' && 'text-3xl',\n size === 'default' && 'text-2xl',\n size === 'sm' && 'text-xl',\n highlight && 'text-[#00e5cc]',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricValue.displayName = 'MetricValue'\n\nexport interface MetricSubtextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** The subtext content */\n children: React.ReactNode\n}\n\n/**\n * MetricSubtext - A utility component for metric subtitles/descriptions\n * \n * @example\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue>€5,000</MetricValue>\n * <MetricSubtext>ARR: €60,000</MetricSubtext>\n */\nconst MetricSubtext = React.forwardRef<HTMLParagraphElement, MetricSubtextProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <p\n ref={ref}\n className={cn(\n 'text-xs text-muted-foreground mt-1',\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n }\n)\nMetricSubtext.displayName = 'MetricSubtext'\n\n/**\n * Metric - A compound component combining Label, Value, and optional Subtext\n * \n * @example\n * <Metric>\n * <MetricLabel>Monthly Revenue</MetricLabel>\n * <MetricValue highlight>€5,000</MetricValue>\n * <MetricSubtext>ARR: €60,000</MetricSubtext>\n * </Metric>\n */\nconst Metric = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nMetric.displayName = 'Metric'\n\nexport { MetricLabel, MetricValue, MetricSubtext, Metric }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\nimport { Progress } from './progress'\n\nconst usageBarVariants = cva('space-y-3', {\n variants: {\n size: {\n sm: '',\n default: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nconst progressColorVariants = cva('', {\n variants: {\n color: {\n cyan: '[&>div]:bg-[var(--cyan)]',\n purple: '[&>div]:bg-purple-500',\n green: '[&>div]:bg-green-500',\n amber: '[&>div]:bg-amber-500',\n red: '[&>div]:bg-red-500',\n },\n },\n defaultVariants: {\n color: 'cyan',\n },\n})\n\nexport interface UsageBarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof usageBarVariants> {\n /** Label for the usage metric */\n label: string\n /** Current usage value */\n used: number\n /** Maximum/included value */\n included: number\n /** Icon component to display */\n icon?: React.ComponentType<{ className?: string }>\n /** Color scheme for the progress bar */\n color?: 'cyan' | 'purple' | 'green' | 'amber' | 'red'\n /** Show the over-limit message when exceeded */\n showOverLimit?: boolean\n}\n\nconst UsageBar = React.forwardRef<HTMLDivElement, UsageBarProps>(\n (\n {\n className,\n size,\n label,\n used,\n included,\n icon: Icon,\n color = 'cyan',\n showOverLimit = true,\n ...props\n },\n ref\n ) => {\n const percentage = included > 0 ? Math.min((used / included) * 100, 100) : 0\n const isOverLimit = used > included\n\n const progressHeight = {\n sm: 'h-1.5',\n default: 'h-2.5',\n lg: 'h-3',\n }[size || 'default']\n\n return (\n <div\n ref={ref}\n className={cn(usageBarVariants({ size }), className)}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {Icon && (\n <Icon className={cn(\n 'h-5 w-5',\n isOverLimit ? 'text-red-500' : 'text-gray-500'\n )} />\n )}\n <span className=\"font-medium text-[var(--black)]\">{label}</span>\n </div>\n <div className=\"text-right\">\n <span\n className={cn(\n 'text-lg font-semibold',\n isOverLimit ? 'text-red-500' : 'text-[var(--black)]'\n )}\n >\n {used.toLocaleString()}\n </span>\n <span className=\"text-gray-500\"> / {included.toLocaleString()}</span>\n </div>\n </div>\n <Progress\n value={percentage}\n className={cn(\n progressHeight,\n isOverLimit\n ? '[&>div]:bg-red-500'\n : progressColorVariants({ color })\n )}\n />\n {isOverLimit && showOverLimit && (\n <p className=\"text-sm text-red-500\">\n Over limit by {(used - included).toLocaleString()} actions\n </p>\n )}\n </div>\n )\n }\n)\nUsageBar.displayName = 'UsageBar'\n\nexport { UsageBar, usageBarVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface UsageChartDataPoint {\n /** Label for the data point (e.g., month name) */\n label: string\n /** Primary value */\n value: number\n /** Secondary value (optional, for stacked bars) */\n secondaryValue?: number\n}\n\nexport interface UsageChartProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chart data points */\n data: UsageChartDataPoint[]\n /** Height of the chart area in pixels */\n height?: number\n /** Primary bar color */\n primaryColor?: string\n /** Secondary bar color (for stacked bars) */\n secondaryColor?: string\n /** Show value labels on hover */\n showTooltip?: boolean\n /** Format function for values */\n formatValue?: (value: number) => string\n}\n\nconst UsageChart = React.forwardRef<HTMLDivElement, UsageChartProps>(\n (\n {\n className,\n data,\n height = 200,\n primaryColor = 'var(--cyan)',\n secondaryColor = '#a855f7',\n showTooltip = true,\n formatValue = (v) => v.toLocaleString(),\n ...props\n },\n ref\n ) => {\n const [hoveredIndex, setHoveredIndex] = React.useState<number | null>(null)\n\n // Calculate max value for scaling\n const maxValue = React.useMemo(() => {\n return Math.max(\n ...data.map((d) => d.value + (d.secondaryValue || 0)),\n 1\n )\n }, [data])\n\n // Add padding to max value for visual breathing room\n const scaledMax = maxValue * 1.1\n\n const barWidth = 100 / Math.max(data.length, 1)\n const barGap = barWidth * 0.3\n const actualBarWidth = barWidth - barGap\n\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n <div className=\"relative\" style={{ height }}>\n {/* Y-axis grid lines */}\n <div className=\"absolute inset-0 flex flex-col justify-between pointer-events-none\">\n {[0, 1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex items-center w-full\">\n <div className=\"w-full border-t border-gray-100\" />\n </div>\n ))}\n </div>\n\n {/* Bars */}\n <svg\n className=\"absolute inset-0 w-full h-full\"\n preserveAspectRatio=\"none\"\n >\n {data.map((point, index) => {\n const primaryHeight = (point.value / scaledMax) * 100\n const secondaryHeight = point.secondaryValue\n ? (point.secondaryValue / scaledMax) * 100\n : 0\n const totalHeight = primaryHeight + secondaryHeight\n const x = index * barWidth + barGap / 2\n const isHovered = hoveredIndex === index\n\n return (\n <g\n key={index}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n className=\"cursor-pointer\"\n >\n {/* Hover background */}\n <rect\n x={`${x}%`}\n y=\"0\"\n width={`${actualBarWidth}%`}\n height=\"100%\"\n fill={isHovered ? 'rgba(0,0,0,0.02)' : 'transparent'}\n rx=\"4\"\n />\n {/* Secondary bar (stacked on top) */}\n {point.secondaryValue !== undefined && point.secondaryValue > 0 && (\n <rect\n x={`${x}%`}\n y={`${100 - totalHeight}%`}\n width={`${actualBarWidth}%`}\n height={`${secondaryHeight}%`}\n fill={secondaryColor}\n rx=\"4\"\n className=\"transition-all duration-200\"\n style={{\n opacity: isHovered ? 1 : 0.85,\n }}\n />\n )}\n {/* Primary bar */}\n <rect\n x={`${x}%`}\n y={`${100 - primaryHeight - (point.secondaryValue ? 0 : 0)}%`}\n width={`${actualBarWidth}%`}\n height={`${primaryHeight}%`}\n fill={primaryColor}\n rx={point.secondaryValue ? '0' : '4'}\n style={{\n borderTopLeftRadius: point.secondaryValue ? 0 : 4,\n borderTopRightRadius: point.secondaryValue ? 0 : 4,\n }}\n className=\"transition-all duration-200\"\n />\n </g>\n )\n })}\n </svg>\n\n {/* Tooltip */}\n {showTooltip && hoveredIndex !== null && data[hoveredIndex] && (\n <div\n className=\"absolute z-10 px-3 py-2 text-sm bg-[var(--black)] text-white rounded-lg shadow-lg pointer-events-none transform -translate-x-1/2\"\n style={{\n left: `${(hoveredIndex + 0.5) * barWidth}%`,\n top: -8,\n }}\n >\n <div className=\"font-medium\">{data[hoveredIndex].label}</div>\n <div className=\"flex items-center gap-2 mt-1\">\n <span\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: primaryColor }}\n />\n <span>{formatValue(data[hoveredIndex].value)}</span>\n </div>\n {data[hoveredIndex].secondaryValue !== undefined && (\n <div className=\"flex items-center gap-2\">\n <span\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: secondaryColor }}\n />\n <span>{formatValue(data[hoveredIndex].secondaryValue)}</span>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* X-axis labels */}\n <div className=\"flex mt-3\">\n {data.map((point, index) => (\n <div\n key={index}\n className=\"text-center text-xs text-gray-500 truncate\"\n style={{ width: `${barWidth}%` }}\n >\n {point.label}\n </div>\n ))}\n </div>\n </div>\n )\n }\n)\nUsageChart.displayName = 'UsageChart'\n\nexport { UsageChart }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Show error state */\n error?: boolean\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, error, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n 'flex h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--black)] placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n ref={ref}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n />\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n return (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // only prevent text selection if clicking inside the label itself\n const target = event.target as HTMLElement;\n if (target.closest('button, input, select, textarea')) return;\n\n props.onMouseDown?.(event);\n // prevent text selection when double clicking label\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }}\n />\n );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n Label,\n //\n Root,\n};\nexport type { LabelProps };\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none text-[var(--black)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport type { LabelProps } from '@radix-ui/react-label'\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Show error state */\n error?: boolean\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors resize-none',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n ref={ref}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretDown } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n error?: boolean\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, error, children, ...props }, ref) => {\n return (\n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n 'h-10 w-full rounded-sm border bg-white px-3 py-2 text-base text-[var(--black)] ring-offset-background',\n 'placeholder:text-gray-500',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50 md:text-sm transition-colors',\n 'appearance-none pr-10',\n error\n ? 'border-red-500 focus-visible:ring-red-500'\n : 'border-gray-300 focus-visible:ring-[var(--cyan)]',\n className\n )}\n aria-invalid={error ? 'true' : undefined}\n {...props}\n >\n {children}\n </select>\n <CaretDown \n size={16} \n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 pointer-events-none\" \n />\n </div>\n )\n }\n)\nSelect.displayName = 'Select'\n\nexport { Select }\n","/**\n * Dilipod Icon Library\n *\n * Re-exports all Phosphor icons for use across the design system.\n * Import icons from '@dilipod/ui' instead of '@phosphor-icons/react' directly.\n *\n * @example\n * import { ArrowRight, Brain, CheckCircle } from '@dilipod/ui'\n */\n\n// Export all icons from Phosphor\nexport * from '@phosphor-icons/react'\n\n// Export Icon type for typing icon components\nexport type { Icon } from '@phosphor-icons/react'\n","'use client'\n\nimport * as React from 'react'\nimport { Check } from '../icons'\nimport { cn } from '../lib/utils'\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n onCheckedChange?: (checked: boolean) => void\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, checked, onCheckedChange, ...props }, ref) => {\n return (\n <label className=\"relative inline-flex items-center cursor-pointer\">\n <input\n type=\"checkbox\"\n className=\"sr-only peer\"\n checked={checked}\n onChange={(e) => onCheckedChange?.(e.target.checked)}\n ref={ref}\n {...props}\n />\n <div\n className={cn(\n 'w-5 h-5 border border-gray-300 rounded-[2px] flex items-center justify-center transition-colors',\n 'peer-checked:bg-[var(--black)] peer-checked:border-[var(--black)]',\n 'peer-focus-visible:outline-none',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n className\n )}\n >\n {checked && <Check className=\"h-3.5 w-3.5 text-white\" weight=\"bold\" />}\n </div>\n </label>\n )\n }\n)\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }\n","'use client'\n\nimport * as React from 'react'\nimport * as SwitchPrimitive from '@radix-ui/react-switch'\nimport { cn } from '../lib/utils'\n\nexport interface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size = 'default', ...props }, ref) => {\n const sizeStyles = {\n sm: {\n root: 'h-4 w-7',\n thumb: 'h-3 w-3 data-[state=checked]:translate-x-3',\n },\n default: {\n root: 'h-5 w-9',\n thumb: 'h-4 w-4 data-[state=checked]:translate-x-4',\n },\n lg: {\n root: 'h-6 w-11',\n thumb: 'h-5 w-5 data-[state=checked]:translate-x-5',\n },\n }\n\n return (\n <SwitchPrimitive.Root\n className={cn(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--cyan)] data-[state=unchecked]:bg-input',\n sizeStyles[size].root,\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n 'pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0',\n sizeStyles[size].thumb\n )}\n />\n </SwitchPrimitive.Root>\n )\n})\nSwitch.displayName = SwitchPrimitive.Root.displayName\n\n// Convenience component with label\nexport interface LabeledSwitchProps extends SwitchProps {\n label: string\n description?: string\n labelPosition?: 'left' | 'right'\n}\n\nconst LabeledSwitch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n LabeledSwitchProps\n>(({ label, description, labelPosition = 'right', className, id, ...props }, ref) => {\n const switchId = id || React.useId()\n\n const labelContent = (\n <div className=\"space-y-0.5\">\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )\n\n return (\n <div\n className={cn(\n 'flex items-center gap-3',\n labelPosition === 'left' && 'flex-row-reverse justify-end',\n className\n )}\n >\n <Switch ref={ref} id={switchId} {...props} />\n {labelContent}\n </div>\n )\n})\nLabeledSwitch.displayName = 'LabeledSwitch'\n\nexport { Switch, LabeledSwitch }\n","'use client'\n\nimport * as React from 'react'\nimport * as SliderPrimitive from '@radix-ui/react-slider'\nimport { cn } from '../lib/utils'\n\nexport interface SliderProps\n extends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n /** Show value label */\n showValue?: boolean\n /** Format function for the value display */\n formatValue?: (value: number) => string\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({ className, showValue, formatValue, size = 'default', ...props }, ref) => {\n const value = props.value ?? props.defaultValue ?? [0]\n const currentValue = Array.isArray(value) ? value[0] : value\n\n const sizeStyles = {\n sm: {\n track: 'h-1',\n thumb: 'h-3.5 w-3.5',\n },\n default: {\n track: 'h-1.5',\n thumb: 'h-4 w-4',\n },\n lg: {\n track: 'h-2',\n thumb: 'h-5 w-5',\n },\n }\n\n return (\n <div className={cn('flex items-center gap-3', showValue && 'pr-12 relative')}>\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n 'relative flex w-full touch-none select-none items-center',\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n className={cn(\n 'relative w-full grow overflow-hidden rounded-full bg-gray-200',\n sizeStyles[size].track\n )}\n >\n <SliderPrimitive.Range className=\"absolute h-full bg-[var(--cyan)]\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb\n className={cn(\n 'block rounded-full border-2 border-[var(--cyan)] bg-white shadow-md ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--cyan)] focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'hover:border-[var(--cyan-dark,#00bfaa)] cursor-pointer',\n sizeStyles[size].thumb\n )}\n />\n </SliderPrimitive.Root>\n {showValue && (\n <span className=\"absolute right-0 text-sm font-mono text-[var(--black)] min-w-[3rem] text-right\">\n {formatValue ? formatValue(currentValue) : currentValue}\n </span>\n )}\n </div>\n )\n})\nSlider.displayName = SliderPrimitive.Root.displayName\n\n// Convenience component with label\nexport interface LabeledSliderProps extends SliderProps {\n label: string\n helperText?: string\n}\n\nconst LabeledSlider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n LabeledSliderProps\n>(({ label, helperText, className, ...props }, ref) => {\n return (\n <div className={cn('space-y-2', className)}>\n <label className=\"text-sm font-medium leading-none text-[var(--black)]\">\n {label}\n </label>\n <Slider ref={ref} {...props} />\n {helperText && (\n <p className=\"text-xs text-muted-foreground\">{helperText}</p>\n )}\n </div>\n )\n})\nLabeledSlider.displayName = 'LabeledSlider'\n\nexport { Slider, LabeledSlider }\n","'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Circle } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn('grid gap-2', className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle weight=\"fill\" className=\"h-2.5 w-2.5 fill-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n// Convenience component for labeled radio items\nexport interface RadioGroupOptionProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n label: string\n description?: string\n}\n\nconst RadioGroupOption = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupOptionProps\n>(({ label, description, className, id, ...props }, ref) => {\n const optionId = id || React.useId()\n\n return (\n <div className={cn('flex items-start gap-3', className)}>\n <RadioGroupItem ref={ref} id={optionId} {...props} />\n <div className=\"space-y-0.5\">\n <label\n htmlFor={optionId}\n className=\"text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n </div>\n )\n})\nRadioGroupOption.displayName = 'RadioGroupOption'\n\n// Card variant for selection cards\nexport interface RadioGroupCardProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {\n label: string\n description?: string\n children?: React.ReactNode\n}\n\nconst RadioGroupCard = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupCardProps\n>(({ label, description, children, className, id, ...props }, ref) => {\n const cardId = id || React.useId()\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n id={cardId}\n className={cn(\n 'relative flex cursor-pointer rounded-lg border bg-background p-4 transition-all hover:border-[var(--cyan)]/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=checked]:border-[var(--cyan)] data-[state=checked]:ring-1 data-[state=checked]:ring-[var(--cyan)] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <div className=\"flex w-full items-start gap-3\">\n <div className=\"flex h-5 items-center\">\n <div className=\"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow\">\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center h-full\">\n <Circle weight=\"fill\" className=\"h-2.5 w-2.5 fill-[var(--cyan)]\" />\n </RadioGroupPrimitive.Indicator>\n </div>\n </div>\n <div className=\"flex-1 space-y-1\">\n <label\n htmlFor={cardId}\n className=\"text-sm font-medium leading-none cursor-pointer\"\n >\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n {children}\n </div>\n </div>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupCard.displayName = 'RadioGroupCard'\n\nexport { RadioGroup, RadioGroupItem, RadioGroupOption, RadioGroupCard }\n","'use client'\n\nimport * as React from 'react'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { CaretDown } from '../icons'\n\nimport { cn } from '../lib/utils'\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-gray-200', className)}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex flex-1 items-center justify-between py-4 font-medium text-[var(--black)] transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className\n )}\n {...props}\n >\n {children}\n <CaretDown className=\"h-4 w-4 shrink-0 text-gray-500 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Separator\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Separator';\nconst DEFAULT_ORIENTATION = 'horizontal';\nconst ORIENTATIONS = ['horizontal', 'vertical'] as const;\n\ntype Orientation = (typeof ORIENTATIONS)[number];\ntype SeparatorElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface SeparatorProps extends PrimitiveDivProps {\n /**\n * Either `vertical` or `horizontal`. Defaults to `horizontal`.\n */\n orientation?: Orientation;\n /**\n * Whether or not the component is purely decorative. When true, accessibility-related attributes\n * are updated so that that the rendered element is removed from the accessibility tree.\n */\n decorative?: boolean;\n}\n\nconst Separator = React.forwardRef<SeparatorElement, SeparatorProps>((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n // `aria-orientation` defaults to `horizontal` so we only need it if `orientation` is vertical\n const ariaOrientation = orientation === 'vertical' ? orientation : undefined;\n const semanticProps = decorative\n ? { role: 'none' }\n : { 'aria-orientation': ariaOrientation, role: 'separator' };\n\n return (\n <Primitive.div\n data-orientation={orientation}\n {...semanticProps}\n {...domProps}\n ref={forwardedRef}\n />\n );\n});\n\nSeparator.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction isValidOrientation(orientation: any): orientation is Orientation {\n return ORIENTATIONS.includes(orientation);\n}\n\nconst Root = Separator;\n\nexport {\n Separator,\n //\n Root,\n};\nexport type { SeparatorProps };\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nimport { cn } from '../lib/utils'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = 'horizontal', decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-gray-200',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport type { SeparatorProps } from '@radix-ui/react-separator'\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cva } from 'class-variance-authority'\nimport { CaretDown } from '../icons'\n\nimport { cn } from '../lib/utils'\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n 'relative z-10 flex max-w-max flex-1 items-center justify-center',\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n 'group flex flex-1 list-none items-center justify-center space-x-1',\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-10 w-max items-center justify-center rounded-md bg-white px-4 py-2 text-sm font-medium text-[var(--black)] transition-colors hover:bg-gray-100 hover:text-[var(--black)] focus:bg-gray-100 focus:text-[var(--black)] focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-[var(--black)] data-[state=open]:bg-gray-100/50 data-[state=open]:hover:bg-gray-100 data-[state=open]:focus:bg-gray-100'\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <CaretDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto',\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn('absolute left-0 top-full flex justify-center')}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n 'origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-gray-200 bg-white text-[var(--black)] shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n 'top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in',\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-gray-200 shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, CaretRight, Circle } from \"../icons\"\n\nimport { cn } from \"../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <CaretRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-lg\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-sm border bg-popover p-1.5 text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-3 py-2 text-sm outline-none transition-colors focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-3 py-2 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport type { Icon } from '../icons'\n\nexport interface SidebarNavItem {\n name: string\n href: string\n icon: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n}\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Navigation items for the main section */\n mainNav?: SidebarNavItem[]\n /** Navigation items for the bottom section */\n bottomNav?: SidebarNavItem[]\n /** Current pathname for active state detection */\n pathname?: string\n /** Optional search button configuration */\n searchButton?: {\n label?: string\n shortcut?: string\n onClick?: () => void\n }\n /** Optional help/support link */\n helpLink?: {\n href: string\n label?: string\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n }\n /** Optional assistant button configuration */\n assistantButton?: {\n label?: string\n icon?: React.ComponentType<React.SVGProps<SVGSVGElement> & { weight?: 'fill' | 'regular' }>\n onClick?: () => void\n }\n /** Header content (e.g., Logo) */\n header?: React.ReactNode\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<React.AnchorHTMLAttributes<HTMLAnchorElement> & { href: string }>\n}\n\nexport interface SidebarNavItemProps {\n item: SidebarNavItem\n isActive?: boolean\n className?: string\n /** Custom Link component */\n LinkComponent?: React.ComponentType<{ href: string; className?: string; children?: React.ReactNode } & Record<string, any>>\n}\n\nconst SidebarNavItem = React.forwardRef<HTMLAnchorElement, SidebarNavItemProps>(\n ({ item, isActive, className, LinkComponent, ...props }, ref) => {\n const Icon = item.icon as React.ComponentType<any>\n const baseClassName = cn(\n 'flex items-center gap-3 rounded-md px-3 py-2.5 text-sm transition-colors focus-visible:outline-none',\n isActive\n ? 'bg-muted text-foreground font-medium'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50',\n className\n )\n\n if (LinkComponent) {\n const Comp = LinkComponent\n return (\n <Comp\n ref={ref}\n href={item.href}\n className={baseClassName}\n {...(props as any)}\n >\n <Icon className=\"h-5 w-5 shrink-0\" weight={isActive ? 'fill' : 'regular'} />\n <span>{item.name}</span>\n </Comp>\n )\n }\n\n return (\n <a\n ref={ref}\n href={item.href}\n className={baseClassName}\n {...(props as any)}\n >\n <Icon className=\"h-5 w-5 shrink-0\" weight={isActive ? 'fill' : 'regular'} />\n <span>{item.name}</span>\n </a>\n )\n }\n)\nSidebarNavItem.displayName = 'SidebarNavItem'\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n mainNav = [],\n bottomNav = [],\n pathname,\n searchButton,\n helpLink,\n assistantButton,\n header,\n LinkComponent,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isActive = (href: string) => {\n if (!pathname) return false\n if (href === '/dashboard' || href === '/') {\n return pathname === '/dashboard' || pathname === '/'\n }\n return pathname.startsWith(href)\n }\n\n return (\n <aside\n ref={ref}\n className={cn(\n 'relative flex h-full w-60 flex-col border-r border-border bg-background',\n className\n )}\n {...props}\n >\n {/* Header */}\n {header && (\n <div className=\"flex h-14 items-center px-4 border-b\">\n {header}\n </div>\n )}\n\n {/* Search */}\n {searchButton && (\n <div className=\"px-3 py-3\">\n <button\n onClick={searchButton.onClick}\n className=\"flex w-full items-center gap-2 rounded-sm border bg-background px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50 transition-colors\"\n >\n {searchButton.label && <span>{searchButton.label}</span>}\n {searchButton.shortcut && (\n <kbd className=\"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded-sm\">\n {searchButton.shortcut}\n </kbd>\n )}\n </button>\n </div>\n )}\n\n {/* Main Navigation */}\n {mainNav.length > 0 && (\n <nav className=\"flex-1 px-3 pt-4 space-y-1\">\n {mainNav.map((item) => (\n <SidebarNavItem\n key={item.name}\n item={item}\n isActive={isActive(item.href)}\n LinkComponent={LinkComponent}\n />\n ))}\n </nav>\n )}\n\n {/* Custom children content */}\n {children}\n\n {/* Bottom Navigation */}\n {bottomNav.length > 0 && (\n <div className=\"px-3 pb-3 space-y-1 border-t pt-3\">\n {bottomNav.map((item) => (\n <SidebarNavItem\n key={item.name}\n item={item}\n isActive={isActive(item.href)}\n LinkComponent={LinkComponent}\n />\n ))}\n </div>\n )}\n\n {/* Help & Assistant Section */}\n {(helpLink || assistantButton) && (\n <div className=\"px-3 pb-4 pt-3 border-t\">\n {assistantButton && (\n <button\n onClick={assistantButton.onClick}\n className=\"flex w-full items-center gap-3 rounded-lg bg-[var(--cyan)]/10 px-3 py-2.5 text-sm font-medium text-[var(--cyan)] hover:bg-[var(--cyan)]/20 transition-colors mb-2\"\n >\n {assistantButton.icon && (\n <div className=\"flex h-7 w-7 items-center justify-center rounded-full bg-[var(--cyan)] text-white\">\n <assistantButton.icon className=\"h-4 w-4\" />\n </div>\n )}\n <span>{assistantButton.label || 'Ask Assistant'}</span>\n </button>\n )}\n {helpLink && (\n <a\n href={helpLink.href}\n className=\"flex items-center gap-3 rounded-sm px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors\"\n >\n {helpLink.icon && (\n <helpLink.icon className=\"h-4 w-4\" />\n )}\n {helpLink.label}\n </a>\n )}\n </div>\n )}\n </aside>\n )\n }\n)\nSidebar.displayName = 'Sidebar'\n\nexport { Sidebar, SidebarNavItem }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\n\nconst alertVariants = cva(\n 'rounded-sm border p-3 text-sm',\n {\n variants: {\n variant: {\n default: 'bg-background border-border text-foreground',\n success: 'bg-green-50 border-green-200 text-green-900',\n error: 'bg-red-50 border-red-200 text-red-900',\n warning: 'bg-amber-50 border-amber-200 text-amber-900',\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n primary: 'bg-[var(--cyan)]/10 border-[var(--cyan)]/20 text-[var(--cyan)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Optional icon to display */\n icon?: React.ReactNode\n /** Optional title */\n title?: string\n /** Optional action button */\n action?: React.ReactNode\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n ({ className, variant, icon, title, action, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 flex-1\">\n {icon && <div className=\"shrink-0 mt-0.5\">{icon}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"font-semibold mb-1\">{title}</p>\n )}\n <div className={title ? 'text-sm' : ''}>{children}</div>\n </div>\n </div>\n {action && (\n <div className=\"shrink-0\">\n {action}\n </div>\n )}\n </div>\n </div>\n )\n }\n)\nAlert.displayName = 'Alert'\n\nexport { Alert, alertVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Optional icon to display */\n icon?: React.ReactNode\n /** Title text */\n title?: string\n /** Description text */\n description?: string\n /** Optional action button */\n action?: React.ReactNode\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n}\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ className, icon, title, description, action, size = 'default', ...props }, ref) => {\n const paddingClass = {\n sm: 'p-8',\n default: 'p-12',\n lg: 'p-16',\n }[size]\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-sm border border-dashed text-center',\n paddingClass,\n className\n )}\n {...props}\n >\n {icon && (\n <div className=\"flex justify-center mb-4\">\n {icon}\n </div>\n )}\n {title && (\n <h3 className=\"text-sm font-semibold text-foreground mb-1\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground mb-4\">\n {description}\n </p>\n )}\n {action && (\n <div className=\"flex justify-center\">\n {action}\n </div>\n )}\n </div>\n )\n }\n)\nEmptyState.displayName = 'EmptyState'\n\nexport { EmptyState }\n","'use client'\n\nimport * as React from 'react'\nimport { Card, CardContent } from './card'\nimport { IconBox } from './icon-box'\nimport { Button } from './button'\nimport { cn } from '../lib/utils'\n\nexport interface ErrorStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Title text */\n title?: string\n /** Description text */\n description?: string\n /** Whether to show the retry button */\n showRetry?: boolean\n /** Whether to show the home/dashboard link */\n showHomeLink?: boolean\n /** Custom retry button text */\n retryText?: string\n /** Custom home link text */\n homeLinkText?: string\n /** Callback when retry is clicked */\n onRetry?: () => void\n /** Callback when home link is clicked */\n onHomeClick?: () => void\n /** Custom icon to display */\n icon?: React.ReactNode\n /** Custom action buttons */\n actions?: React.ReactNode\n}\n\nconst ErrorState = React.forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n title = 'Something went wrong',\n description = 'We encountered an error loading this page. Please try again.',\n showRetry = true,\n showHomeLink = true,\n retryText = 'Try again',\n homeLinkText = 'Go to dashboard',\n onRetry,\n onHomeClick,\n icon,\n actions,\n className,\n ...props\n },\n ref\n ) => {\n // Default icon - Warning icon\n const defaultIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n className=\"text-red-500\"\n >\n <path d=\"M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z\" />\n </svg>\n )\n\n // Default refresh icon for retry button\n const refreshIcon = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n className=\"mr-2\"\n >\n <path d=\"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64A80,80,0,1,0,207.6,176.16a8,8,0,1,1,13.54,8.49A96,96,0,1,1,227.59,64l.3-.31L208,44.31V56a8,8,0,0,0,8,8h16A8,8,0,0,0,240,56Z\" />\n </svg>\n )\n\n const hasDefaultActions = (showRetry && onRetry) || (showHomeLink && onHomeClick)\n\n return (\n <div\n ref={ref}\n className={cn('flex items-center justify-center min-h-[60vh]', className)}\n {...props}\n >\n <Card className=\"max-w-md w-full\">\n <CardContent className=\"p-8 text-center\">\n <IconBox size=\"lg\" className=\"mx-auto mb-4 bg-red-50\">\n {icon || defaultIcon}\n </IconBox>\n <h2 className=\"text-lg font-semibold text-[var(--black)] mb-2\">\n {title}\n </h2>\n <p className=\"text-sm text-muted-foreground mb-6\">{description}</p>\n {actions ? (\n <div className=\"flex gap-3 justify-center\">{actions}</div>\n ) : hasDefaultActions ? (\n <div className=\"flex gap-3 justify-center\">\n {showRetry && onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n {refreshIcon}\n {retryText}\n </Button>\n )}\n {showHomeLink && onHomeClick && (\n <Button onClick={onHomeClick}>{homeLinkText}</Button>\n )}\n </div>\n ) : null}\n </CardContent>\n </Card>\n </div>\n )\n }\n)\nErrorState.displayName = 'ErrorState'\n\nexport { ErrorState }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n /** Code content */\n children?: React.ReactNode\n /** Language for syntax highlighting (optional) */\n language?: string\n}\n\nconst CodeBlock = React.forwardRef<HTMLPreElement, CodeBlockProps>(\n ({ className, children, language, ...props }, ref) => {\n return (\n <pre\n ref={ref}\n className={cn(\n 'rounded-sm bg-muted p-4 text-sm overflow-auto font-mono',\n className\n )}\n {...(language && { 'data-language': language })}\n {...props}\n >\n <code>{children}</code>\n </pre>\n )\n }\n)\nCodeBlock.displayName = 'CodeBlock'\n\nexport { CodeBlock }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport { Label } from './label'\n\nexport interface FormFieldProps {\n /** Field label */\n label?: string\n /** Error message to display */\n error?: string\n /** Helper text to display below the field */\n helperText?: string\n /** Hint element to display on the right side of the label (e.g., link) */\n hint?: React.ReactNode\n /** Whether the field is required */\n required?: boolean\n /** Field ID for accessibility */\n id?: string\n /** Additional className */\n className?: string\n /** Field content (Input, Textarea, etc.) */\n children: React.ReactNode\n}\n\nconst FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\n ({ label, error, helperText, hint, required, id, className, children, ...props }, ref) => {\n const fieldId = id || React.useId()\n const errorId = `${fieldId}-error`\n const helperId = `${fieldId}-helper`\n\n // Clone children to add error state and IDs\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const childProps = child.props as { className?: string; [key: string]: any }\n return React.cloneElement(child as React.ReactElement<any>, {\n id: fieldId,\n 'aria-invalid': error ? 'true' : undefined,\n 'aria-describedby': error ? errorId : helperText ? helperId : undefined,\n className: cn(\n childProps.className,\n error && 'border-red-500 focus-visible:ring-red-500'\n ),\n })\n }\n return child\n })\n\n return (\n <div ref={ref} className={cn('space-y-2', className)} {...props}>\n {(label || hint) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <Label htmlFor={fieldId} className={required ? 'after:content-[\"*\"] after:ml-0.5 after:text-red-500' : ''}>\n {label}\n </Label>\n )}\n {hint && <div>{hint}</div>}\n </div>\n )}\n {enhancedChildren}\n {error && (\n <p id={errorId} className=\"text-sm text-red-600\" role=\"alert\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p id={helperId} className=\"text-xs text-muted-foreground\">\n {helperText}\n </p>\n )}\n </div>\n )\n }\n)\nFormField.displayName = 'FormField'\n\nexport { FormField }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"overflow-x-auto\">\n <table\n ref={ref}\n className={cn('w-full border-collapse', className)}\n {...props}\n />\n </div>\n))\nTable.displayName = 'Table'\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('', className)} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('border-t bg-muted/50 font-medium', className)}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)}\n {...props}\n />\n))\nTableRow.displayName = 'TableRow'\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-semibold text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = 'TableHead'\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n))\nTableCell.displayName = 'TableCell'\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nTableCaption.displayName = 'TableCaption'\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Text to display in the divider */\n text?: string\n /** Orientation */\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n ({ className, text, orientation = 'horizontal', ...props }, ref) => {\n if (orientation === 'vertical') {\n return (\n <div\n ref={ref}\n className={cn('w-px h-full bg-border', className)}\n {...props}\n />\n )\n }\n\n if (text) {\n return (\n <div\n ref={ref}\n className={cn('relative flex items-center', className)}\n {...props}\n >\n <div className=\"flex-1 border-t\" />\n <span className=\"px-2 text-xs uppercase text-muted-foreground bg-background\">\n {text}\n </span>\n <div className=\"flex-1 border-t\" />\n </div>\n )\n }\n\n return (\n <div\n ref={ref}\n className={cn('border-t', className)}\n {...props}\n />\n )\n }\n)\nDivider.displayName = 'Divider'\n\nexport { Divider }\n","'use client'\n\nimport * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../lib/utils'\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-sm bg-muted p-1 text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 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 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\n// Underline variant tabs\nconst TabsListUnderline = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-start border-b border-border',\n className\n )}\n {...props}\n />\n))\nTabsListUnderline.displayName = 'TabsListUnderline'\n\nconst TabsTriggerUnderline = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap px-4 py-2.5 text-sm font-medium text-muted-foreground transition-all hover:text-foreground border-b-2 border-transparent -mb-px',\n 'data-[state=active]:text-[var(--cyan)] data-[state=active]:border-[var(--cyan)] data-[state=active]:font-semibold',\n 'disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nTabsTriggerUnderline.displayName = 'TabsTriggerUnderline'\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n TabsListUnderline,\n TabsTriggerUnderline,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from '@phosphor-icons/react'\n\nimport { cn } from '../lib/utils'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/60',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg gap-4 border border-border bg-white p-6 shadow-lg rounded-sm -translate-x-1/2 -translate-y-1/2',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight text-[var(--black)]',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'\nimport { cn } from '../lib/utils'\nimport { buttonVariants } from './button'\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg 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]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-sm',\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-2 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = 'AlertDialogHeader'\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = 'AlertDialogFooter'\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-[var(--black)]', className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: 'outline' }),\n 'mt-2 sm:mt-0',\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\n// Convenience component for common confirmation dialogs\nexport interface ConfirmDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: string\n confirmText?: string\n cancelText?: string\n onConfirm: () => void\n onCancel?: () => void\n variant?: 'default' | 'destructive'\n loading?: boolean\n}\n\nfunction ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n onConfirm,\n onCancel,\n variant = 'default',\n loading = false,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n {description && (\n <AlertDialogDescription>{description}</AlertDialogDescription>\n )}\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel\n onClick={() => {\n onCancel?.()\n onOpenChange(false)\n }}\n >\n {cancelText}\n </AlertDialogCancel>\n <AlertDialogAction\n onClick={() => {\n onConfirm()\n }}\n className={cn(\n variant === 'destructive' &&\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90'\n )}\n disabled={loading}\n >\n {loading ? 'Loading...' : confirmText}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n ConfirmDialog,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../lib/utils'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverClose = PopoverPrimitive.Close\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-sm border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nconst PopoverArrow = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitive.Arrow\n ref={ref}\n className={cn('fill-popover', className)}\n {...props}\n />\n))\nPopoverArrow.displayName = PopoverPrimitive.Arrow.displayName\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverArrow,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../lib/utils'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-sm bg-[var(--black)] px-3 py-1.5 text-xs text-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn('fill-[var(--black)]', className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\n// Convenience component for simple tooltips\nexport interface SimpleTooltipProps {\n content: React.ReactNode\n children: React.ReactNode\n side?: 'top' | 'right' | 'bottom' | 'left'\n align?: 'start' | 'center' | 'end'\n delayDuration?: number\n}\n\nfunction SimpleTooltip({\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 200,\n}: SimpleTooltipProps) {\n return (\n <TooltipProvider delayDuration={delayDuration}>\n <Tooltip>\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent side={side} align={align}>\n {content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n}\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n SimpleTooltip,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as ToastPrimitives from '@radix-ui/react-toast'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { X, Check, WarningCircle, Info } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px]',\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-sm border-none p-4 transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-[0.98] data-[state=open]:zoom-in-[0.98] duration-150',\n {\n variants: {\n variant: {\n default: 'bg-[var(--black)] text-white',\n success: 'bg-[var(--black)] text-white',\n error: 'bg-[var(--black)] text-white',\n warning: 'bg-[var(--black)] text-white',\n info: 'bg-[var(--black)] text-white',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-sm border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'absolute right-3 top-3 rounded-sm p-1 text-white/60 transition-colors hover:text-white focus:outline-none',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X size={16} />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn('text-sm font-semibold', className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ComponentRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn('text-sm text-white/70', className)}\n {...props}\n />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\n// Toast icon helper\nconst ToastIcon = ({ variant }: { variant?: 'default' | 'success' | 'error' | 'warning' | 'info' }) => {\n switch (variant) {\n case 'success':\n return <Check size={18} weight=\"bold\" className=\"text-[var(--cyan)]\" />\n case 'error':\n return <WarningCircle size={18} weight=\"fill\" className=\"text-red-400\" />\n case 'warning':\n return <WarningCircle size={18} weight=\"fill\" className=\"text-amber-400\" />\n case 'info':\n return <Info size={18} weight=\"fill\" className=\"text-[var(--cyan)]\" />\n default:\n return <Info size={18} weight=\"fill\" className=\"text-white/70\" />\n }\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n ToastIcon,\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { ToastActionElement, ToastProps } from './toast'\n\nconst TOAST_LIMIT = 5\nconst TOAST_REMOVE_DELAY = 1000\nconst TOAST_AUTO_DISMISS_DELAY = 4000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial<ToasterToast>\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\nconst autoDismissTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst scheduleAutoDismiss = (toastId: string) => {\n if (autoDismissTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n autoDismissTimeouts.delete(toastId)\n dispatch({\n type: 'DISMISS_TOAST',\n toastId: toastId,\n })\n }, TOAST_AUTO_DISMISS_DELAY)\n\n autoDismissTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n // Schedule auto-dismiss for the new toast\n scheduleAutoDismiss(action.toast.id)\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n }\n}\n\nexport { useToast, toast }\n","'use client'\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastIcon,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from './toast'\nimport { useToast } from './use-toast'\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, ...props }) {\n const safeVariant = variant ?? undefined\n return (\n <Toast key={id} variant={safeVariant} {...props}>\n <div className=\"flex gap-3\">\n <ToastIcon variant={safeVariant} />\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n </div>\n {action}\n <ToastClose />\n </Toast>\n )\n })}\n <ToastViewport />\n </ToastProvider>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Variant of the skeleton */\n variant?: 'default' | 'circular' | 'rounded'\n /** Width of the skeleton (can be number for px or string like '100%') */\n width?: number | string\n /** Height of the skeleton (can be number for px or string like '2rem') */\n height?: number | string\n /** Whether to show animation */\n animate?: boolean\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant = 'default', width, height, animate = true, style, ...props }, ref) => {\n const variantStyles = {\n default: 'rounded-sm',\n circular: 'rounded-full',\n rounded: 'rounded-md',\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-muted',\n animate && 'animate-pulse',\n variantStyles[variant],\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n ...style,\n }}\n {...props}\n />\n )\n }\n)\nSkeleton.displayName = 'Skeleton'\n\n// Common skeleton patterns\nexport interface SkeletonTextProps extends Omit<SkeletonProps, 'variant'> {\n /** Number of lines to render */\n lines?: number\n /** Gap between lines */\n gap?: number\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, gap = 8, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('space-y-2', className)} style={{ gap }}>\n {Array.from({ length: lines }).map((_, i) => (\n <Skeleton\n key={i}\n height={16}\n width={i === lines - 1 ? '70%' : '100%'}\n {...props}\n />\n ))}\n </div>\n )\n }\n)\nSkeletonText.displayName = 'SkeletonText'\n\nexport interface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether to include a header */\n hasHeader?: boolean\n /** Whether to include an avatar/icon */\n hasAvatar?: boolean\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ hasHeader = true, hasAvatar = false, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('rounded-lg border p-6 space-y-4', className)}\n {...props}\n >\n {hasHeader && (\n <div className=\"flex items-center gap-4\">\n {hasAvatar && <Skeleton variant=\"circular\" width={40} height={40} />}\n <div className=\"space-y-2 flex-1\">\n <Skeleton height={20} width=\"50%\" />\n <Skeleton height={14} width=\"30%\" />\n </div>\n </div>\n )}\n <SkeletonText lines={3} />\n </div>\n )\n }\n)\nSkeletonCard.displayName = 'SkeletonCard'\n\nexport { Skeleton, SkeletonText, SkeletonCard }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretLeft, CaretRight, DotsThree } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\n\nexport interface PaginationProps {\n /** Current page (1-indexed) */\n currentPage: number\n /** Total number of pages */\n totalPages: number\n /** Callback when page changes */\n onPageChange: (page: number) => void\n /** Number of pages to show around current page */\n siblingCount?: number\n /** Whether to show first/last page buttons */\n showBoundaryPages?: boolean\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n /** Additional class name */\n className?: string\n}\n\nfunction generatePagination(\n currentPage: number,\n totalPages: number,\n siblingCount: number\n): (number | 'ellipsis')[] {\n const totalPageNumbers = siblingCount * 2 + 5 // siblings + first + last + current + 2 ellipsis\n\n if (totalPageNumbers >= totalPages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n const showLeftDots = leftSiblingIndex > 2\n const showRightDots = rightSiblingIndex < totalPages - 1\n\n if (!showLeftDots && showRightDots) {\n const leftRange = Array.from(\n { length: 3 + siblingCount * 2 },\n (_, i) => i + 1\n )\n return [...leftRange, 'ellipsis', totalPages]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightRange = Array.from(\n { length: 3 + siblingCount * 2 },\n (_, i) => totalPages - (3 + siblingCount * 2) + i + 1\n )\n return [1, 'ellipsis', ...rightRange]\n }\n\n const middleRange = Array.from(\n { length: siblingCount * 2 + 1 },\n (_, i) => leftSiblingIndex + i\n )\n return [1, 'ellipsis', ...middleRange, 'ellipsis', totalPages]\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n showBoundaryPages = true,\n size = 'default',\n className,\n },\n ref\n ) => {\n const pages = generatePagination(currentPage, totalPages, siblingCount)\n\n const buttonSize = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'default'\n const iconSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16\n\n if (totalPages <= 1) {\n return null\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn('flex items-center gap-1', className)}\n >\n {/* Previous button */}\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n aria-label=\"Go to previous page\"\n >\n <CaretLeft size={iconSize} />\n </Button>\n\n {/* Page numbers */}\n <div className=\"flex items-center gap-1\">\n {pages.map((page, index) => {\n if (page === 'ellipsis') {\n return (\n <span\n key={`ellipsis-${index}`}\n className=\"flex h-9 w-9 items-center justify-center text-muted-foreground\"\n >\n <DotsThree size={iconSize} />\n </span>\n )\n }\n\n const isCurrentPage = page === currentPage\n return (\n <Button\n key={page}\n variant={isCurrentPage ? 'default' : 'outline'}\n size={buttonSize}\n onClick={() => onPageChange(page)}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </Button>\n )\n })}\n </div>\n\n {/* Next button */}\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n aria-label=\"Go to next page\"\n >\n <CaretRight size={iconSize} />\n </Button>\n </nav>\n )\n }\n)\nPagination.displayName = 'Pagination'\n\n// Simple variant with just prev/next\nexport interface SimplePaginationProps {\n currentPage: number\n totalPages: number\n onPageChange: (page: number) => void\n size?: 'sm' | 'default' | 'lg'\n className?: string\n showPageInfo?: boolean\n}\n\nconst SimplePagination = React.forwardRef<HTMLElement, SimplePaginationProps>(\n (\n {\n currentPage,\n totalPages,\n onPageChange,\n size = 'default',\n className,\n showPageInfo = true,\n },\n ref\n ) => {\n const buttonSize = size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'default'\n const iconSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 16\n\n if (totalPages <= 1) {\n return null\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Pagination\"\n className={cn('flex items-center gap-2', className)}\n >\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage <= 1}\n aria-label=\"Go to previous page\"\n >\n <CaretLeft size={iconSize} />\n <span className=\"ml-1\">Previous</span>\n </Button>\n\n {showPageInfo && (\n <span className=\"text-sm text-muted-foreground px-2\">\n Page {currentPage} of {totalPages}\n </span>\n )}\n\n <Button\n variant=\"outline\"\n size={buttonSize}\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage >= totalPages}\n aria-label=\"Go to next page\"\n >\n <span className=\"mr-1\">Next</span>\n <CaretRight size={iconSize} />\n </Button>\n </nav>\n )\n }\n)\nSimplePagination.displayName = 'SimplePagination'\n\nexport { Pagination, SimplePagination }\n","'use client'\n\nimport * as React from 'react'\nimport { Check } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface Step {\n id: number\n label: string\n description?: string\n}\n\nexport interface StepProgressProps {\n steps: Step[]\n currentStep: number\n onStepClick?: (step: number) => void\n /** Orientation of the stepper */\n orientation?: 'horizontal' | 'vertical'\n /** Size variant */\n size?: 'sm' | 'default' | 'lg'\n /** Whether to show labels */\n showLabels?: boolean\n className?: string\n}\n\nconst StepProgress = React.forwardRef<HTMLDivElement, StepProgressProps>(\n (\n {\n steps,\n currentStep,\n onStepClick,\n orientation = 'horizontal',\n size = 'default',\n showLabels = true,\n className,\n },\n ref\n ) => {\n const sizeStyles = {\n sm: {\n indicator: 'w-6 h-6 text-xs',\n icon: 12,\n label: 'text-xs',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-4 sm:w-8' : 'h-6',\n },\n default: {\n indicator: 'w-7 h-7 text-xs',\n icon: 14,\n label: 'text-sm',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-6 sm:w-10 md:w-14' : 'h-8',\n },\n lg: {\n indicator: 'w-8 h-8 text-sm',\n icon: 16,\n label: 'text-sm',\n connector: orientation === 'horizontal' ? 'h-0.5' : 'w-0.5',\n connectorLength: orientation === 'horizontal' ? 'w-8 sm:w-12 md:w-16' : 'h-10',\n },\n }\n\n const styles = sizeStyles[size]\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center' : 'flex-col',\n className\n )}\n >\n {steps.map((step, index) => {\n const isCompleted = step.id < currentStep\n const isCurrent = step.id === currentStep\n const isClickable = onStepClick && step.id < currentStep\n\n return (\n <div\n key={step.id}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center' : 'flex-col items-start'\n )}\n >\n {/* Step */}\n <button\n type=\"button\"\n onClick={() => isClickable && onStepClick(step.id)}\n disabled={!isClickable}\n className={cn(\n 'flex items-center gap-2 px-2 py-1.5 rounded-sm transition-colors',\n isClickable ? 'cursor-pointer hover:bg-gray-50' : 'cursor-default',\n orientation === 'vertical' && 'flex-row'\n )}\n >\n {/* Number/Check indicator */}\n <span\n className={cn(\n 'rounded-sm flex items-center justify-center font-bold transition-colors',\n styles.indicator,\n isCompleted\n ? 'bg-[var(--cyan)] text-white'\n : isCurrent\n ? 'bg-[var(--black)] text-white'\n : 'bg-gray-100 text-gray-400'\n )}\n >\n {isCompleted ? (\n <Check size={styles.icon} weight=\"bold\" />\n ) : (\n step.id\n )}\n </span>\n\n {/* Label */}\n {showLabels && (\n <div className={cn(\n orientation === 'horizontal' && 'hidden sm:block',\n 'text-left'\n )}>\n <span\n className={cn(\n 'font-medium transition-colors whitespace-nowrap',\n styles.label,\n isCompleted\n ? 'text-[var(--cyan)]'\n : isCurrent\n ? 'text-[var(--black)]'\n : 'text-gray-400'\n )}\n >\n {step.label}\n </span>\n {step.description && orientation === 'vertical' && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {step.description}\n </p>\n )}\n </div>\n )}\n </button>\n\n {/* Connector line */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'transition-colors',\n styles.connector,\n styles.connectorLength,\n isCompleted ? 'bg-[var(--cyan)]' : 'bg-gray-200',\n orientation === 'vertical' && 'ml-[13px] my-1'\n )}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n }\n)\nStepProgress.displayName = 'StepProgress'\n\n// Compact variant - just dots\nexport interface StepDotsProps {\n totalSteps: number\n currentStep: number\n onStepClick?: (step: number) => void\n className?: string\n}\n\nconst StepDots = React.forwardRef<HTMLDivElement, StepDotsProps>(\n ({ totalSteps, currentStep, onStepClick, className }, ref) => {\n return (\n <div ref={ref} className={cn('flex items-center gap-2', className)}>\n {Array.from({ length: totalSteps }, (_, i) => i + 1).map((step) => {\n const isCompleted = step < currentStep\n const isCurrent = step === currentStep\n const isClickable = onStepClick && step < currentStep\n\n return (\n <button\n key={step}\n type=\"button\"\n onClick={() => isClickable && onStepClick(step)}\n disabled={!isClickable}\n className={cn(\n 'w-2 h-2 rounded-full transition-colors',\n isClickable && 'cursor-pointer',\n !isClickable && 'cursor-default',\n isCompleted || isCurrent ? 'bg-[var(--cyan)]' : 'bg-gray-200'\n )}\n aria-label={`Step ${step}`}\n />\n )\n })}\n </div>\n )\n }\n)\nStepDots.displayName = 'StepDots'\n\nexport { StepProgress, StepDots }\n","'use client'\n\nimport * as React from 'react'\nimport { CaretRight, House } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface BreadcrumbItem {\n label: string\n href?: string\n icon?: React.ReactNode\n}\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[]\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n /** Separator between items */\n separator?: React.ReactNode\n /** Whether to show home icon for first item */\n showHomeIcon?: boolean\n /** Maximum items to show (will collapse middle items) */\n maxItems?: number\n /** Size variant */\n size?: 'sm' | 'default'\n}\n\nconst Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n {\n items,\n LinkComponent,\n separator,\n showHomeIcon = false,\n maxItems,\n size = 'default',\n className,\n ...props\n },\n ref\n ) => {\n const sizeStyles = {\n sm: 'text-xs gap-1',\n default: 'text-sm gap-1.5',\n }\n\n const iconSize = size === 'sm' ? 10 : 12\n\n // Collapse items if maxItems is set\n let displayItems = items\n let isCollapsed = false\n if (maxItems && items.length > maxItems) {\n isCollapsed = true\n displayItems = [\n items[0],\n { label: '...', href: undefined },\n ...items.slice(-(maxItems - 2)),\n ]\n }\n\n const defaultSeparator = (\n <CaretRight size={iconSize} className=\"text-gray-400\" />\n )\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn('flex items-center text-gray-500', sizeStyles[size], className)}\n {...props}\n >\n <ol className={cn('flex items-center', sizeStyles[size])}>\n {displayItems.map((item, index) => {\n const isFirst = index === 0\n const isLast = index === displayItems.length - 1\n const isEllipsis = item.label === '...'\n\n return (\n <li key={index} className={cn('flex items-center', sizeStyles[size])}>\n {index > 0 && (\n <span className=\"mx-1 text-gray-400\">\n {separator || defaultSeparator}\n </span>\n )}\n\n {isEllipsis ? (\n <span className=\"text-gray-400\">{item.label}</span>\n ) : item.href && !isLast ? (\n LinkComponent ? (\n <LinkComponent\n href={item.href}\n className=\"flex items-center gap-1 hover:text-[var(--black)] transition-colors\"\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </LinkComponent>\n ) : (\n <a\n href={item.href}\n className=\"flex items-center gap-1 hover:text-[var(--black)] transition-colors\"\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </a>\n )\n ) : (\n <span\n className={cn(\n 'flex items-center gap-1',\n isLast && 'text-[var(--black)] font-medium'\n )}\n aria-current={isLast ? 'page' : undefined}\n >\n {isFirst && showHomeIcon && (\n <House size={iconSize + 2} weight=\"fill\" />\n )}\n {item.icon}\n <span>{item.label}</span>\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumbs.displayName = 'Breadcrumbs'\n\n// Simple breadcrumb link component for use within the Breadcrumbs\nexport interface BreadcrumbLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n asChild?: boolean\n}\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n 'hover:text-[var(--black)] transition-colors',\n className\n )}\n {...props}\n />\n )\n)\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\nexport { Breadcrumbs, BreadcrumbLink }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Label } from './label'\n\nexport type DateRangePreset = '7d' | '30d' | '90d' | 'custom' | 'today' | 'yesterday' | 'this-week' | 'this-month' | 'this-year'\n\nexport interface DateRangePickerProps {\n /** Currently selected preset */\n value: DateRangePreset\n /** Callback when preset changes */\n onChange: (value: DateRangePreset) => void\n /** Custom start date (ISO string) */\n customStart?: string\n /** Custom end date (ISO string) */\n customEnd?: string\n /** Callback when custom dates change */\n onCustomChange?: (start: string, end: string) => void\n /** Available presets to show */\n presets?: DateRangePreset[]\n /** Size variant */\n size?: 'sm' | 'default'\n /** Additional class name */\n className?: string\n /** Show custom date inputs inline */\n inlineCustom?: boolean\n}\n\nconst presetLabels: Record<DateRangePreset, string> = {\n 'today': 'Today',\n 'yesterday': 'Yesterday',\n '7d': 'Last 7 days',\n '30d': 'Last 30 days',\n '90d': 'Last 90 days',\n 'this-week': 'This week',\n 'this-month': 'This month',\n 'this-year': 'This year',\n 'custom': 'Custom',\n}\n\nconst DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n value,\n onChange,\n customStart = '',\n customEnd = '',\n onCustomChange,\n presets = ['7d', '30d', '90d', 'custom'],\n size = 'default',\n className,\n inlineCustom = true,\n },\n ref\n ) => {\n const buttonSize = size === 'sm' ? 'sm' : 'default'\n\n return (\n <div ref={ref} className={cn('flex flex-wrap items-center gap-2', className)}>\n {presets.map((preset) => (\n <Button\n key={preset}\n variant={value === preset ? 'default' : 'outline'}\n size={buttonSize}\n onClick={() => onChange(preset)}\n >\n {presetLabels[preset]}\n </Button>\n ))}\n\n {value === 'custom' && inlineCustom && onCustomChange && (\n <div className=\"flex items-center gap-2\">\n <div className=\"space-y-1\">\n <Label htmlFor=\"start-date\" className=\"text-xs sr-only\">\n Start\n </Label>\n <Input\n id=\"start-date\"\n type=\"date\"\n value={customStart}\n onChange={(e) => onCustomChange(e.target.value, customEnd)}\n className={cn(size === 'sm' ? 'h-8 text-xs' : 'h-9')}\n aria-label=\"Start date\"\n />\n </div>\n <span className=\"text-muted-foreground\">to</span>\n <div className=\"space-y-1\">\n <Label htmlFor=\"end-date\" className=\"text-xs sr-only\">\n End\n </Label>\n <Input\n id=\"end-date\"\n type=\"date\"\n value={customEnd}\n onChange={(e) => onCustomChange(customStart, e.target.value)}\n className={cn(size === 'sm' ? 'h-8 text-xs' : 'h-9')}\n aria-label=\"End date\"\n />\n </div>\n </div>\n )}\n </div>\n )\n }\n)\nDateRangePicker.displayName = 'DateRangePicker'\n\n// Compact variant with dropdown\nexport interface DateRangeSelectProps {\n value: DateRangePreset\n onChange: (value: DateRangePreset) => void\n presets?: DateRangePreset[]\n className?: string\n}\n\nconst DateRangeSelect = React.forwardRef<HTMLSelectElement, DateRangeSelectProps>(\n ({ value, onChange, presets = ['7d', '30d', '90d'], className }, ref) => {\n return (\n <select\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value as DateRangePreset)}\n className={cn(\n 'h-9 rounded-sm border border-input bg-background px-3 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n >\n {presets.map((preset) => (\n <option key={preset} value={preset}>\n {presetLabels[preset]}\n </option>\n ))}\n </select>\n )\n }\n)\nDateRangeSelect.displayName = 'DateRangeSelect'\n\n// Helper to calculate date range from preset\nexport function getDateRangeFromPreset(preset: DateRangePreset): { start: Date; end: Date } {\n const now = new Date()\n const end = new Date(now)\n end.setHours(23, 59, 59, 999)\n\n let start = new Date(now)\n start.setHours(0, 0, 0, 0)\n\n switch (preset) {\n case 'today':\n break\n case 'yesterday':\n start.setDate(start.getDate() - 1)\n end.setDate(end.getDate() - 1)\n break\n case '7d':\n start.setDate(start.getDate() - 7)\n break\n case '30d':\n start.setDate(start.getDate() - 30)\n break\n case '90d':\n start.setDate(start.getDate() - 90)\n break\n case 'this-week':\n start.setDate(start.getDate() - start.getDay())\n break\n case 'this-month':\n start.setDate(1)\n break\n case 'this-year':\n start.setMonth(0, 1)\n break\n default:\n break\n }\n\n return { start, end }\n}\n\nexport { DateRangePicker, DateRangeSelect }\n","'use client'\n\nimport { useState, useRef } from 'react'\nimport { \n File, \n FileVideo, \n FileDoc, \n FilePdf, \n FileImage, \n Download, \n X, \n Play, \n ArrowSquareOut, \n CircleNotch,\n Folder\n} from '@phosphor-icons/react'\nimport { Card, CardContent, CardHeader, CardTitle } from './card'\n\nexport interface UploadedFile {\n path: string\n filename: string\n type: string\n size: number\n url?: string\n}\n\nexport interface FilePreviewProps {\n files: UploadedFile[]\n title?: string\n /**\n * Function to get signed URL for a file. If not provided, uses the url property from the file object.\n */\n getSignedUrl?: (path: string) => Promise<string | null>\n /**\n * Show as a card with header, or just the file list\n */\n showCard?: boolean\n /**\n * Empty state message\n */\n emptyMessage?: string\n}\n\nfunction getFileIcon(type: string) {\n if (type.startsWith('video/') || type === 'screen_recording') return FileVideo\n if (type.startsWith('image/') || type === 'image') return FileImage\n if (type === 'application/pdf' || type === 'pdf') return FilePdf\n if (type.includes('document') || type === 'document') return FileDoc\n return File\n}\n\nfunction getTypeLabel(type: string): string {\n if (type.startsWith('video/') || type === 'screen_recording') return 'Video'\n if (type.startsWith('audio/')) return 'Audio'\n if (type.startsWith('image/') || type === 'image') return 'Image'\n if (type === 'application/pdf' || type === 'pdf') return 'PDF'\n if (type.includes('document') || type === 'document') return 'Document'\n return 'File'\n}\n\nfunction formatSize(size: number): string {\n if (size < 1024) return `${size} B`\n if (size < 1024 * 1024) return `${Math.round(size / 1024)} KB`\n return `${(size / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction canPreview(file: UploadedFile): boolean {\n const ext = file.filename.toLowerCase().split('.').pop() || ''\n // Images\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return true\n // Videos\n if (['mp4', 'webm', 'mov', 'avi', 'mkv'].includes(ext)) return true\n // PDFs\n if (ext === 'pdf') return true\n // By type\n if (file.type.startsWith('image/') || file.type === 'image') return true\n if (file.type.startsWith('video/') || file.type === 'screen_recording') return true\n if (file.type === 'application/pdf' || file.type === 'pdf') return true\n return false\n}\n\nfunction getPreviewType(file: UploadedFile): 'image' | 'video' | 'pdf' | 'none' {\n const ext = file.filename.toLowerCase().split('.').pop() || ''\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext) || file.type.startsWith('image/') || file.type === 'image') return 'image'\n if (['mp4', 'webm', 'mov', 'avi', 'mkv'].includes(ext) || file.type.startsWith('video/') || file.type === 'screen_recording') return 'video'\n if (ext === 'pdf' || file.type === 'application/pdf' || file.type === 'pdf') return 'pdf'\n return 'none'\n}\n\nexport function FilePreview({ \n files, \n title = 'Uploaded Files',\n getSignedUrl,\n showCard = true,\n emptyMessage = 'No files uploaded'\n}: FilePreviewProps) {\n const [previewFile, setPreviewFile] = useState<UploadedFile | null>(null)\n const [videoError, setVideoError] = useState(false)\n const [signedUrl, setSignedUrl] = useState<string | null>(null)\n const [loadingUrl, setLoadingUrl] = useState(false)\n const [urlError, setUrlError] = useState<string | null>(null)\n const videoRef = useRef<HTMLVideoElement>(null)\n\n const handleOpenPreview = async (file: UploadedFile) => {\n setVideoError(false)\n setPreviewFile(file)\n setUrlError(null)\n \n // Get the URL\n if (file.url) {\n setSignedUrl(file.url)\n } else if (getSignedUrl) {\n setLoadingUrl(true)\n try {\n const url = await getSignedUrl(file.path)\n if (url) {\n setSignedUrl(url)\n } else {\n setUrlError('Failed to load file URL')\n }\n } catch (error) {\n setUrlError(error instanceof Error ? error.message : 'Failed to load file')\n } finally {\n setLoadingUrl(false)\n }\n } else {\n setUrlError('No URL available for this file')\n }\n }\n\n const handleClosePreview = () => {\n setPreviewFile(null)\n setSignedUrl(null)\n setUrlError(null)\n setLoadingUrl(false)\n setVideoError(false)\n }\n\n const handleDownload = async (e: React.MouseEvent, file: UploadedFile) => {\n e.stopPropagation()\n \n let url = file.url\n if (!url && getSignedUrl) {\n url = await getSignedUrl(file.path) || undefined\n }\n \n if (url) {\n window.open(url, '_blank')\n }\n }\n\n const content = (\n <>\n {files.length > 0 ? (\n <div className=\"space-y-2\">\n {files.map((file, i) => {\n const FileIcon = getFileIcon(file.type)\n const typeLabel = getTypeLabel(file.type)\n const sizeLabel = formatSize(file.size)\n const isPreviewable = canPreview(file)\n const previewType = getPreviewType(file)\n \n return (\n <div \n key={i}\n className={`flex items-center justify-between p-3 rounded-md bg-gray-50 transition-colors ${\n isPreviewable ? 'hover:bg-gray-100 cursor-pointer' : ''\n }`}\n onClick={() => isPreviewable && handleOpenPreview(file)}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n <div className=\"relative shrink-0\">\n <div className=\"w-10 h-10 rounded-sm bg-white border border-gray-200 flex items-center justify-center\">\n <FileIcon className=\"w-5 h-5 text-[var(--cyan)]\" weight=\"fill\" />\n </div>\n {previewType === 'video' && (\n <Play className=\"absolute -bottom-0.5 -right-0.5 w-3.5 h-3.5 text-[var(--cyan)] bg-white rounded-full\" weight=\"fill\" />\n )}\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-[var(--black)] truncate\">{file.filename}</p>\n <p className=\"text-xs text-muted-foreground\">\n {typeLabel} · {sizeLabel}\n {isPreviewable && (\n <span className=\"text-[var(--cyan)] ml-1\">· Click to preview</span>\n )}\n </p>\n </div>\n </div>\n <button \n onClick={(e) => handleDownload(e, file)}\n className=\"p-2 rounded-sm hover:bg-gray-200 transition-colors shrink-0\"\n title=\"Download\"\n >\n <Download className=\"w-4 h-4 text-muted-foreground\" />\n </button>\n </div>\n )\n })}\n </div>\n ) : (\n <div className=\"flex items-center justify-center h-32 border border-dashed border-gray-200 rounded-md\">\n <div className=\"text-center\">\n <Folder size={24} className=\"text-gray-300 mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n </div>\n </div>\n )}\n\n {/* Preview Modal */}\n {previewFile && (\n <div \n className=\"fixed inset-0 z-50 bg-black/80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n >\n <div \n className=\"bg-white rounded-lg max-w-5xl w-full max-h-[90vh] flex flex-col overflow-hidden shadow-2xl\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <div className=\"flex items-center gap-3 min-w-0\">\n {(() => {\n const FileIcon = getFileIcon(previewFile.type)\n return <FileIcon className=\"w-5 h-5 text-[var(--cyan)] flex-shrink-0\" weight=\"fill\" />\n })()}\n <div className=\"min-w-0\">\n <p className=\"font-medium text-[var(--black)] truncate\">{previewFile.filename}</p>\n <p className=\"text-xs text-muted-foreground\">\n {getTypeLabel(previewFile.type)} · {formatSize(previewFile.size)}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n {signedUrl && (\n <>\n <a\n href={signedUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors\"\n title=\"Open in new tab\"\n >\n <ArrowSquareOut className=\"w-5 h-5 text-muted-foreground\" />\n </a>\n <a\n href={signedUrl}\n download={previewFile.filename}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors\"\n title=\"Download\"\n >\n <Download className=\"w-5 h-5 text-muted-foreground\" />\n </a>\n </>\n )}\n <button\n onClick={handleClosePreview}\n className=\"p-2 rounded-md hover:bg-gray-100 transition-colors ml-2\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-auto p-4 bg-gray-900 flex items-center justify-center min-h-[400px]\">\n {loadingUrl && (\n <div className=\"text-center text-white\">\n <CircleNotch className=\"w-8 h-8 mx-auto mb-2 animate-spin text-[var(--cyan)]\" />\n <p className=\"text-sm text-gray-400\">Loading file...</p>\n </div>\n )}\n {urlError && (\n <div className=\"text-center text-white max-w-md\">\n <File className=\"w-16 h-16 mx-auto mb-4 text-gray-500\" />\n <p className=\"text-lg font-medium mb-2\">Failed to Load File</p>\n <p className=\"text-sm text-gray-400\">{urlError}</p>\n </div>\n )}\n {signedUrl && !loadingUrl && !urlError && (\n <>\n {getPreviewType(previewFile) === 'image' && (\n <img \n src={signedUrl} \n alt={previewFile.filename}\n className=\"max-w-full max-h-[70vh] object-contain rounded-md\"\n />\n )}\n {getPreviewType(previewFile) === 'video' && !videoError && (\n <video \n ref={videoRef}\n src={signedUrl}\n controls\n autoPlay\n className=\"w-full max-h-[70vh] rounded-md bg-black\"\n onError={() => setVideoError(true)}\n >\n Your browser does not support the video tag.\n </video>\n )}\n {getPreviewType(previewFile) === 'video' && videoError && (\n <div className=\"text-center text-white max-w-md\">\n <FileVideo className=\"w-16 h-16 mx-auto mb-4 text-gray-500\" />\n <p className=\"text-lg font-medium mb-2\">Video Preview Not Available</p>\n <p className=\"text-sm text-gray-400 mb-6\">\n This video format (.{previewFile.filename.split('.').pop()}) cannot be played directly in the browser.\n </p>\n <div className=\"flex gap-3 justify-center\">\n <a\n href={signedUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-white text-gray-900 rounded-full text-sm font-medium hover:bg-gray-100 transition-colors\"\n >\n <ArrowSquareOut className=\"w-4 h-4\" />\n Open in New Tab\n </a>\n <a\n href={signedUrl}\n download={previewFile.filename}\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-[var(--cyan)] text-gray-900 rounded-full text-sm font-medium hover:bg-[var(--cyan)]/90 transition-colors\"\n >\n <Download className=\"w-4 h-4\" />\n Download\n </a>\n </div>\n </div>\n )}\n {getPreviewType(previewFile) === 'pdf' && (\n <iframe\n src={signedUrl}\n className=\"w-full h-[70vh] rounded-md border-0 bg-white\"\n title={previewFile.filename}\n />\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )}\n </>\n )\n\n if (!showCard) {\n return content\n }\n\n return (\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n </CardHeader>\n <CardContent>\n {content}\n </CardContent>\n </Card>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { CaretRight } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\n\nexport interface SettingsNavItem {\n title: string\n description: string\n href: string\n icon: React.ReactNode\n}\n\nexport interface SettingsNavGroup {\n title: string\n items: SettingsNavItem[]\n}\n\nexport interface SettingsNavProps extends React.HTMLAttributes<HTMLDivElement> {\n groups: SettingsNavGroup[]\n /** Custom Link component (e.g., Next.js Link) */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n}\n\nconst SettingsNav = React.forwardRef<HTMLDivElement, SettingsNavProps>(\n ({ groups, LinkComponent, className, ...props }, ref) => {\n const Link = LinkComponent || 'a'\n\n return (\n <div ref={ref} className={cn('space-y-8', className)} {...props}>\n {groups.map((group) => (\n <div key={group.title}>\n <h2 className=\"text-sm font-medium text-muted-foreground uppercase tracking-wide mb-3 px-1\">\n {group.title}\n </h2>\n <div className=\"space-y-1\">\n {group.items.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200\"\n >\n <div className=\"flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors\">\n <span className=\"text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5\">\n {item.icon}\n </span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors\">\n {item.title}\n </h3>\n <p className=\"text-sm text-muted-foreground\">\n {item.description}\n </p>\n </div>\n <CaretRight\n size={18}\n className=\"text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0\"\n />\n </Link>\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\nSettingsNav.displayName = 'SettingsNav'\n\n// Single item variant\nexport interface SettingsNavLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n title: string\n description?: string\n icon?: React.ReactNode\n /** Custom Link component */\n LinkComponent?: React.ComponentType<{\n href: string\n className?: string\n children?: React.ReactNode\n }>\n}\n\nconst SettingsNavLink = React.forwardRef<HTMLAnchorElement, SettingsNavLinkProps>(\n ({ title, description, icon, href, LinkComponent, className, ...props }, ref) => {\n const content = (\n <>\n {icon && (\n <div className=\"flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors\">\n <span className=\"text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5\">\n {icon}\n </span>\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors\">\n {title}\n </h3>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <CaretRight\n size={18}\n className=\"text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0\"\n />\n </>\n )\n\n const linkClassName = cn(\n 'group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200',\n className\n )\n\n if (LinkComponent && href) {\n return (\n <LinkComponent href={href} className={linkClassName}>\n {content}\n </LinkComponent>\n )\n }\n\n return (\n <a ref={ref} href={href} className={linkClassName} {...props}>\n {content}\n </a>\n )\n }\n)\nSettingsNavLink.displayName = 'SettingsNavLink'\n\nexport { SettingsNav, SettingsNavLink }\n","'use client'\n\nimport * as React from 'react'\nimport { Plus, PencilSimple, Trash, Warning, CheckCircle, Question, Lightning, Check, CaretDown, CaretUp } from '@phosphor-icons/react'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Input } from './input'\nimport { Select } from './select'\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from './dialog'\n\n// Types\nexport type ScenarioType = 'escalation' | 'default_behavior' | 'quality_check' | 'edge_case'\n\nexport interface Scenario {\n id: string\n type: ScenarioType\n situation: string\n action: string\n}\n\nexport interface ScenarioSuggestion {\n type: ScenarioType\n situation: string\n action: string\n}\n\nexport interface ScenariosManagerProps {\n scenarios: Scenario[]\n onAdd: (scenario: Omit<Scenario, 'id'>) => Promise<void>\n onUpdate: (id: string, scenario: Omit<Scenario, 'id'>) => Promise<void>\n onDelete: (id: string) => Promise<void>\n onComplete?: () => Promise<void>\n suggestions?: ScenarioSuggestion[]\n isLoading?: boolean\n isComplete?: boolean\n minScenariosToComplete?: number\n /** Whether to show expanded by default */\n defaultExpanded?: boolean\n className?: string\n}\n\n// Type configuration - using Dilipod brand colors\nconst typeConfig: Record<ScenarioType, { \n label: string\n icon: React.ElementType\n color: string\n bgColor: string\n description: string\n}> = {\n escalation: {\n label: 'Ask me first',\n icon: Warning,\n color: 'text-amber-600',\n bgColor: 'bg-amber-50',\n description: 'Stop and check with me before proceeding',\n },\n default_behavior: {\n label: 'Handle it',\n icon: CheckCircle,\n color: 'text-[var(--cyan)]',\n bgColor: 'bg-[var(--cyan)]/10',\n description: 'Proceed automatically using this rule',\n },\n quality_check: {\n label: 'Must be correct',\n icon: CheckCircle,\n color: 'text-emerald-600',\n bgColor: 'bg-emerald-50',\n description: 'This is what \"done right\" looks like',\n },\n edge_case: {\n label: 'Watch out',\n icon: Question,\n color: 'text-muted-foreground',\n bgColor: 'bg-muted',\n description: 'Common mistakes or tricky situations',\n },\n}\n\n// Individual scenario card\nfunction ScenarioCard({\n scenario,\n onEdit,\n onDelete,\n}: {\n scenario: Scenario\n onEdit: () => void\n onDelete: () => void\n}) {\n const config = typeConfig[scenario.type]\n const Icon = config.icon\n\n return (\n <div className=\"group relative flex items-start justify-between gap-3 py-3 border-b border-border/50 last:border-b-0\">\n <div className=\"flex items-start gap-3 flex-1 min-w-0\">\n <div className={cn('w-8 h-8 rounded-full flex items-center justify-center shrink-0', config.bgColor)}>\n <Icon size={16} weight=\"fill\" className={config.color} />\n </div>\n <div className=\"flex-1 min-w-0 pt-0.5\">\n <p className=\"text-sm text-[var(--black)]\">\n <span className=\"font-medium\">When:</span> {scenario.situation}\n </p>\n <p className=\"text-sm text-muted-foreground mt-0.5\">\n <span className=\"text-[var(--black)] font-medium\">Action:</span> {scenario.action}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-[var(--black)]\"\n onClick={onEdit}\n >\n <PencilSimple size={14} />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-muted-foreground hover:text-red-600 hover:bg-red-50\"\n onClick={onDelete}\n >\n <Trash size={14} />\n </Button>\n </div>\n </div>\n )\n}\n\n// Suggestion chip\nfunction SuggestionChip({\n suggestion,\n onAdd,\n disabled,\n}: {\n suggestion: ScenarioSuggestion\n onAdd: () => void\n disabled?: boolean\n}) {\n return (\n <button\n type=\"button\"\n onClick={onAdd}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center gap-1.5 px-3 py-1.5 rounded-sm border border-dashed border-border',\n 'text-sm text-muted-foreground hover:border-[var(--cyan)] hover:text-[var(--cyan)] hover:bg-[var(--cyan)]/5',\n 'transition-all disabled:opacity-50 disabled:cursor-not-allowed'\n )}\n >\n <Plus size={14} weight=\"bold\" />\n {suggestion.situation}\n </button>\n )\n}\n\n// Add/Edit dialog\nfunction ScenarioDialog({\n open,\n onOpenChange,\n scenario,\n onSave,\n isLoading,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n scenario?: Scenario | null\n onSave: (data: Omit<Scenario, 'id'>) => Promise<void>\n isLoading?: boolean\n}) {\n const [type, setType] = React.useState<ScenarioType>(scenario?.type || 'escalation')\n const [situation, setSituation] = React.useState(scenario?.situation || '')\n const [action, setAction] = React.useState(scenario?.action || '')\n const [isSaving, setIsSaving] = React.useState(false)\n\n // Reset form when dialog opens/closes or scenario changes\n React.useEffect(() => {\n if (open) {\n setType(scenario?.type || 'escalation')\n setSituation(scenario?.situation || '')\n setAction(scenario?.action || '')\n }\n }, [open, scenario])\n\n const handleSave = async () => {\n if (!situation.trim() || !action.trim()) return\n \n setIsSaving(true)\n try {\n await onSave({ type, situation: situation.trim(), action: action.trim() })\n onOpenChange(false)\n } finally {\n setIsSaving(false)\n }\n }\n\n const isValid = situation.trim() && action.trim()\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>{scenario ? 'Edit scenario' : 'Add scenario'}</DialogTitle>\n <DialogDescription>\n Define when something happens and what action to take.\n </DialogDescription>\n </DialogHeader>\n \n <div className=\"grid gap-4 py-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">Type</label>\n <Select\n value={type}\n onChange={(e) => setType(e.target.value as ScenarioType)}\n >\n {Object.entries(typeConfig).map(([key, config]) => (\n <option key={key} value={key}>\n {config.label} — {config.description}\n </option>\n ))}\n </Select>\n </div>\n \n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">When...</label>\n <Input\n placeholder=\"e.g., Invoice amount doesn't match PO\"\n value={situation}\n onChange={(e) => setSituation(e.target.value)}\n />\n <p className=\"text-xs text-muted-foreground\">Describe the situation or trigger</p>\n </div>\n \n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--black)]\">Then...</label>\n <Input\n placeholder=\"e.g., Flag for review, don't process\"\n value={action}\n onChange={(e) => setAction(e.target.value)}\n />\n <p className=\"text-xs text-muted-foreground\">What should happen in this situation</p>\n </div>\n </div>\n \n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button \n onClick={handleSave} \n disabled={!isValid || isSaving}\n loading={isSaving}\n >\n {scenario ? 'Save changes' : 'Add scenario'}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n// Main component\nexport function ScenariosManager({\n scenarios,\n onAdd,\n onUpdate,\n onDelete,\n onComplete,\n suggestions = [],\n isLoading,\n isComplete = false,\n minScenariosToComplete = 1,\n defaultExpanded = true,\n className,\n}: ScenariosManagerProps) {\n const [dialogOpen, setDialogOpen] = React.useState(false)\n const [editingScenario, setEditingScenario] = React.useState<Scenario | null>(null)\n const [deletingId, setDeletingId] = React.useState<string | null>(null)\n const [isCompleting, setIsCompleting] = React.useState(false)\n const [isExpanded, setIsExpanded] = React.useState(defaultExpanded)\n\n const canComplete = scenarios.length >= minScenariosToComplete && !isComplete && onComplete\n\n const handleAddClick = () => {\n setEditingScenario(null)\n setDialogOpen(true)\n }\n\n const handleEditClick = (scenario: Scenario) => {\n setEditingScenario(scenario)\n setDialogOpen(true)\n }\n\n const handleSave = async (data: Omit<Scenario, 'id'>) => {\n if (editingScenario) {\n await onUpdate(editingScenario.id, data)\n } else {\n await onAdd(data)\n }\n }\n\n const handleDelete = async (id: string) => {\n setDeletingId(id)\n try {\n await onDelete(id)\n } finally {\n setDeletingId(null)\n }\n }\n\n const handleSuggestionAdd = async (suggestion: ScenarioSuggestion) => {\n await onAdd(suggestion)\n }\n\n const handleComplete = async () => {\n if (!onComplete) return\n setIsCompleting(true)\n try {\n await onComplete()\n } finally {\n setIsCompleting(false)\n }\n }\n\n // Filter out suggestions that already exist\n const filteredSuggestions = suggestions.filter(\n (s) => !scenarios.some(\n (existing) => existing.situation.toLowerCase() === s.situation.toLowerCase()\n )\n )\n\n return (\n <div className={cn('space-y-4', className)}>\n {/* Header - clickable to expand/collapse */}\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"w-full flex items-center justify-between border border-border/50 px-4 py-3 rounded-lg hover:bg-muted/30 transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-lg bg-[var(--cyan)]/10 flex items-center justify-center\">\n <Lightning size={20} weight=\"fill\" className=\"text-[var(--cyan)]\" />\n </div>\n <div className=\"text-left\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-semibold text-[var(--black)]\">Scenarios</h3>\n {isComplete && (\n <Badge variant=\"primary\" size=\"sm\">\n <CheckCircle size={12} weight=\"fill\" />\n Complete\n </Badge>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {scenarios.length === 0\n ? 'Define rules for edge cases'\n : `${scenarios.length} scenario${scenarios.length === 1 ? '' : 's'} defined`}\n </p>\n </div>\n </div>\n {isExpanded ? (\n <CaretUp size={20} className=\"text-muted-foreground\" />\n ) : (\n <CaretDown size={20} className=\"text-muted-foreground\" />\n )}\n </button>\n\n {/* Expandable content */}\n {isExpanded && (\n <>\n {/* Scenarios list */}\n {scenarios.length > 0 && (\n <div className=\"px-4\">\n {scenarios.map((scenario) => (\n <ScenarioCard\n key={scenario.id}\n scenario={scenario}\n onEdit={() => handleEditClick(scenario)}\n onDelete={() => handleDelete(scenario.id)}\n />\n ))}\n </div>\n )}\n\n {/* Empty state */}\n {scenarios.length === 0 && (\n <div className=\"px-4 py-6 text-center\">\n <p className=\"text-sm text-muted-foreground mb-4\">\n No scenarios yet. Add rules for how the worker should handle edge cases.\n </p>\n <Button variant=\"outline\" size=\"sm\" onClick={handleAddClick}>\n <Plus size={16} className=\"mr-1.5\" />\n Add your first scenario\n </Button>\n </div>\n )}\n\n {/* Add button - at the end of the list */}\n {scenarios.length > 0 && (\n <div className=\"px-4 pt-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleAddClick} className=\"text-muted-foreground hover:text-[var(--black)]\">\n <Plus size={16} className=\"mr-1.5\" />\n Add scenario\n </Button>\n </div>\n )}\n\n {/* Suggestions */}\n {filteredSuggestions.length > 0 && !isComplete && (\n <div className=\"px-4 pt-2\">\n <p className=\"text-xs text-muted-foreground mb-2\">Suggested scenarios:</p>\n <div className=\"flex flex-wrap gap-2\">\n {filteredSuggestions.map((suggestion, index) => (\n <SuggestionChip\n key={index}\n suggestion={suggestion}\n onAdd={() => handleSuggestionAdd(suggestion)}\n disabled={isLoading}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Complete button */}\n {canComplete && (\n <div className=\"px-4 pt-4 mt-2 border-t border-border/50\">\n <div className=\"flex items-center justify-between gap-4\">\n <p className=\"text-sm text-muted-foreground\">\n Mark your scenarios as complete to continue.\n </p>\n <Button\n onClick={handleComplete}\n disabled={isCompleting}\n loading={isCompleting}\n size=\"sm\"\n className=\"shrink-0\"\n >\n <Check size={16} className=\"mr-1.5\" />\n Mark complete\n </Button>\n </div>\n </div>\n )}\n\n {/* Complete state - only show when expanded */}\n {isComplete && (\n <div className=\"px-4 pt-3 mt-2 border-t border-border/50\">\n <p className=\"text-xs text-muted-foreground\">\n You can still add or edit scenarios while we build your worker.\n </p>\n </div>\n )}\n </>\n )}\n\n {/* Dialog */}\n <ScenarioDialog\n open={dialogOpen}\n onOpenChange={setDialogOpen}\n scenario={editingScenario}\n onSave={handleSave}\n isLoading={isLoading}\n />\n </div>\n )\n}\n","'use client'\n\nimport { useState } from 'react'\nimport { Card, CardContent } from './card'\nimport { Button } from './button'\nimport { toast } from './use-toast'\nimport { cn } from '../lib/utils'\n\n// Working hours per FTE per year\n// 40 hrs/week × 47 weeks (52 - 4 vacation - 1 holidays) = 1,880 hours\nconst HOURS_PER_FTE_YEAR = 1880\n\n// Price per worker by tier (euros/month)\nconst TIER_PRICING: Record<string, number> = {\n starter: 29,\n growth: 25,\n scale: 21,\n enterprise: 21,\n}\n\nexport interface ImpactMetrics {\n time_saved_minutes_per_run: number\n hourly_rate_euros: number\n fte_equivalent: number\n estimated_annual_savings_euros: number\n}\n\nexport interface ImpactMetricsFormProps {\n /** The worker/agent ID */\n workerId: string\n /** Initial metrics values */\n initialMetrics: ImpactMetrics\n /** Total executions for this worker */\n totalExecutions?: number\n /** Customer's pricing plan */\n customerPlan?: string\n /** API endpoint to save metrics (e.g., \"/api/workers\" or \"/api/agents\") */\n apiBasePath?: string\n /** Optional custom save handler - if provided, will be called instead of default API */\n onSave?: (workerId: string, metrics: ImpactMetrics) => Promise<boolean>\n /** Whether to show toast notifications */\n showToasts?: boolean\n /** Custom class name */\n className?: string\n}\n\nexport function ImpactMetricsForm({ \n workerId, \n initialMetrics, \n totalExecutions = 0, \n customerPlan = 'starter',\n apiBasePath = '/api/workers',\n onSave,\n showToasts = true,\n className,\n}: ImpactMetricsFormProps) {\n const [metrics, setMetrics] = useState(initialMetrics)\n const [savedMetrics, setSavedMetrics] = useState(initialMetrics)\n const [isSaving, setIsSaving] = useState(false)\n \n // Check if metrics have been saved before (non-default values in DB)\n const isInitiallySaved = \n initialMetrics.time_saved_minutes_per_run !== 30 ||\n initialMetrics.hourly_rate_euros !== 20 ||\n initialMetrics.fte_equivalent !== 0.1\n \n const [isEditing, setIsEditing] = useState(!isInitiallySaved)\n\n // Worker cost based on customer's plan\n const workerCostPerMonth = TIER_PRICING[customerPlan] || TIER_PRICING.starter\n const workerCostPerYear = workerCostPerMonth * 12\n\n // Calculate estimated annual savings based on FTE equivalent minus worker cost\n const calculateAnnualSavings = (fteEquivalent: number, hourlyRate: number) => {\n const laborSavings = fteEquivalent * HOURS_PER_FTE_YEAR * hourlyRate\n return laborSavings - workerCostPerYear\n }\n\n const handleSave = async () => {\n setIsSaving(true)\n try {\n const annualSavings = calculateAnnualSavings(\n metrics.fte_equivalent,\n metrics.hourly_rate_euros\n )\n\n const updatedMetrics = { ...metrics, estimated_annual_savings_euros: annualSavings }\n \n let success = false\n \n if (onSave) {\n // Use custom save handler\n success = await onSave(workerId, updatedMetrics)\n } else {\n // Use default API\n const response = await fetch(`${apiBasePath}/${workerId}/impact-metrics`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(updatedMetrics),\n })\n success = response.ok\n }\n\n if (success) {\n setMetrics(updatedMetrics)\n setSavedMetrics(updatedMetrics)\n setIsEditing(false)\n if (showToasts) {\n toast({\n title: 'Metrics saved',\n description: 'Impact metrics have been updated.',\n variant: 'success',\n })\n }\n } else {\n throw new Error('Failed to save')\n }\n } catch (error) {\n console.error('Failed to save metrics:', error)\n if (showToasts) {\n toast({\n title: 'Failed to save',\n description: 'Could not save metrics. Please try again.',\n variant: 'error',\n })\n }\n } finally {\n setIsSaving(false)\n }\n }\n\n const handleCancel = () => {\n setMetrics(savedMetrics)\n setIsEditing(false)\n }\n\n // Calculate hours saved per year based on FTE\n const hoursSavedPerYear = Math.round(metrics.fte_equivalent * HOURS_PER_FTE_YEAR)\n \n // Calculate implied frequency based on time per task and FTE%\n const timePerTaskHours = metrics.time_saved_minutes_per_run / 60\n const impliedFrequencyPerYear = timePerTaskHours > 0 \n ? Math.round(hoursSavedPerYear / timePerTaskHours) \n : 0\n const impliedFrequencyPerMonth = Math.round(impliedFrequencyPerYear / 12)\n \n // Calculate labor savings (before worker cost)\n const laborSavingsPerYear = metrics.fte_equivalent * HOURS_PER_FTE_YEAR * metrics.hourly_rate_euros\n \n // Net annual savings\n const netAnnualSavings = laborSavingsPerYear - workerCostPerYear\n\n return (\n <Card className={cn(\"border-[var(--cyan)]/20 bg-gradient-to-br from-white to-[var(--cyan)]/5\", className)}>\n <CardContent className=\"p-5\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Impact Metrics (ROI)</p>\n <div className=\"flex items-center gap-2\">\n {isEditing ? (\n <>\n {isInitiallySaved && (\n <Button \n onClick={handleCancel} \n size=\"sm\"\n variant=\"ghost\"\n >\n Cancel\n </Button>\n )}\n <Button \n onClick={handleSave} \n disabled={isSaving} \n size=\"sm\"\n >\n {isSaving ? 'Saving...' : 'Save'}\n </Button>\n </>\n ) : (\n <Button \n onClick={() => setIsEditing(true)} \n size=\"sm\"\n variant=\"outline\"\n >\n Edit\n </Button>\n )}\n </div>\n </div>\n\n {/* Metrics Grid */}\n <div className=\"grid grid-cols-2 lg:grid-cols-4 gap-6\">\n {/* Time per task */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Time per Task</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <input\n type=\"number\"\n value={metrics.time_saved_minutes_per_run}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n time_saved_minutes_per_run: parseInt(e.target.value) || 0 \n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n />\n <span className=\"text-sm text-muted-foreground\">min</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n {metrics.time_saved_minutes_per_run}<span className=\"text-sm font-normal text-muted-foreground ml-1\">min</span>\n </p>\n )}\n </div>\n\n {/* Manual cost */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Manual Cost</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-sm text-muted-foreground\">€</span>\n <input\n type=\"number\"\n value={metrics.hourly_rate_euros}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n hourly_rate_euros: parseFloat(e.target.value) || 0 \n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n step=\"0.5\"\n />\n <span className=\"text-sm text-muted-foreground\">/hr</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n €{metrics.hourly_rate_euros}<span className=\"text-sm font-normal text-muted-foreground ml-1\">/hr</span>\n </p>\n )}\n </div>\n\n {/* Job portion */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Job Portion</p>\n {isEditing ? (\n <div className=\"flex items-baseline gap-1\">\n <input\n type=\"number\"\n value={Math.round(metrics.fte_equivalent * 100)}\n onChange={(e) => setMetrics(prev => ({ \n ...prev, \n fte_equivalent: (parseFloat(e.target.value) || 0) / 100\n }))}\n className=\"w-16 px-2 py-1 text-2xl font-bold border border-border rounded-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan)] bg-background\"\n min=\"0\"\n max=\"1000\"\n step=\"5\"\n />\n <span className=\"text-sm text-muted-foreground\">%</span>\n </div>\n ) : (\n <p className=\"text-2xl font-bold\">\n {Math.round(metrics.fte_equivalent * 100)}<span className=\"text-sm font-normal text-muted-foreground ml-1\">%</span>\n </p>\n )}\n <p className=\"text-xs text-muted-foreground mt-0.5\">{hoursSavedPerYear}h/year</p>\n </div>\n\n {/* Net Annual Savings */}\n <div>\n <p className=\"text-xs text-muted-foreground uppercase tracking-wide mb-1\">Net Annual Savings</p>\n <p className={cn(\"text-2xl font-bold\", netAnnualSavings >= 0 ? \"text-[var(--cyan)]\" : \"text-red-500\")}>\n €{netAnnualSavings.toLocaleString(undefined, { maximumFractionDigits: 0 })}\n </p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n €{laborSavingsPerYear.toLocaleString(undefined, { maximumFractionDigits: 0 })} − €{workerCostPerYear}\n </p>\n </div>\n </div>\n\n {/* Implied frequency indicator */}\n {impliedFrequencyPerYear > 0 && (\n <p className=\"text-xs text-muted-foreground mt-4 pt-3 border-t border-border/50\">\n Implied: ~{impliedFrequencyPerMonth}×/month ({impliedFrequencyPerYear}×/year)\n </p>\n )}\n </CardContent>\n </Card>\n )\n}\n","'use client'\n\nimport { useState, ReactNode } from 'react'\nimport { Button } from './button'\nimport { Textarea } from './textarea'\nimport { \n CircleNotch,\n PaperPlaneTilt,\n CaretDown,\n CaretUp\n} from '@phosphor-icons/react'\n\n// ============================================\n// Types\n// ============================================\n\nexport interface Activity {\n /** Unique identifier for the activity */\n id: string\n /** Type of activity (e.g., 'note', 'status_change', 'workflow_update', 'assignment') */\n activity_type: string\n /** Main content of the activity */\n content: string\n /** User who created the activity (display name or email) */\n user: string\n /** When the activity was created */\n created_at: string | Date\n /** Additional metadata */\n metadata?: Record<string, unknown>\n}\n\nexport interface ActivityTimelineProps {\n /** List of activities to display */\n activities: Activity[]\n /** Whether the activities are loading */\n loading?: boolean\n /** Labels for different activity types (type -> label) */\n activityLabels?: Record<string, string>\n /** Number of activities to show before collapsing (default: 3) */\n collapsedCount?: number\n /** Whether to show the note input form */\n showNoteInput?: boolean\n /** Placeholder for the note input */\n notePlaceholder?: string\n /** Callback when a new note is submitted */\n onAddNote?: (note: string) => Promise<void>\n /** Whether the component is currently submitting a note */\n submitting?: boolean\n /** Custom date formatter function */\n formatDate?: (date: Date | string) => string\n /** Custom loading component */\n loadingComponent?: ReactNode\n /** Custom empty state message */\n emptyMessage?: string\n /** Additional CSS class */\n className?: string\n}\n\n// ============================================\n// Default Date Formatter\n// ============================================\n\nfunction defaultFormatDate(date: Date | string): string {\n const d = typeof date === 'string' ? new Date(date) : date\n const now = new Date()\n const diffMs = now.getTime() - d.getTime()\n const diffMins = Math.floor(diffMs / 60000)\n const diffHours = Math.floor(diffMs / 3600000)\n const diffDays = Math.floor(diffMs / 86400000)\n \n if (diffMins < 1) return 'just now'\n if (diffMins < 60) return `${diffMins}m ago`\n if (diffHours < 24) return `${diffHours}h ago`\n if (diffDays < 7) return `${diffDays}d ago`\n \n return d.toLocaleDateString()\n}\n\n// ============================================\n// Main Component\n// ============================================\n\nexport function ActivityTimeline({\n activities,\n loading = false,\n activityLabels = {},\n collapsedCount = 3,\n showNoteInput = true,\n notePlaceholder = 'Add a note...',\n onAddNote,\n submitting = false,\n formatDate = defaultFormatDate,\n loadingComponent,\n emptyMessage = 'No activity yet',\n className = '',\n}: ActivityTimelineProps) {\n const [newNote, setNewNote] = useState('')\n const [expanded, setExpanded] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const handleAddNote = async () => {\n if (!newNote.trim() || !onAddNote) return\n\n setIsSubmitting(true)\n try {\n await onAddNote(newNote.trim())\n setNewNote('')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n handleAddNote()\n }\n }\n\n // Show only first N activities unless expanded\n const visibleActivities = expanded ? activities : activities.slice(0, collapsedCount)\n const hasMore = activities.length > collapsedCount\n\n const isCurrentlySubmitting = submitting || isSubmitting\n\n const DefaultLoading = (\n <div className=\"flex items-center justify-center py-4\">\n <CircleNotch className=\"w-5 h-5 animate-spin text-muted-foreground\" />\n </div>\n )\n\n return (\n <div className={`space-y-3 ${className}`}>\n {/* Add Note Form - Compact inline */}\n {showNoteInput && onAddNote && (\n <div className=\"flex gap-2\">\n <Textarea\n value={newNote}\n onChange={(e) => setNewNote(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={notePlaceholder}\n rows={1}\n className=\"resize-none min-h-[36px] py-2\"\n />\n <Button\n onClick={handleAddNote}\n disabled={isCurrentlySubmitting || !newNote.trim()}\n size=\"sm\"\n className=\"flex-shrink-0 h-9\"\n >\n {isCurrentlySubmitting ? (\n <CircleNotch className=\"w-4 h-4 animate-spin\" />\n ) : (\n <PaperPlaneTilt className=\"w-4 h-4\" weight=\"bold\" />\n )}\n </Button>\n </div>\n )}\n\n {/* Activity List - Minimal */}\n {loading ? (\n loadingComponent || DefaultLoading\n ) : activities.length === 0 ? (\n <p className=\"text-xs text-muted-foreground text-center py-2\">\n {emptyMessage}\n </p>\n ) : (\n <div className=\"space-y-2\">\n {visibleActivities.map((activity) => {\n const label = activityLabels[activity.activity_type] || ''\n return (\n <div key={activity.id} className=\"text-sm border-l-2 border-gray-200 pl-3 py-1\">\n <p className=\"text-gray-700\">\n {label && <span className=\"text-muted-foreground\">{label} </span>}\n {activity.content}\n </p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {activity.user} · {formatDate(activity.created_at)}\n </p>\n </div>\n )\n })}\n \n {/* Show more/less toggle */}\n {hasMore && (\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n {expanded ? (\n <>\n <CaretUp className=\"w-3 h-3\" />\n Show less\n </>\n ) : (\n <>\n <CaretDown className=\"w-3 h-3\" />\n Show {activities.length - collapsedCount} more\n </>\n )}\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default ActivityTimeline\n","'use client'\n\nimport { useState, lazy, Suspense, ReactNode } from 'react'\nimport { Card, CardContent, CardHeader, CardTitle } from './card'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Textarea } from './textarea'\nimport { Alert } from './alert'\nimport { Select } from './select'\nimport {\n WebhooksLogo,\n Timer,\n GitBranch,\n Globe,\n Robot,\n Code,\n CheckCircle,\n Package,\n CloudArrowUp,\n CloudArrowDown,\n Copy,\n PencilSimple,\n Eye,\n TreeStructure,\n DownloadSimple,\n ArrowSquareOut,\n ClockCounterClockwise,\n ArrowsClockwise,\n ArrowsLeftRight,\n Plus,\n Minus,\n Pencil,\n X,\n} from '@phosphor-icons/react'\n\n// Lazy load the flow visualization to avoid SSR issues\nconst WorkflowFlow = lazy(() => import('./workflow-flow').then(m => ({ default: m.WorkflowFlow })))\n\n// ============================================\n// Types\n// ============================================\n\nexport interface N8nWorkflow {\n name: string\n nodes: Array<{\n id: string\n name: string\n type: string\n parameters?: Record<string, unknown>\n }>\n connections: Record<string, unknown>\n settings?: Record<string, unknown>\n tags?: Array<{ name: string }>\n}\n\n/**\n * Sim Studio workflow state format\n * Uses blocks (object keyed by ID) and edges (array)\n */\nexport interface SimWorkflow {\n // Actual Sim Studio state format\n blocks?: Record<string, {\n id: string\n type: string\n name: string\n position?: { x: number; y: number }\n subBlocks?: Record<string, unknown>\n outputs?: Record<string, unknown>\n enabled?: boolean\n }>\n edges?: Array<{\n id?: string\n source?: string\n target?: string\n sourceHandle?: string\n targetHandle?: string\n // Legacy format support\n from?: string\n to?: string\n }>\n loops?: Record<string, unknown>\n parallels?: Record<string, unknown>\n variables?: Record<string, unknown>\n lastSaved?: number\n isDeployed?: boolean\n // Legacy format (for backwards compatibility)\n name?: string\n description?: string\n trigger?: {\n type: string\n config?: Record<string, unknown>\n }\n nodes?: Array<{\n id: string\n type: string\n config?: Record<string, unknown>\n }>\n}\n\nexport type WorkflowTemplate = 'blank' | 'request_analyzer' | 'documentation_updater' | 'execution_monitor' | 'usage_reporter' | 'custom'\n\nexport interface WorkflowViewerProps {\n /** The workflow definition to display */\n workflow: N8nWorkflow | SimWorkflow | null\n /** Which platform the workflow is for */\n platform: 'n8n' | 'sim'\n /** Card title */\n title?: string\n /** Webhook URL to display */\n webhookUrl?: string | null\n /** External workflow ID (e.g., n8n workflow ID) */\n workflowId?: string | null\n /** Internal workflow definition ID */\n workflowDefinitionId?: string | null\n /** Associated worker/agent ID */\n workerId?: string | null\n /** Associated worker/agent name */\n workerName?: string | null\n /** Internal worker type for templates */\n internalWorkerType?: string | null\n /** Last sync timestamp */\n lastSynced?: string | null\n /** Whether the workflow is active */\n isActive?: boolean\n /** Sync error message */\n syncError?: string | null\n /** Additional CSS class */\n className?: string\n /** Allow editing the workflow JSON */\n editable?: boolean\n /** Allow creating new workflows */\n allowCreate?: boolean\n /** Allow changing the platform */\n allowPlatformChange?: boolean\n /** Allow changing the active status */\n allowStatusChange?: boolean\n /** Callback when workflow is updated */\n onWorkflowUpdate?: (workflow: N8nWorkflow | SimWorkflow) => void\n /** Callback when workflow is created */\n onWorkflowCreated?: (workflowDefId: string) => void\n /** Callback when platform changes */\n onPlatformChange?: (platform: 'n8n' | 'sim') => void\n /** Callback when status changes */\n onStatusChange?: (isActive: boolean) => void\n /** Custom API handlers for save/sync operations */\n apiHandlers?: {\n /** Save workflow to database */\n saveWorkflow?: (workflowDefId: string, workflow: N8nWorkflow | SimWorkflow, platform: 'n8n' | 'sim') => Promise<{ success: boolean; error?: string }>\n /** Save settings (platform, status) */\n saveSettings?: (workflowDefId: string, settings: { platform?: 'n8n' | 'sim'; is_active?: boolean }) => Promise<{ success: boolean; error?: string }>\n /** Push workflow to n8n */\n pushToN8n?: (workerId: string) => Promise<{ success: boolean; error?: string }>\n /** Pull workflow from n8n */\n pullFromN8n?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; descriptionSync?: { needsUpdate: boolean; reason?: string } }>\n /** Export workflow from Sim Studio (backup) */\n exportFromSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; backup?: { id: string; version: number; exportedAt: string }; workflow?: { blocksCount: number; edgesCount: number } }>\n /** Get backup history for Sim workflow */\n getSimBackups?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; backups?: Array<{ id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string }> }>\n /** Get a specific backup's full state */\n getBackupState?: (workflowDefId: string, backupId: string) => Promise<{ success: boolean; error?: string; backup?: { id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string; state: SimWorkflow | null } }>\n /** Push workflow to Sim Studio */\n pushToSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; workflowId?: string }>\n /** Pull workflow from Sim Studio */\n pullFromSim?: (workflowDefId: string) => Promise<{ success: boolean; error?: string; descriptionSync?: { needsUpdate: boolean; reason?: string } }>\n /** Create new workflow */\n createWorkflow?: (data: { agent_id: string; name: string; platform: 'n8n' | 'sim'; n8n_workflow?: N8nWorkflow | null; sim_workflow?: SimWorkflow | null; is_active: boolean; is_global: boolean }) => Promise<{ success: boolean; error?: string; workflow?: { id: string } }>\n /** Load workflow template */\n loadTemplate?: (type: string, workerId: string) => Promise<{ success: boolean; error?: string; workflow?: N8nWorkflow | SimWorkflow }>\n /** Switch workflow platform (e.g., n8n to Sim) */\n switchPlatform?: (workflowDefId: string, targetPlatform: 'n8n' | 'sim') => Promise<{ success: boolean; error?: string; simWorkflowId?: string }>\n }\n /** Sim workflow ID (for Sim Studio integration) */\n simWorkflowId?: string | null\n /** Sim Studio base URL for external links */\n simStudioUrl?: string\n /** Custom loading component */\n loadingComponent?: ReactNode\n /** Format distance function for timestamps */\n formatDistance?: (date: Date, options?: { addSuffix?: boolean }) => string\n}\n\n// Blank workflow templates\nconst BLANK_N8N_WORKFLOW: N8nWorkflow = {\n name: 'New Workflow',\n nodes: [\n {\n id: 'webhook-trigger',\n name: 'Webhook',\n type: 'n8n-nodes-base.webhook',\n parameters: {\n httpMethod: 'POST',\n path: 'my-webhook',\n },\n },\n ],\n connections: {},\n settings: { executionOrder: 'v1' },\n}\n\nconst BLANK_SIM_WORKFLOW: SimWorkflow = {\n name: 'New Workflow',\n description: 'A new Sim workflow',\n trigger: { type: 'webhook_input' },\n nodes: [\n { id: 'input', type: 'webhook_input' },\n { id: 'output', type: 'output' },\n ],\n edges: [{ from: 'input', to: 'output' }],\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\nfunction getNodeIcon(type: string) {\n if (type.includes('webhook')) return <WebhooksLogo size={16} weight=\"fill\" />\n if (type.includes('Trigger') || type.includes('schedule')) return <Timer size={16} weight=\"fill\" />\n if (type.includes('if') || type.includes('switch')) return <GitBranch size={16} weight=\"fill\" />\n if (type.includes('httpRequest')) return <Globe size={16} weight=\"fill\" />\n if (type.includes('langchain') || type.includes('openai') || type.includes('anthropic')) return <Robot size={16} weight=\"fill\" />\n if (type.includes('code')) return <Code size={16} weight=\"fill\" />\n if (type.includes('respondToWebhook')) return <CheckCircle size={16} weight=\"fill\" />\n if (type.includes('set')) return <Package size={16} weight=\"fill\" />\n return <Package size={16} />\n}\n\nfunction getNodeTypeLabel(type: string): string {\n const typeMap: Record<string, string> = {\n 'n8n-nodes-base.webhook': 'Webhook Trigger',\n 'n8n-nodes-base.scheduleTrigger': 'Schedule Trigger',\n 'n8n-nodes-base.if': 'Condition',\n 'n8n-nodes-base.httpRequest': 'HTTP Request',\n 'n8n-nodes-base.set': 'Set Data',\n 'n8n-nodes-base.code': 'Code',\n 'n8n-nodes-base.respondToWebhook': 'Webhook Response',\n '@n8n/n8n-nodes-langchain.agent': 'AI Agent',\n '@n8n/n8n-nodes-langchain.lmChatOpenAi': 'OpenAI Model',\n '@n8n/n8n-nodes-langchain.lmChatAnthropic': 'Anthropic Model',\n }\n return typeMap[type] || type.split('.').pop() || type\n}\n\nfunction getSimNodeTypeLabel(type: string): string {\n const typeMap: Record<string, string> = {\n 'webhook_input': 'Webhook Input',\n 'llm': 'AI/LLM',\n 'code': 'Code',\n 'http_request': 'HTTP Request',\n 'condition': 'Condition',\n 'output': 'Output',\n }\n return typeMap[type] || type\n}\n\nfunction defaultFormatDistance(date: Date, options?: { addSuffix?: boolean }): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffMins = Math.floor(diffMs / 60000)\n const diffHours = Math.floor(diffMs / 3600000)\n const diffDays = Math.floor(diffMs / 86400000)\n \n let result = ''\n if (diffMins < 1) result = 'less than a minute'\n else if (diffMins < 60) result = `${diffMins} minute${diffMins > 1 ? 's' : ''}`\n else if (diffHours < 24) result = `${diffHours} hour${diffHours > 1 ? 's' : ''}`\n else result = `${diffDays} day${diffDays > 1 ? 's' : ''}`\n \n return options?.addSuffix ? `${result} ago` : result\n}\n\n// ============================================\n// Diff Utilities\n// ============================================\n\ninterface DiffResult {\n blocksAdded: string[]\n blocksRemoved: string[]\n blocksModified: string[]\n edgesAdded: number\n edgesRemoved: number\n summary: string\n}\n\nfunction computeWorkflowDiff(stateA: SimWorkflow | null, stateB: SimWorkflow | null): DiffResult {\n if (!stateA || !stateB) {\n return {\n blocksAdded: [],\n blocksRemoved: [],\n blocksModified: [],\n edgesAdded: 0,\n edgesRemoved: 0,\n summary: 'Unable to compare - missing workflow data',\n }\n }\n\n const blocksA = stateA.blocks || {}\n const blocksB = stateB.blocks || {}\n const edgesA = stateA.edges || []\n const edgesB = stateB.edges || []\n\n const blockIdsA = new Set(Object.keys(blocksA))\n const blockIdsB = new Set(Object.keys(blocksB))\n\n const blocksAdded = [...blockIdsB].filter(id => !blockIdsA.has(id))\n const blocksRemoved = [...blockIdsA].filter(id => !blockIdsB.has(id))\n\n // Check for modified blocks (blocks that exist in both but have different content)\n const blocksModified: string[] = []\n for (const id of blockIdsA) {\n if (blockIdsB.has(id)) {\n const blockA = blocksA[id]\n const blockB = blocksB[id]\n // Deep compare by stringifying\n if (JSON.stringify(blockA) !== JSON.stringify(blockB)) {\n blocksModified.push(id)\n }\n }\n }\n\n // Compare edges by creating a signature for each\n const edgeSignature = (e: { source?: string; target?: string; from?: string; to?: string }) =>\n `${e.source || e.from}->${e.target || e.to}`\n const edgeSigsA = new Set(edgesA.map(edgeSignature))\n const edgeSigsB = new Set(edgesB.map(edgeSignature))\n\n const edgesAdded = [...edgeSigsB].filter(sig => !edgeSigsA.has(sig)).length\n const edgesRemoved = [...edgeSigsA].filter(sig => !edgeSigsB.has(sig)).length\n\n // Generate summary\n const changes: string[] = []\n if (blocksAdded.length > 0) changes.push(`+${blocksAdded.length} block${blocksAdded.length > 1 ? 's' : ''}`)\n if (blocksRemoved.length > 0) changes.push(`-${blocksRemoved.length} block${blocksRemoved.length > 1 ? 's' : ''}`)\n if (blocksModified.length > 0) changes.push(`~${blocksModified.length} modified`)\n if (edgesAdded > 0) changes.push(`+${edgesAdded} edge${edgesAdded > 1 ? 's' : ''}`)\n if (edgesRemoved > 0) changes.push(`-${edgesRemoved} edge${edgesRemoved > 1 ? 's' : ''}`)\n\n return {\n blocksAdded,\n blocksRemoved,\n blocksModified,\n edgesAdded,\n edgesRemoved,\n summary: changes.length > 0 ? changes.join(', ') : 'No changes detected',\n }\n}\n\n// ============================================\n// N8n Workflow Summary Component\n// ============================================\n\nfunction N8nWorkflowSummary({ workflow, showFlow = false }: { workflow: N8nWorkflow; showFlow?: boolean }) {\n const nodes = workflow.nodes || []\n \n const triggerNode = nodes.find(n => \n n.type.includes('webhook') || n.type.includes('Trigger')\n )\n \n const aiNodes = nodes.filter(n => \n n.type.includes('langchain') || n.type.includes('openai') || n.type.includes('anthropic')\n )\n \n const httpNodes = nodes.filter(n => \n n.type === 'n8n-nodes-base.httpRequest'\n )\n \n const conditionNodes = nodes.filter(n => \n n.type === 'n8n-nodes-base.if'\n )\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n {triggerNode && getNodeIcon(triggerNode.type)}\n <span className=\"text-xs font-medium\">Trigger</span>\n </div>\n <p className=\"text-sm font-semibold truncate\">\n {triggerNode ? getNodeTypeLabel(triggerNode.type) : 'None'}\n </p>\n </div>\n \n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <TreeStructure size={16} />\n <span className=\"text-xs font-medium\">Steps</span>\n </div>\n <p className=\"text-sm font-semibold\">{nodes.length} nodes</p>\n </div>\n \n {aiNodes.length > 0 && (\n <div className=\"bg-purple-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-purple-600 mb-1\">\n <Robot size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">AI</span>\n </div>\n <p className=\"text-sm font-semibold text-purple-700\">\n {aiNodes.length} {aiNodes.length === 1 ? 'node' : 'nodes'}\n </p>\n </div>\n )}\n \n {httpNodes.length > 0 && (\n <div className=\"bg-blue-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-blue-600 mb-1\">\n <Globe size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">APIs</span>\n </div>\n <p className=\"text-sm font-semibold text-blue-700\">\n {httpNodes.length} {httpNodes.length === 1 ? 'request' : 'requests'}\n </p>\n </div>\n )}\n \n {conditionNodes.length > 0 && (\n <div className=\"bg-yellow-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-yellow-600 mb-1\">\n <GitBranch size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">Logic</span>\n </div>\n <p className=\"text-sm font-semibold text-yellow-700\">\n {conditionNodes.length} {conditionNodes.length === 1 ? 'condition' : 'conditions'}\n </p>\n </div>\n )}\n </div>\n\n {showFlow && (\n <Suspense fallback={\n <div className=\"h-[320px] bg-slate-50 rounded-lg border border-slate-200 flex items-center justify-center\">\n <div className=\"text-slate-400 text-sm\">Loading...</div>\n </div>\n }>\n <WorkflowFlow workflow={workflow as any} height={320} />\n </Suspense>\n )}\n \n {!showFlow && (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Workflow Nodes</h4>\n <div className=\"flex flex-wrap gap-1.5\">\n {nodes.map((node) => (\n <span \n key={node.id} \n className=\"px-2 py-1 rounded bg-slate-100 text-slate-600 text-xs\"\n >\n {node.name}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// ============================================\n// Sim Workflow Summary Component\n// ============================================\n\nfunction SimWorkflowSummary({ workflow }: { workflow: SimWorkflow }) {\n // Handle actual Sim Studio format (blocks object) or legacy format (nodes array)\n const blocks = workflow.blocks || {}\n const blockList = Object.values(blocks)\n const edges = workflow.edges || []\n\n // Fall back to legacy nodes array if no blocks\n const legacyNodes = workflow.nodes || []\n const hasBlocks = blockList.length > 0\n const displayNodes = hasBlocks ? blockList : legacyNodes\n\n // Find trigger block (usually 'starter' type)\n const triggerBlock = blockList.find(b => b.type === 'starter' || b.type === 'webhook' || b.type === 'api')\n const triggerType = triggerBlock?.type || workflow.trigger?.type\n\n // Count AI and HTTP blocks\n const aiBlocks = blockList.filter(b => b.type === 'agent' || b.type === 'llm' || b.type === 'openai' || b.type === 'anthropic')\n const httpBlocks = blockList.filter(b => b.type === 'api' || b.type === 'http_request')\n\n // Check if workflow is empty\n const isEmpty = displayNodes.length === 0\n\n if (isEmpty) {\n return (\n <div className=\"py-8 text-center\">\n <TreeStructure size={32} className=\"mx-auto mb-3 text-muted-foreground/50\" />\n <p className=\"text-sm text-muted-foreground mb-1\">No workflow blocks yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Open the workflow in Sim Studio to build it, then click &quot;Pull from Sim&quot; to sync changes.\n </p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <WebhooksLogo size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">Trigger</span>\n </div>\n <p className=\"text-sm font-semibold\">\n {triggerType ? getSimNodeTypeLabel(triggerType) : 'Manual'}\n </p>\n </div>\n\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <TreeStructure size={16} />\n <span className=\"text-xs font-medium\">Blocks</span>\n </div>\n <p className=\"text-sm font-semibold\">{displayNodes.length} blocks</p>\n </div>\n\n {edges.length > 0 && (\n <div className=\"bg-muted/50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-muted-foreground mb-1\">\n <GitBranch size={16} />\n <span className=\"text-xs font-medium\">Edges</span>\n </div>\n <p className=\"text-sm font-semibold\">{edges.length} connections</p>\n </div>\n )}\n\n {aiBlocks.length > 0 && (\n <div className=\"bg-purple-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-purple-600 mb-1\">\n <Robot size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">AI</span>\n </div>\n <p className=\"text-sm font-semibold text-purple-700\">\n {aiBlocks.length} {aiBlocks.length === 1 ? 'block' : 'blocks'}\n </p>\n </div>\n )}\n\n {httpBlocks.length > 0 && (\n <div className=\"bg-blue-50 rounded-lg p-3\">\n <div className=\"flex items-center gap-2 text-blue-600 mb-1\">\n <Globe size={16} weight=\"fill\" />\n <span className=\"text-xs font-medium\">APIs</span>\n </div>\n <p className=\"text-sm font-semibold text-blue-700\">\n {httpBlocks.length} {httpBlocks.length === 1 ? 'request' : 'requests'}\n </p>\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Workflow Blocks</h4>\n <div className=\"flex flex-wrap gap-2\">\n {hasBlocks ? (\n blockList.map((block) => (\n <div\n key={block.id}\n className=\"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs bg-gray-100 text-gray-700 border-gray-300\"\n >\n <Package size={14} />\n <span className=\"font-medium\">{block.name || getSimNodeTypeLabel(block.type)}</span>\n </div>\n ))\n ) : (\n legacyNodes.map((node) => (\n <div\n key={node.id}\n className=\"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs bg-gray-100 text-gray-700 border-gray-300\"\n >\n <Package size={14} />\n <span className=\"font-medium\">{getSimNodeTypeLabel(node.type)}</span>\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n )\n}\n\n// ============================================\n// Main WorkflowViewer Component\n// ============================================\n\nexport function WorkflowViewer({\n workflow,\n platform,\n title = 'Workflow',\n webhookUrl,\n workflowId,\n workflowDefinitionId,\n workerId,\n workerName,\n internalWorkerType,\n lastSynced,\n isActive,\n syncError,\n className = '',\n editable = false,\n allowCreate = false,\n allowPlatformChange = false,\n allowStatusChange = false,\n onWorkflowUpdate,\n onWorkflowCreated,\n onPlatformChange,\n onStatusChange,\n apiHandlers,\n loadingComponent,\n formatDistance = defaultFormatDistance,\n simWorkflowId,\n simStudioUrl,\n}: WorkflowViewerProps) {\n const [viewMode, setViewMode] = useState<'summary' | 'flow' | 'json' | 'edit' | 'create' | 'backups'>('summary')\n const [editedJson, setEditedJson] = useState('')\n const [jsonError, setJsonError] = useState<string | null>(null)\n const [message, setMessage] = useState<{ type: 'success' | 'error'; text: string } | null>(null)\n const [saving, setSaving] = useState(false)\n const [syncing, setSyncing] = useState(false)\n const [pulling, setPulling] = useState(false)\n const [creating, setCreating] = useState(false)\n const [selectedTemplate, setSelectedTemplate] = useState<WorkflowTemplate>('blank')\n const [exporting, setExporting] = useState(false)\n const [backups, setBackups] = useState<Array<{ id: string; version: number; versionLabel?: string; workflowName: string; isDeployed: boolean; exportedAt: string }>>([])\n const [loadingBackups, setLoadingBackups] = useState(false)\n const [pushingToSim, setPushingToSim] = useState(false)\n const [pullingFromSim, setPullingFromSim] = useState(false)\n const [switchingPlatform, setSwitchingPlatform] = useState(false)\n // Diff comparison state\n const [diffMode, setDiffMode] = useState(false)\n const [selectedBackupA, setSelectedBackupA] = useState<string | null>(null)\n const [selectedBackupB, setSelectedBackupB] = useState<string | null>(null)\n const [backupStateA, setBackupStateA] = useState<SimWorkflow | null>(null)\n const [backupStateB, setBackupStateB] = useState<SimWorkflow | null>(null)\n const [loadingDiff, setLoadingDiff] = useState(false)\n\n const [localPlatform, setLocalPlatform] = useState<'n8n' | 'sim'>(platform)\n const [localIsActive, setLocalIsActive] = useState(isActive ?? true)\n \n const hasUnsavedChanges = localPlatform !== platform || localIsActive !== (isActive ?? true)\n\n function copyToClipboard(text: string, label: string = 'Copied') {\n navigator.clipboard.writeText(text)\n setMessage({ type: 'success', text: label })\n setTimeout(() => setMessage(null), 2000)\n }\n\n function handleLocalPlatformChange(newPlatform: 'n8n' | 'sim') {\n setLocalPlatform(newPlatform)\n }\n\n function handleLocalStatusChange(newStatus: boolean) {\n setLocalIsActive(newStatus)\n }\n\n function cancelChanges() {\n setLocalPlatform(platform)\n setLocalIsActive(isActive ?? true)\n setMessage(null)\n }\n\n async function saveSettings() {\n if (!workflowDefinitionId || !apiHandlers?.saveSettings) {\n setMessage({ type: 'error', text: 'Cannot save - no workflow definition or API handler.' })\n return\n }\n\n setSaving(true)\n setMessage(null)\n\n try {\n const updateData: { platform?: 'n8n' | 'sim'; is_active?: boolean } = {}\n \n if (localPlatform !== platform) {\n updateData.platform = localPlatform\n }\n if (localIsActive !== (isActive ?? true)) {\n updateData.is_active = localIsActive\n }\n\n if (Object.keys(updateData).length === 0) {\n setMessage({ type: 'success', text: 'No changes to save' })\n setSaving(false)\n return\n }\n\n const result = await apiHandlers.saveSettings(workflowDefinitionId, updateData)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Settings saved successfully' })\n onPlatformChange?.(localPlatform)\n onStatusChange?.(localIsActive)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to save settings' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to save settings' })\n } finally {\n setSaving(false)\n }\n }\n\n function startEditing() {\n setEditedJson(JSON.stringify(workflow, null, 2))\n setJsonError(null)\n setViewMode('edit')\n }\n\n function cancelEditing() {\n setEditedJson('')\n setJsonError(null)\n setViewMode('summary')\n }\n\n function validateJson(json: string): N8nWorkflow | SimWorkflow | null {\n try {\n const parsed = JSON.parse(json)\n if (platform === 'n8n') {\n if (!parsed.nodes || !Array.isArray(parsed.nodes)) {\n throw new Error('n8n workflow must have a nodes array')\n }\n } else {\n // Sim Studio uses blocks object (not nodes array)\n if (!parsed.blocks || typeof parsed.blocks !== 'object') {\n throw new Error('Sim workflow must have a blocks object')\n }\n }\n return parsed\n } catch {\n return null\n }\n }\n\n async function saveWorkflow() {\n const parsed = validateJson(editedJson)\n if (!parsed) {\n setJsonError('Invalid JSON. Please check the syntax.')\n return\n }\n\n if (!workflowDefinitionId || !apiHandlers?.saveWorkflow) {\n setJsonError('Cannot save - no workflow definition or API handler.')\n return\n }\n\n setSaving(true)\n setJsonError(null)\n\n try {\n const result = await apiHandlers.saveWorkflow(workflowDefinitionId, parsed, platform)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Workflow saved to database' })\n setViewMode('summary')\n onWorkflowUpdate?.(parsed)\n } else {\n setJsonError(result.error || 'Failed to save workflow')\n }\n } catch {\n setJsonError('Failed to save workflow')\n } finally {\n setSaving(false)\n }\n }\n\n async function pushToN8n() {\n if (!workerId || !apiHandlers?.pushToN8n) {\n setMessage({ type: 'error', text: 'Cannot sync - no worker ID or API handler' })\n return\n }\n\n setSyncing(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pushToN8n(workerId)\n\n if (result.success) {\n setMessage({ type: 'success', text: 'Pushed to n8n successfully' })\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to push to n8n' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to push to n8n' })\n } finally {\n setSyncing(false)\n }\n }\n\n async function pullFromN8n() {\n if (!workflowId || !workflowDefinitionId || !apiHandlers?.pullFromN8n) {\n setMessage({ type: 'error', text: 'Cannot pull - no n8n workflow ID or API handler' })\n return\n }\n\n setPulling(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pullFromN8n(workflowDefinitionId)\n\n if (result.success) {\n if (result.descriptionSync?.needsUpdate) {\n setMessage({ \n type: 'success', \n text: `Pulled from n8n. Note: ${result.descriptionSync.reason || 'Worker description may need updating.'}` \n })\n } else {\n setMessage({ type: 'success', text: 'Pulled from n8n successfully' })\n }\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to pull from n8n' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to pull from n8n' })\n } finally {\n setPulling(false)\n }\n }\n\n async function exportFromSim() {\n if (!workflowDefinitionId || !simWorkflowId || !apiHandlers?.exportFromSim) {\n setMessage({ type: 'error', text: 'Cannot export - no Sim workflow ID or API handler' })\n return\n }\n\n setExporting(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.exportFromSim(workflowDefinitionId)\n\n if (result.success) {\n const blocksCount = result.workflow?.blocksCount || 0\n const edgesCount = result.workflow?.edgesCount || 0\n setMessage({ \n type: 'success', \n text: `Exported from Sim Studio (v${result.backup?.version || 1}, ${blocksCount} blocks, ${edgesCount} edges)`\n })\n // Refresh backups list if viewing\n if (viewMode === 'backups') {\n loadBackups()\n }\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to export from Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to export from Sim Studio' })\n } finally {\n setExporting(false)\n }\n }\n\n async function loadBackups() {\n if (!workflowDefinitionId || !apiHandlers?.getSimBackups) {\n return\n }\n\n setLoadingBackups(true)\n\n try {\n const result = await apiHandlers.getSimBackups(workflowDefinitionId)\n if (result.success && result.backups) {\n setBackups(result.backups)\n }\n } catch {\n console.error('Failed to load backups')\n } finally {\n setLoadingBackups(false)\n }\n }\n\n function showBackups() {\n setViewMode('backups')\n loadBackups()\n }\n\n async function loadBackupForDiff(backupId: string, slot: 'A' | 'B') {\n if (!workflowDefinitionId || !apiHandlers?.getBackupState) {\n return\n }\n\n setLoadingDiff(true)\n try {\n const result = await apiHandlers.getBackupState(workflowDefinitionId, backupId)\n if (result.success && result.backup) {\n if (slot === 'A') {\n setBackupStateA(result.backup.state)\n setSelectedBackupA(backupId)\n } else {\n setBackupStateB(result.backup.state)\n setSelectedBackupB(backupId)\n }\n }\n } catch {\n console.error('Failed to load backup for diff')\n } finally {\n setLoadingDiff(false)\n }\n }\n\n function startDiffMode() {\n setDiffMode(true)\n setSelectedBackupA(null)\n setSelectedBackupB(null)\n setBackupStateA(null)\n setBackupStateB(null)\n }\n\n function exitDiffMode() {\n setDiffMode(false)\n setSelectedBackupA(null)\n setSelectedBackupB(null)\n setBackupStateA(null)\n setBackupStateB(null)\n }\n\n function openInSimStudio() {\n if (simStudioUrl && simWorkflowId) {\n window.open(`${simStudioUrl}/w/${simWorkflowId}`, '_blank')\n }\n }\n\n async function pushToSim() {\n if (!workflowDefinitionId || !apiHandlers?.pushToSim) {\n setMessage({ type: 'error', text: 'Cannot push - no workflow definition ID or API handler' })\n return\n }\n\n setPushingToSim(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pushToSim(workflowDefinitionId)\n\n if (result.success) {\n setMessage({ \n type: 'success', \n text: result.workflowId \n ? `Pushed to Sim Studio (workflow: ${result.workflowId})`\n : 'Pushed to Sim Studio successfully'\n })\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to push to Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to push to Sim Studio' })\n } finally {\n setPushingToSim(false)\n }\n }\n\n async function pullFromSim() {\n if (!workflowDefinitionId || !simWorkflowId || !apiHandlers?.pullFromSim) {\n setMessage({ type: 'error', text: 'Cannot pull - no Sim workflow ID or API handler' })\n return\n }\n\n setPullingFromSim(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.pullFromSim(workflowDefinitionId)\n\n if (result.success) {\n if (result.descriptionSync?.needsUpdate) {\n setMessage({ \n type: 'success', \n text: `Pulled from Sim Studio. Note: ${result.descriptionSync.reason || 'Worker description may need updating.'}` \n })\n } else {\n setMessage({ type: 'success', text: 'Pulled from Sim Studio successfully' })\n }\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to pull from Sim Studio' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to pull from Sim Studio' })\n } finally {\n setPullingFromSim(false)\n }\n }\n\n function startCreating() {\n if (internalWorkerType) {\n setSelectedTemplate(internalWorkerType as WorkflowTemplate)\n } else {\n setSelectedTemplate('blank')\n }\n const blank = platform === 'n8n' ? BLANK_N8N_WORKFLOW : BLANK_SIM_WORKFLOW\n setEditedJson(JSON.stringify(blank, null, 2))\n setViewMode('create')\n }\n\n async function createWorkflow() {\n const parsed = validateJson(editedJson)\n if (!parsed) {\n setJsonError('Invalid JSON. Please check the syntax.')\n return\n }\n\n if (!workerId || !apiHandlers?.createWorkflow) {\n setJsonError('Cannot create - no worker ID or API handler.')\n return\n }\n\n setCreating(true)\n setJsonError(null)\n\n try {\n const workflowName = (parsed as N8nWorkflow).name || \n `${workerName || 'Worker'} Workflow`\n\n const result = await apiHandlers.createWorkflow({\n agent_id: workerId,\n name: workflowName,\n platform,\n n8n_workflow: platform === 'n8n' ? parsed as N8nWorkflow : null,\n sim_workflow: platform === 'sim' ? parsed as SimWorkflow : null,\n is_active: true,\n is_global: false,\n })\n\n if (result.success && result.workflow) {\n setMessage({ type: 'success', text: 'Workflow created successfully' })\n onWorkflowCreated?.(result.workflow.id)\n } else {\n setJsonError(result.error || 'Failed to create workflow')\n }\n } catch {\n setJsonError('Failed to create workflow')\n } finally {\n setCreating(false)\n }\n }\n\n async function switchPlatform(targetPlatform: 'n8n' | 'sim') {\n if (!workflowDefinitionId || !apiHandlers?.switchPlatform) {\n setMessage({ type: 'error', text: 'Cannot switch platform - no workflow definition ID or API handler' })\n return\n }\n\n setSwitchingPlatform(true)\n setMessage(null)\n\n try {\n const result = await apiHandlers.switchPlatform(workflowDefinitionId, targetPlatform)\n\n if (result.success) {\n setMessage({ \n type: 'success', \n text: targetPlatform === 'sim' \n ? `Switched to Sim Studio${result.simWorkflowId ? ` (workflow: ${result.simWorkflowId})` : ''}`\n : 'Switched to n8n'\n })\n // Reload to show updated state\n setTimeout(() => window.location.reload(), 1500)\n } else {\n setMessage({ type: 'error', text: result.error || 'Failed to switch platform' })\n }\n } catch {\n setMessage({ type: 'error', text: 'Failed to switch platform' })\n } finally {\n setSwitchingPlatform(false)\n }\n }\n\n async function loadTemplate() {\n if (!workerId || !workerName || !apiHandlers?.loadTemplate) {\n setJsonError('Worker information or API handler required to generate template.')\n return\n }\n\n if (selectedTemplate === 'blank' || selectedTemplate === 'custom') {\n return\n }\n\n setCreating(true)\n setJsonError(null)\n\n try {\n const result = await apiHandlers.loadTemplate(selectedTemplate, workerId)\n \n if (result.success && result.workflow) {\n setEditedJson(JSON.stringify(result.workflow, null, 2))\n setMessage({ type: 'success', text: 'Template loaded' })\n } else {\n setJsonError(result.error || 'Failed to load template')\n }\n } catch {\n setJsonError('Failed to load template')\n } finally {\n setCreating(false)\n }\n }\n\n const DefaultLoading = (\n <div className=\"h-[320px] bg-slate-50 rounded-lg border border-slate-200 flex items-center justify-center\">\n <div className=\"text-slate-400 text-sm\">Loading...</div>\n </div>\n )\n\n // Show create workflow UI when no workflow exists\n if (!workflow) {\n return (\n <Card className={className}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {allowCreate && viewMode !== 'create' && (\n <Button onClick={startCreating} variant=\"primary\" size=\"sm\">\n Create Workflow\n </Button>\n )}\n </div>\n </CardHeader>\n <CardContent>\n {viewMode === 'create' ? (\n <div className=\"space-y-4\">\n {message && (\n <Alert variant={message.type === 'success' ? 'success' : 'error'}>\n {message.text}\n </Alert>\n )}\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Start from template:</label>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n onClick={() => {\n setSelectedTemplate('blank')\n const blank = platform === 'n8n' ? BLANK_N8N_WORKFLOW : BLANK_SIM_WORKFLOW\n setEditedJson(JSON.stringify(blank, null, 2))\n }}\n variant={selectedTemplate === 'blank' ? 'primary' : 'outline'}\n size=\"sm\"\n >\n Blank\n </Button>\n {internalWorkerType && apiHandlers?.loadTemplate && (\n <Button\n onClick={() => {\n setSelectedTemplate(internalWorkerType as WorkflowTemplate)\n loadTemplate()\n }}\n variant={selectedTemplate === internalWorkerType ? 'primary' : 'outline'}\n size=\"sm\"\n >\n {internalWorkerType.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase())} Template\n </Button>\n )}\n </div>\n </div>\n\n {jsonError && (\n <Alert variant=\"error\">{jsonError}</Alert>\n )}\n <Textarea\n value={editedJson}\n onChange={(e) => {\n setEditedJson(e.target.value)\n setJsonError(null)\n }}\n className=\"h-72 font-mono text-xs\"\n placeholder=\"Paste or edit workflow JSON here...\"\n />\n\n <div className=\"flex gap-2\">\n <Button onClick={() => setViewMode('summary')} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button\n onClick={createWorkflow}\n disabled={creating || !editedJson.trim()}\n variant=\"primary\"\n size=\"sm\"\n >\n {creating ? 'Creating...' : 'Create Workflow'}\n </Button>\n </div>\n\n <p className=\"text-xs text-muted-foreground\">\n Create a workflow definition. After creating, use &quot;Push to n8n&quot; to deploy it.\n </p>\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n No workflow defined yet.\n {allowCreate && ' Click \"Create Workflow\" to add one.'}\n </p>\n )}\n </CardContent>\n </Card>\n )\n }\n\n return (\n <Card className={className}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <CardTitle className=\"text-base\">{title}</CardTitle>\n {allowStatusChange && workflowDefinitionId ? (\n <Badge \n variant={localIsActive ? 'success' : 'default'} \n size=\"sm\"\n >\n {localIsActive ? 'Active' : 'Inactive'}\n </Badge>\n ) : isActive !== undefined && (\n <Badge variant={isActive ? 'success' : 'default'} size=\"sm\">\n {isActive ? 'Active' : 'Inactive'}\n </Badge>\n )}\n {hasUnsavedChanges && (\n <Badge variant=\"warning\" size=\"sm\">Unsaved</Badge>\n )}\n {syncError && (\n <Badge variant=\"error\" size=\"sm\">Sync Error</Badge>\n )}\n </div>\n <div className=\"flex gap-1\">\n {viewMode === 'edit' ? (\n <>\n <Button onClick={cancelEditing} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button onClick={saveWorkflow} disabled={saving} variant=\"primary\" size=\"sm\">\n {saving ? 'Saving...' : 'Save JSON'}\n </Button>\n </>\n ) : (\n <>\n <div className=\"flex border border-border rounded-md overflow-hidden mr-2\">\n <button\n onClick={() => setViewMode('summary')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors ${\n viewMode === 'summary' \n ? 'bg-primary text-white' \n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <Eye size={14} />\n Summary\n </button>\n <button\n onClick={() => setViewMode('flow')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors border-l border-border ${\n viewMode === 'flow'\n ? 'bg-primary text-white'\n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <TreeStructure size={14} />\n Diagram\n </button>\n <button\n onClick={() => setViewMode('json')}\n className={`px-3 py-1.5 text-xs font-medium flex items-center gap-1.5 transition-colors border-l border-border ${\n viewMode === 'json' \n ? 'bg-primary text-white' \n : 'bg-background hover:bg-muted text-muted-foreground'\n }`}\n >\n <Code size={14} />\n JSON\n </button>\n </div>\n {editable && apiHandlers?.saveWorkflow && (\n <Button onClick={startEditing} variant=\"outline\" size=\"sm\" icon={<PencilSimple size={14} />}>\n Edit\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {message && (\n <Alert variant={message.type === 'success' ? 'success' : 'error'}>\n {message.text}\n </Alert>\n )}\n\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-muted-foreground\">\n {workflowId && (\n <span className=\"font-mono bg-muted px-2 py-1 rounded\">{workflowId}</span>\n )}\n {lastSynced && (\n <span>Synced {formatDistance(new Date(lastSynced), { addSuffix: true })}</span>\n )}\n </div>\n\n {/* Webhook URL display */}\n {webhookUrl && (\n <div className=\"flex items-center gap-2 p-2 bg-muted/50 rounded border border-border\">\n <WebhooksLogo size={14} className=\"text-muted-foreground flex-shrink-0\" />\n <code className=\"text-xs font-mono text-foreground truncate flex-1\">{webhookUrl}</code>\n <button\n onClick={() => copyToClipboard(webhookUrl, 'Webhook URL copied')}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground flex-shrink-0\"\n >\n <Copy size={12} />\n Copy\n </button>\n </div>\n )}\n\n {(allowPlatformChange || allowStatusChange) && workflowDefinitionId && hasUnsavedChanges && apiHandlers?.saveSettings && (\n <div className=\"p-3 bg-amber-50 border border-amber-200 rounded-lg space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium text-amber-800\">Unsaved changes</span>\n <div className=\"flex gap-2\">\n <Button onClick={cancelChanges} variant=\"outline\" size=\"sm\">\n Cancel\n </Button>\n <Button onClick={saveSettings} disabled={saving} variant=\"primary\" size=\"sm\">\n {saving ? 'Saving...' : 'Save'}\n </Button>\n </div>\n </div>\n \n <div className=\"flex gap-4 text-sm\">\n {allowPlatformChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Platform:</span>\n <Select\n value={localPlatform}\n onChange={(e) => handleLocalPlatformChange(e.target.value as 'n8n' | 'sim')}\n className=\"h-8 text-sm w-28\"\n >\n <option value=\"n8n\">n8n</option>\n <option value=\"sim\">Sim Studio</option>\n </Select>\n </div>\n )}\n {allowStatusChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground\">Status:</span>\n <Select\n value={localIsActive ? 'active' : 'inactive'}\n onChange={(e) => handleLocalStatusChange(e.target.value === 'active')}\n className=\"h-8 text-sm w-28\"\n >\n <option value=\"active\">Active</option>\n <option value=\"inactive\">Inactive</option>\n </Select>\n </div>\n )}\n </div>\n </div>\n )}\n\n {syncError && (\n <Alert variant=\"error\">\n <strong>Sync Error:</strong> {syncError}\n </Alert>\n )}\n\n {/* n8n sync buttons */}\n {editable && workerId && platform === 'n8n' && viewMode !== 'edit' && apiHandlers?.pushToN8n && (\n <div className=\"flex flex-wrap gap-2\">\n <Button onClick={pushToN8n} disabled={syncing} variant=\"primary\" size=\"sm\" icon={<CloudArrowUp size={16} />}>\n {syncing ? 'Pushing...' : 'Push to n8n'}\n </Button>\n {workflowId && apiHandlers?.pullFromN8n && (\n <Button onClick={pullFromN8n} disabled={pulling} variant=\"outline\" size=\"sm\" icon={<CloudArrowDown size={16} />}>\n {pulling ? 'Pulling...' : 'Pull from n8n'}\n </Button>\n )}\n {/* Switch to Sim Studio button */}\n {workflowDefinitionId && apiHandlers?.switchPlatform && (\n <Button \n onClick={() => switchPlatform('sim')} \n disabled={switchingPlatform} \n variant=\"outline\" \n size=\"sm\" \n icon={<ArrowsClockwise size={16} />}\n className=\"border-purple-300 text-purple-700 hover:bg-purple-50 hover:border-purple-400\"\n >\n {switchingPlatform ? 'Switching...' : 'Switch to Sim Studio'}\n </Button>\n )}\n </div>\n )}\n\n {/* Sim Studio sync buttons */}\n {platform === 'sim' && viewMode !== 'edit' && (\n <div className=\"flex flex-wrap gap-2\">\n {/* Push/Pull buttons (require workflow definition) */}\n {editable && workflowDefinitionId && apiHandlers?.pushToSim && (\n <Button \n onClick={pushToSim} \n disabled={pushingToSim} \n variant=\"primary\" \n size=\"sm\" \n icon={<CloudArrowUp size={16} />}\n >\n {pushingToSim ? 'Pushing...' : 'Push to Sim'}\n </Button>\n )}\n {apiHandlers?.pullFromSim && (\n <Button\n onClick={pullFromSim}\n disabled={pullingFromSim || !simWorkflowId}\n variant=\"outline\"\n size=\"sm\"\n icon={<CloudArrowDown size={16} />}\n title={!simWorkflowId ? 'No Sim workflow linked yet. Push to Sim first.' : undefined}\n >\n {pullingFromSim ? 'Pulling...' : 'Pull from Sim'}\n </Button>\n )}\n {/* Export/Backup buttons (require sim workflow id) */}\n {simWorkflowId && apiHandlers?.exportFromSim && (\n <Button \n onClick={exportFromSim} \n disabled={exporting} \n variant=\"outline\" \n size=\"sm\" \n icon={<DownloadSimple size={16} />}\n >\n {exporting ? 'Exporting...' : 'Export Backup'}\n </Button>\n )}\n {simWorkflowId && apiHandlers?.getSimBackups && (\n <Button \n onClick={showBackups} \n variant=\"outline\" \n size=\"sm\" \n icon={<ClockCounterClockwise size={16} />}\n >\n History\n </Button>\n )}\n {simStudioUrl && simWorkflowId && (\n <Button \n onClick={openInSimStudio} \n variant=\"outline\" \n size=\"sm\" \n icon={<ArrowSquareOut size={16} />}\n >\n Open in Sim\n </Button>\n )}\n </div>\n )}\n\n <div className=\"pt-2\">\n {viewMode === 'edit' ? (\n <div className=\"space-y-3\">\n {jsonError && (\n <Alert variant=\"error\">{jsonError}</Alert>\n )}\n <Textarea\n value={editedJson}\n onChange={(e) => {\n setEditedJson(e.target.value)\n setJsonError(null)\n }}\n className=\"h-[400px] font-mono text-xs\"\n />\n <p className=\"text-xs text-muted-foreground\">\n Edit the workflow JSON above. Changes will be saved to the database. Use &quot;Push to n8n&quot; to sync.\n </p>\n </div>\n ) : viewMode === 'json' ? (\n <div className=\"relative rounded-sm overflow-hidden border border-border\">\n <div className=\"flex items-center justify-between px-4 py-2 bg-[var(--black)] border-b border-gray-800\">\n <span className=\"text-xs font-medium text-gray-400\">JSON</span>\n <Button\n onClick={() => copyToClipboard(JSON.stringify(workflow, null, 2), 'JSON copied')}\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 bg-transparent border-gray-600 text-gray-300 hover:bg-gray-800 hover:text-white hover:border-gray-500\"\n icon={<Copy size={12} />}\n >\n Copy\n </Button>\n </div>\n <pre className=\"p-4 bg-[var(--black)] text-gray-100 text-xs overflow-auto max-h-[500px] font-mono\">\n {JSON.stringify(workflow, null, 2)}\n </pre>\n </div>\n ) : viewMode === 'flow' ? (\n <Suspense fallback={loadingComponent || DefaultLoading}>\n <WorkflowFlow workflow={workflow as any} height={380} platform={platform} />\n </Suspense>\n ) : viewMode === 'backups' ? (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h4 className=\"text-sm font-medium\">\n {diffMode ? 'Compare Versions' : 'Backup History'}\n </h4>\n <div className=\"flex items-center gap-2\">\n {!diffMode && backups.length >= 2 && apiHandlers?.getBackupState && (\n <Button\n onClick={startDiffMode}\n variant=\"outline\"\n size=\"sm\"\n icon={<ArrowsLeftRight size={14} />}\n >\n Compare\n </Button>\n )}\n {diffMode && (\n <Button\n onClick={exitDiffMode}\n variant=\"outline\"\n size=\"sm\"\n icon={<X size={14} />}\n >\n Cancel\n </Button>\n )}\n <Button\n onClick={() => { exitDiffMode(); setViewMode('summary'); }}\n variant=\"outline\"\n size=\"sm\"\n >\n Back to Summary\n </Button>\n </div>\n </div>\n\n {/* Diff mode: version selection and results */}\n {diffMode && (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"p-3 bg-muted/50 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">From (older)</p>\n <Select\n value={selectedBackupA || ''}\n onChange={(e) => loadBackupForDiff(e.target.value, 'A')}\n disabled={loadingDiff}\n className=\"w-full\"\n >\n <option value=\"\">Select version...</option>\n {backups.map((b) => (\n <option key={b.id} value={b.id} disabled={b.id === selectedBackupB}>\n v{b.version} - {b.versionLabel || b.workflowName}\n </option>\n ))}\n </Select>\n </div>\n <div className=\"p-3 bg-muted/50 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">To (newer)</p>\n <Select\n value={selectedBackupB || ''}\n onChange={(e) => loadBackupForDiff(e.target.value, 'B')}\n disabled={loadingDiff}\n className=\"w-full\"\n >\n <option value=\"\">Select version...</option>\n {backups.map((b) => (\n <option key={b.id} value={b.id} disabled={b.id === selectedBackupA}>\n v{b.version} - {b.versionLabel || b.workflowName}\n </option>\n ))}\n </Select>\n </div>\n </div>\n\n {/* Diff results */}\n {loadingDiff ? (\n <div className=\"py-4 text-center text-muted-foreground\">Loading versions...</div>\n ) : backupStateA && backupStateB ? (\n (() => {\n const diff = computeWorkflowDiff(backupStateA, backupStateB)\n return (\n <div className=\"space-y-3\">\n <div className=\"p-3 bg-muted/30 rounded border border-border\">\n <p className=\"text-sm font-medium mb-2\">Changes Summary</p>\n <p className=\"text-sm text-muted-foreground\">{diff.summary}</p>\n </div>\n\n {diff.blocksAdded.length > 0 && (\n <div className=\"p-3 bg-green-500/10 rounded border border-green-500/30\">\n <div className=\"flex items-center gap-2 text-green-600 dark:text-green-400 mb-2\">\n <Plus size={14} />\n <span className=\"text-xs font-medium\">Blocks Added ({diff.blocksAdded.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksAdded.map((id) => {\n const block = backupStateB?.blocks?.[id]\n return (\n <Badge key={id} variant=\"success\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {diff.blocksRemoved.length > 0 && (\n <div className=\"p-3 bg-red-500/10 rounded border border-red-500/30\">\n <div className=\"flex items-center gap-2 text-red-600 dark:text-red-400 mb-2\">\n <Minus size={14} />\n <span className=\"text-xs font-medium\">Blocks Removed ({diff.blocksRemoved.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksRemoved.map((id) => {\n const block = backupStateA?.blocks?.[id]\n return (\n <Badge key={id} variant=\"error\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {diff.blocksModified.length > 0 && (\n <div className=\"p-3 bg-amber-500/10 rounded border border-amber-500/30\">\n <div className=\"flex items-center gap-2 text-amber-600 dark:text-amber-400 mb-2\">\n <Pencil size={14} />\n <span className=\"text-xs font-medium\">Blocks Modified ({diff.blocksModified.length})</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {diff.blocksModified.map((id) => {\n const block = backupStateB?.blocks?.[id]\n return (\n <Badge key={id} variant=\"warning\" size=\"sm\">\n {block?.name || id}\n </Badge>\n )\n })}\n </div>\n </div>\n )}\n\n {(diff.edgesAdded > 0 || diff.edgesRemoved > 0) && (\n <div className=\"p-3 bg-muted/30 rounded border border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-1\">Connection Changes</p>\n <div className=\"flex gap-3 text-sm\">\n {diff.edgesAdded > 0 && (\n <span className=\"text-green-600 dark:text-green-400\">+{diff.edgesAdded} added</span>\n )}\n {diff.edgesRemoved > 0 && (\n <span className=\"text-red-600 dark:text-red-400\">-{diff.edgesRemoved} removed</span>\n )}\n </div>\n </div>\n )}\n </div>\n )\n })()\n ) : selectedBackupA || selectedBackupB ? (\n <div className=\"py-4 text-center text-muted-foreground text-sm\">\n Select both versions to compare\n </div>\n ) : null}\n </div>\n )}\n\n {/* Regular backup list (when not in diff mode) */}\n {!diffMode && (\n <>\n {loadingBackups ? (\n <div className=\"py-8 text-center text-muted-foreground\">Loading backups...</div>\n ) : backups.length === 0 ? (\n <div className=\"py-8 text-center text-muted-foreground\">\n <ClockCounterClockwise size={32} className=\"mx-auto mb-2 opacity-50\" />\n <p>No backups yet</p>\n <p className=\"text-xs mt-1\">Click &quot;Export from Sim&quot; to create a backup</p>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {backups.map((backup, index) => (\n <div\n key={backup.id}\n className=\"flex items-center justify-between p-3 bg-muted/50 rounded border border-border\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded bg-primary/10 text-primary text-sm font-semibold\">\n v{backup.version}\n </div>\n <div>\n <p className=\"text-sm font-medium\">\n {backup.versionLabel || backup.workflowName}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {formatDistance(new Date(backup.exportedAt), { addSuffix: true })}\n {backup.isDeployed && (\n <Badge variant=\"success\" size=\"sm\" className=\"ml-2\">Deployed</Badge>\n )}\n </p>\n </div>\n </div>\n {index < backups.length - 1 && apiHandlers?.getBackupState && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n startDiffMode()\n loadBackupForDiff(backups[index + 1].id, 'A')\n loadBackupForDiff(backup.id, 'B')\n }}\n icon={<ArrowsLeftRight size={14} />}\n >\n Diff\n </Button>\n )}\n </div>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n ) : (\n platform === 'n8n' \n ? <N8nWorkflowSummary workflow={workflow as N8nWorkflow} showFlow={false} />\n : <SimWorkflowSummary workflow={workflow as SimWorkflow} />\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default WorkflowViewer\n"]}