reend-components 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/lib/utils.ts","../../src/components/ui/tooltip.tsx","../../src/components/ui/toast.tsx","../../src/hooks/use-toast.ts","../../src/components/ui/toaster.tsx","../../src/components/ui/sonner.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\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.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md: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 border p-6 pr-8 shadow-lg 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-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<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.ElementRef<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 border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive 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.ElementRef<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-2 top-2 p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<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.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", 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\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","import * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"../components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 5000;\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>>();\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\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\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 // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\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","import { useToast } from \"../../hooks/use-toast\";\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./toast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import { Toaster as Sonner, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ theme = \"dark\", ...props }: ToasterProps) => {\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster, toast };\n"],"names":["cn","inputs","twMerge","clsx","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","React","className","sideOffset","props","ref","jsx","ToastProvider","ToastPrimitives","ToastViewport","toastVariants","cva","Toast","variant","ToastAction","ToastClose","X","ToastTitle","ToastDescription","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","id","update","dismiss","open","useToast","setState","index","Toaster","toasts","title","description","jsxs","theme","Sonner"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/lib/utils.ts","../../src/components/ui/tooltip.tsx","../../src/components/ui/toast.tsx","../../src/hooks/use-toast.ts","../../src/components/ui/toaster.tsx","../../src/components/ui/sonner.tsx","../../src/components/ui/button.tsx","../../src/components/ui/badge.tsx","../../src/components/ui/card.tsx","../../src/components/ui/input.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/checkbox.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/switch.tsx","../../src/components/ui/select.tsx","../../src/components/ui/avatar.tsx","../../src/components/ui/progress.tsx","../../src/components/ui/accordion.tsx","../../src/components/ui/tabs.tsx","../../src/components/ui/popover.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/signature/glitch-text.tsx","../../src/components/ui/signature/diamond-loader.tsx","../../src/components/ui/signature/tactical-panel.tsx","../../src/components/ui/signature/holo-card.tsx","../../src/components/ui/signature/data-stream.tsx","../../src/components/ui/signature/tactical-badge.tsx","../../src/components/ui/signature/warning-banner.tsx","../../src/components/ui/signature/scan-divider.tsx","../../src/components/ui/signature/coordinate-tag.tsx","../../src/components/ui/signature/radar-chart.tsx","../../src/components/ui/signature/hud-overlay.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\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.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md: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 border p-6 pr-8 shadow-lg 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-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<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.ElementRef<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 border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive 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.ElementRef<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-2 top-2 p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<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.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", 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\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","import * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"../components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 5000;\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>>();\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\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\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 // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\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","import { useToast } from \"../../hooks/use-toast\";\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./toast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import { Toaster as Sonner, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ theme = \"dark\", ...props }: ToasterProps) => {\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster, toast };\n","import * as React from \"react\";\nimport { Slot } 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 font-display font-bold uppercase tracking-[0.1em] transition-all duration-150 select-none whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-40\",\n {\n variants: {\n variant: {\n primary:\n \"clip-corner bg-primary text-primary-foreground hover:brightness-110 hover:shadow-glow active:brightness-90\",\n secondary:\n \"clip-corner border border-white/25 text-card-foreground bg-transparent hover:border-primary/60 hover:text-primary active:bg-primary/5\",\n ghost:\n \"bg-transparent text-muted-foreground hover:text-primary hover:bg-primary/5 active:bg-primary/10\",\n danger:\n \"clip-corner bg-destructive text-destructive-foreground hover:brightness-110 active:brightness-90\",\n link: \"bg-transparent text-primary underline-offset-4 hover:underline h-auto p-0\",\n icon: \"bg-white/5 border border-white/10 text-muted-foreground hover:border-primary/30 hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n xs: \"h-7 px-3 text-[11px]\",\n sm: \"h-8 px-4 text-xs\",\n md: \"h-11 px-7 text-sm\",\n lg: \"h-[52px] px-9 text-base\",\n xl: \"h-[60px] px-12 text-lg\",\n icon: \"h-10 w-10 p-0\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /**\n * When true, renders the button as its child element (Radix Slot pattern).\n * Useful for wrapping `<a>` or other elements with button styling.\n * @example <Button asChild><a href=\"/page\">Go</a></Button>\n */\n asChild?: boolean;\n /**\n * Displays a diamond spinner and disables interaction.\n * Sets `aria-busy` for accessibility.\n */\n loading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n disabled,\n children,\n type = \"button\",\n ...props\n },\n ref,\n ) => {\n if (asChild) {\n return (\n <Slot\n ref={ref as React.ForwardedRef<HTMLElement>}\n className={cn(buttonVariants({ variant, size }), className)}\n aria-disabled={disabled || undefined}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n buttonVariants({ variant, size }),\n loading && \"pointer-events-none opacity-80\",\n className,\n )}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <span\n className=\"h-4 w-4 shrink-0 border-2 border-current clip-corner-sm animate-diamond-spin\"\n aria-hidden=\"true\"\n />\n )}\n {children}\n </button>\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1.5 border px-2.5 py-0.5 font-mono text-[10px] font-semibold tracking-[0.12em] uppercase transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-white/15 text-muted-foreground bg-white/5\",\n primary: \"border-primary/40 text-primary bg-primary/10\",\n info: \"border-ef-blue/40 text-ef-blue bg-ef-blue/10\",\n success: \"border-ef-green/40 text-ef-green bg-ef-green/10\",\n warning: \"border-ef-orange/40 text-ef-orange bg-ef-orange/10\",\n danger: \"border-destructive/40 text-destructive bg-destructive/10\",\n purple: \"border-ef-purple/40 text-ef-purple bg-ef-purple/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Displays a × remove button at the end of the badge.\n * Use together with `onRemove` to handle removal.\n */\n removable?: boolean;\n /**\n * Called when the × remove button is clicked.\n * Only fires when `removable` is true.\n */\n onRemove?: () => void;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, removable, onRemove, children, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(badgeVariants({ variant }), removable && \"pr-1\", className)}\n {...props}\n >\n {children}\n {removable && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n className=\"ml-0.5 inline-flex items-center justify-center leading-none opacity-50 hover:opacity-100 transition-opacity focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-current\"\n aria-label=\"Remove\"\n tabIndex={0}\n >\n ×\n </button>\n )}\n </span>\n ),\n);\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n// ── Corner brackets via Tailwind before:/after: utilities ─────────────────────\nconst BRACKET_BASE =\n \"before:content-[''] before:absolute before:-top-px before:-left-px \" +\n \"before:w-6 before:h-6 before:border-t-2 before:border-l-2 \" +\n \"before:border-primary/40 before:pointer-events-none \" +\n \"after:content-[''] after:absolute after:-bottom-px after:-right-px \" +\n \"after:w-6 after:h-6 after:border-b-2 after:border-r-2 \" +\n \"after:border-primary/40 after:pointer-events-none\";\n\nconst cardVariants = cva(\n [\n \"relative bg-surface-1 border border-border transition-all duration-300\",\n BRACKET_BASE,\n ].join(\" \"),\n {\n variants: {\n hoverable: {\n true: [\n \"cursor-pointer\",\n \"hover:-translate-y-1\",\n \"hover:shadow-[0_16px_48px_rgba(0,0,0,0.5)]\",\n \"hover:border-primary/20\",\n \"hover:before:border-primary/60\",\n \"hover:after:border-primary/60\",\n ].join(\" \"),\n false: \"\",\n },\n selected: {\n true: \"border-2 border-primary/40 bg-primary/[0.06]\",\n false: \"\",\n },\n },\n defaultVariants: {\n hoverable: false,\n selected: false,\n },\n },\n);\n\n// ── CardProps ─────────────────────────────────────────────────────────────────\n\nexport interface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n /**\n * Adds hover lift effect — `translateY(-4px)` + deep shadow + yellow border tint.\n * Bracket corners intensify on hover.\n */\n hoverable?: boolean;\n /**\n * Highlights card with primary border + subtle yellow background.\n * Use for selected/active state in selection grids.\n */\n selected?: boolean;\n}\n\n// ── Card (root) ───────────────────────────────────────────────────────────────\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, hoverable, selected, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ hoverable, selected }), className)}\n {...props}\n />\n ),\n);\nCard.displayName = \"Card\";\n\n// ── CardHeader ────────────────────────────────────────────────────────────────\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-start justify-between gap-4 p-5\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\n// ── CardMeta ──────────────────────────────────────────────────────────────────\nconst CardMeta = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"font-mono text-[10px] tracking-[0.15em] uppercase text-primary mb-2\",\n className,\n )}\n {...props}\n />\n));\nCardMeta.displayName = \"CardMeta\";\n\n// ── CardTitle ─────────────────────────────────────────────────────────────────\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"font-display text-sm font-bold tracking-[0.02em] uppercase text-foreground\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\n// ── CardDescription ───────────────────────────────────────────────────────────\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-muted-foreground leading-relaxed\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\n// ── CardBody ──────────────────────────────────────────────────────────────────\nconst CardBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-5\", className)} {...props} />\n));\nCardBody.displayName = \"CardBody\";\n\n// ── CardFooter ────────────────────────────────────────────────────────────────\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-3 px-5 py-4 border-t border-border\",\n className,\n )}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\n// ── Exports ───────────────────────────────────────────────────────────────────\n\nexport {\n Card,\n cardVariants,\n CardHeader,\n CardMeta,\n CardTitle,\n CardDescription,\n CardBody,\n CardFooter,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n// ── Wrapper variants ──────────────────────────────────────────────────────────\nconst inputWrapperVariants = cva(\n \"relative flex items-center border transition-all duration-150 bg-surface-1\",\n {\n variants: {\n state: {\n default: [\n \"border-white/[0.12]\",\n \"hover:border-white/20\",\n \"focus-within:border-primary\",\n \"focus-within:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]\",\n ].join(\" \"),\n error: [\n \"border-ef-red\",\n \"focus-within:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]\",\n ].join(\" \"),\n success: \"border-ef-green\",\n },\n size: {\n sm: \"h-8\",\n md: \"h-11\",\n lg: \"h-[52px]\",\n },\n },\n defaultVariants: {\n state: \"default\",\n size: \"md\",\n },\n },\n);\n\n// ── InputProps ────────────────────────────────────────────────────────────────\nexport interface InputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> {\n state?: \"default\" | \"error\" | \"success\";\n size?: \"sm\" | \"md\" | \"lg\";\n leftElement?: React.ReactNode;\n rightElement?: React.ReactNode;\n}\n\n// ── Input ──────────────────────────────────────────────────────────────────────\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n state = \"default\",\n size = \"md\",\n leftElement,\n rightElement,\n disabled,\n ...props\n },\n ref,\n ) => {\n const pl = leftElement ? \"pl-2\" : size === \"sm\" ? \"pl-2\" : \"pl-3\";\n const pr = rightElement ? \"pr-2\" : size === \"sm\" ? \"pr-2\" : \"pr-3\";\n\n return (\n <div\n className={cn(\n inputWrapperVariants({ state, size }),\n disabled &&\n \"opacity-40 cursor-not-allowed pointer-events-none bg-background\",\n className,\n )}\n >\n {leftElement && (\n <span className=\"pl-3 flex-shrink-0 text-muted-foreground flex items-center\">\n {leftElement}\n </span>\n )}\n <input\n ref={ref}\n disabled={disabled}\n className={cn(\n \"h-full flex-1 min-w-0 bg-transparent text-foreground text-sm font-mono\",\n \"placeholder:text-muted-foreground focus:outline-none\",\n pl,\n pr,\n )}\n {...props}\n />\n {rightElement && (\n <span className=\"pr-3 flex-shrink-0 text-muted-foreground flex items-center\">\n {rightElement}\n </span>\n )}\n </div>\n );\n },\n);\nInput.displayName = \"Input\";\n\n// ── Label ─────────────────────────────────────────────────────────────────────\n\nconst Label = React.forwardRef<\n HTMLLabelElement,\n React.LabelHTMLAttributes<HTMLLabelElement>\n>(({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nLabel.displayName = \"Label\";\n\n// ── HelperText ────────────────────────────────────────────────────────────────\n\nexport interface HelperTextProps extends React.HTMLAttributes<HTMLParagraphElement> {\n state?: \"default\" | \"error\" | \"success\";\n}\n\nconst HelperText = React.forwardRef<HTMLParagraphElement, HelperTextProps>(\n ({ className, state = \"default\", ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\n \"text-[12px] leading-tight\",\n state === \"error\" && \"text-destructive\",\n state === \"success\" && \"text-ef-green\",\n state === \"default\" && \"text-muted-foreground\",\n className,\n )}\n {...props}\n />\n ),\n);\nHelperText.displayName = \"HelperText\";\n\n// ── Exports ───────────────────────────────────────────────────────────────────\n\nexport { Input, inputWrapperVariants, Label, HelperText };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n// ── Textarea variants ─────────────────────────────────────────────────────────\n\nconst textareaVariants = cva(\n [\n \"w-full resize-y border bg-surface-1 text-foreground\",\n \"placeholder:text-muted-foreground font-mono text-sm\",\n \"transition-all duration-150 focus:outline-none\",\n \"min-h-[120px] px-3 py-2.5\",\n \"disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-background disabled:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n state: {\n default: [\n \"border-white/[0.12]\",\n \"hover:border-white/20\",\n \"focus:border-primary\",\n \"focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]\",\n ].join(\" \"),\n error: [\n \"border-ef-red\",\n \"focus:shadow-[0_0_0_3px_rgba(255,71,87,0.1)]\",\n ].join(\" \"),\n success: \"border-ef-green\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n },\n);\n\n// ── TextareaProps ─────────────────────────────────────────────────────────────\n\nexport interface TextareaProps\n extends\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {\n state?: \"default\" | \"error\" | \"success\";\n showCount?: boolean;\n}\n\n// ── Textarea ──────────────────────────────────────────────────────────────────\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n { className, state = \"default\", showCount, maxLength, onChange, ...rest },\n ref,\n ) => {\n const [count, setCount] = React.useState(() => {\n const initial = rest.value ?? rest.defaultValue ?? \"\";\n return String(initial).length;\n });\n\n React.useEffect(() => {\n if (rest.value !== undefined) {\n setCount(String(rest.value).length);\n }\n }, [rest.value]);\n\n const counterColorClass = (): string => {\n if (maxLength !== undefined && count > maxLength)\n return \"text-destructive\";\n if (maxLength !== undefined && count / maxLength >= 0.8)\n return \"text-ef-orange\";\n return \"text-muted-foreground\";\n };\n\n return (\n <div className=\"relative\">\n <textarea\n ref={ref}\n maxLength={maxLength}\n onChange={(e) => {\n setCount(e.target.value.length);\n onChange?.(e);\n }}\n className={cn(\n textareaVariants({ state }),\n showCount && \"pb-7\",\n className,\n )}\n {...rest}\n />\n {showCount && (\n <span\n className={cn(\n \"absolute bottom-2 right-3 font-mono text-[11px] pointer-events-none select-none\",\n counterColorClass(),\n )}\n >\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </span>\n )}\n </div>\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\n// ── Exports ───────────────────────────────────────────────────────────────────\nexport { Textarea, textareaVariants };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface CheckboxProps extends React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n> {\n label?: string;\n helperText?: string;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, label, helperText, id, ...props }, ref) => {\n const generatedId = React.useId();\n const checkboxId = id ?? generatedId;\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n ref={ref}\n id={checkboxId}\n className={cn(\n \"group peer h-[18px] w-[18px] shrink-0 border-2 border-white/25 bg-transparent\",\n \"cursor-pointer transition-all duration-150\",\n \"hover:border-primary/60\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n \"data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n \"data-[state=indeterminate]:bg-primary/50 data-[state=indeterminate]:border-primary\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className=\"hidden group-data-[state=checked]:inline leading-none text-primary-foreground text-[10px] font-bold select-none\">\n ◆\n </span>\n <span className=\"hidden group-data-[state=indeterminate]:inline leading-none text-primary-foreground text-sm font-bold select-none\">\n −\n </span>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none\"\n >\n {label}\n </label>\n )}\n </div>\n {helperText && (\n <p className=\"text-[12px] text-muted-foreground pl-[30px]\">\n {helperText}\n </p>\n )}\n </div>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"../../lib/utils\";\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Root\n>;\n\nexport interface RadioGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Item\n> {\n label?: string;\n helperText?: string;\n}\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex flex-col gap-3\", className)}\n {...props}\n />\n));\nRadioGroup.displayName = \"RadioGroup\";\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, label, helperText, id, ...props }, ref) => {\n const generatedId = React.useId();\n const itemId = id ?? generatedId;\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-3\">\n <RadioGroupPrimitive.Item\n ref={ref}\n id={itemId}\n className={cn(\n \"group peer cursor-pointer shrink-0 flex items-center justify-center\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n className,\n )}\n {...props}\n >\n <span className=\"text-[18px] leading-none select-none transition-colors duration-150 group-data-[state=unchecked]:inline group-data-[state=checked]:hidden text-muted-foreground/50 group-hover:text-muted-foreground group-data-[disabled]:pointer-events-none\">\n ◇\n </span>\n <span className=\"text-[18px] leading-none select-none transition-colors duration-150 group-data-[state=checked]:inline group-data-[state=unchecked]:hidden text-primary\">\n ◆\n </span>\n </RadioGroupPrimitive.Item>\n {label && (\n <label\n htmlFor={itemId}\n className=\"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none leading-none\"\n >\n {label}\n </label>\n )}\n </div>\n {helperText && (\n <p className=\"text-[12px] text-muted-foreground pl-[30px]\">\n {helperText}\n </p>\n )}\n </div>\n );\n});\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<\n typeof SwitchPrimitive.Root\n> {\n label?: string;\n offLabel?: string;\n onLabel?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, label, offLabel, onLabel, id, checked, ...props }, ref) => {\n const generatedId = React.useId();\n const switchId = id ?? generatedId;\n\n return (\n <div className=\"flex items-center gap-3\">\n {(offLabel || onLabel) && (\n <span className=\"text-[11px] font-mono uppercase tracking-widest text-muted-foreground select-none min-w-[32px] text-right\">\n {checked ? onLabel : offLabel}\n </span>\n )}\n <SwitchPrimitive.Root\n ref={ref}\n id={switchId}\n checked={checked}\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-none\",\n \"border border-white/15 bg-white/10\",\n \"transition-all duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n \"data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 bg-white shadow-sm ring-0\",\n \"transition-transform duration-200\",\n \"data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5\",\n )}\n />\n </SwitchPrimitive.Root>\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm text-foreground cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-40 select-none\"\n >\n {label}\n </label>\n )}\n </div>\n );\n});\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch };\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Root, Group, Value ─────────────────────────────────────────────────── */\n\nconst Select = SelectPrimitive.Root;\nSelect.displayName = \"Select\";\n\nconst SelectGroup = SelectPrimitive.Group;\nSelectGroup.displayName = \"SelectGroup\";\n\nconst SelectValue = SelectPrimitive.Value;\nSelectValue.displayName = \"SelectValue\";\n\n/* ── Trigger ─────────────────────────────────────────────────────────────── */\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"relative flex h-11 w-full items-center justify-between\",\n \"border border-white/[0.12] bg-surface-1 px-3\",\n \"font-mono text-sm text-foreground\",\n \"transition-all duration-150\",\n \"hover:border-white/20\",\n \"focus:outline-none focus:border-primary focus:shadow-[0_0_0_3px_rgba(255,212,41,0.1)]\",\n \"disabled:cursor-not-allowed disabled:opacity-40 disabled:pointer-events-none\",\n \"data-[placeholder]:text-muted-foreground\",\n \"[&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <span className=\"shrink-0 text-muted-foreground text-xs ml-2 select-none\">\n ▾\n </span>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"SelectTrigger\";\n\n/* ── ScrollUpButton ─────────────────────────────────────────────────────── */\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs\",\n className,\n )}\n {...props}\n >\n ▴\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = \"SelectScrollUpButton\";\n\n/* ── ScrollDownButton ────────────────────────────────────────────────────── */\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground text-xs\",\n className,\n )}\n {...props}\n >\n ▾\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = \"SelectScrollDownButton\";\n\n/* ── Content (dropdown panel) ────────────────────────────────────────────── */\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-[var(--z-overlay,50)] min-w-[8rem] overflow-hidden\",\n \"bg-surface-2 border border-white/10 shadow-lg\",\n \"data-[state=open]:animate-fade-in-up\",\n \"data-[state=closed]:animate-fade-in-up\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"SelectContent\";\n\n/* ── Label ───────────────────────────────────────────────────────────────── */\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\n \"font-mono text-[10px] uppercase tracking-widest text-muted-foreground/60 px-4 py-1.5\",\n className,\n )}\n {...props}\n />\n));\nSelectLabel.displayName = \"SelectLabel\";\n\n/* ── Item ────────────────────────────────────────────────────────────────── */\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<\n typeof SelectPrimitive.Item\n> {\n danger?: boolean;\n}\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, danger, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-pointer select-none items-center px-4 py-2 text-sm text-muted-foreground\",\n \"outline-none transition-colors duration-100\",\n \"focus:bg-primary/6 focus:text-primary\",\n \"data-[state=checked]:text-primary data-[state=checked]:font-medium\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-40\",\n danger\n ? \"hover:bg-destructive/6 hover:text-destructive focus:bg-destructive/6 focus:text-destructive\"\n : \"hover:bg-primary/6 hover:text-primary\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = \"SelectItem\";\n\n/* ── Separator ───────────────────────────────────────────────────────────── */\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"my-1 h-px bg-white/8\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Size variants ───────────────────────────────────────────────────────── */\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 overflow-hidden clip-corner-sm\",\n {\n variants: {\n size: {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-14 w-14\",\n xl: \"h-20 w-20\",\n \"2xl\": \"h-[120px] w-[120px]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n/* ── Status dot colors ───────────────────────────────────────────────────── */\n\nconst statusColors: Record<string, string> = {\n online: \"text-ef-green\",\n offline: \"text-muted-foreground/50\",\n busy: \"text-destructive\",\n away: \"text-ef-orange\",\n};\n\n/* ── Avatar (root) ───────────────────────────────────────────────────────── */\n\nexport interface AvatarProps\n extends\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, status, ...props }, ref) => (\n <div className=\"relative inline-flex shrink-0\">\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...props}\n />\n {status && (\n <span\n className={cn(\n \"absolute -bottom-0.5 -right-0.5 text-[10px] leading-none select-none\",\n statusColors[status],\n )}\n aria-label={status}\n >\n ◆\n </span>\n )}\n </div>\n));\nAvatar.displayName = \"Avatar\";\n\n/* ── AvatarImage ─────────────────────────────────────────────────────────── */\n\nexport type AvatarImageProps = React.ComponentPropsWithoutRef<\n typeof AvatarPrimitive.Image\n>;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n AvatarImageProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full object-cover\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = \"AvatarImage\";\n\n/* ── AvatarFallback ──────────────────────────────────────────────────────── */\n\nexport type AvatarFallbackProps = React.ComponentPropsWithoutRef<\n typeof AvatarPrimitive.Fallback\n>;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n AvatarFallbackProps\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center\",\n \"bg-surface-2 font-display text-muted-foreground uppercase text-center\",\n \"text-[clamp(8px,35%,28px)]\",\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = \"AvatarFallback\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Avatar, AvatarImage, AvatarFallback, avatarVariants };\n","import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Track variants (height / size) ─────────────────────────────────────── */\n\nconst progressTrackVariants = cva(\n \"relative w-full overflow-hidden bg-white/8\",\n {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-1.5\",\n lg: \"h-2.5\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n/* ── Fill color variants ─────────────────────────────────────────────────── */\n\nconst progressFillVariants = cva(\n \"h-full w-full flex-1 transition-all duration-500 ease-smooth origin-left\",\n {\n variants: {\n variant: {\n default: \"bg-primary\",\n success: \"bg-ef-green\",\n danger: \"bg-destructive\",\n info: \"bg-ef-blue\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface ProgressProps\n extends\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>,\n VariantProps<typeof progressTrackVariants>,\n VariantProps<typeof progressFillVariants> {\n value?: number;\n showLabel?: boolean;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(({ className, value, showLabel, size, variant, ...props }, ref) => {\n const isIndeterminate = value === undefined || value === null;\n const clampedValue = isIndeterminate\n ? undefined\n : Math.min(100, Math.max(0, value));\n\n return (\n <div className=\"w-full space-y-1\">\n {showLabel && !isIndeterminate && (\n <div className=\"flex justify-end\">\n <span className=\"font-mono text-[11px] text-muted-foreground\">\n {clampedValue}%\n </span>\n </div>\n )}\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(progressTrackVariants({ size }), className)}\n value={clampedValue}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n isIndeterminate\n ? \"h-full animate-skeleton\"\n : progressFillVariants({ variant }),\n )}\n style={\n isIndeterminate\n ? undefined\n : { transform: `translateX(-${100 - (clampedValue ?? 0)}%)` }\n }\n />\n </ProgressPrimitive.Root>\n </div>\n );\n});\n\nProgress.displayName = \"Progress\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Progress, progressTrackVariants, progressFillVariants };\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Root ────────────────────────────────────────────────────────────────── */\n\nconst Accordion = AccordionPrimitive.Root;\nAccordion.displayName = \"Accordion\";\n\n/* ── Item ────────────────────────────────────────────────────────────────── */\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 border-white/6\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\n/* ── Trigger ─────────────────────────────────────────────────────────────── */\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 \"group flex flex-1 items-center justify-between px-4 py-3\",\n \"font-display text-[13px] font-semibold uppercase tracking-wider text-foreground\",\n \"transition-all duration-200\",\n \"hover:text-primary hover:bg-white/[0.02]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n className,\n )}\n {...props}\n >\n {children}\n <span\n className={cn(\n \"font-mono text-base leading-none select-none shrink-0 ml-2\",\n \"text-muted-foreground transition-colors duration-200\",\n \"group-hover:text-primary\",\n \"group-data-[state=open]:hidden group-data-[state=closed]:inline\",\n )}\n aria-hidden\n >\n +\n </span>\n <span\n className={cn(\n \"font-mono text-base leading-none select-none shrink-0 ml-2\",\n \"text-primary transition-colors duration-200\",\n \"group-data-[state=open]:inline group-data-[state=closed]:hidden\",\n )}\n aria-hidden\n >\n −\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\n/* ── Content ─────────────────────────────────────────────────────────────── */\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 data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up\"\n {...props}\n >\n <div className={cn(\"px-4 pb-4 pt-1 text-sm text-muted-foreground\", className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Root ────────────────────────────────────────────────────────────────── */\n\nconst Tabs = TabsPrimitive.Root;\nTabs.displayName = \"Tabs\";\n\n/* ── List variants ───────────────────────────────────────────────────────── */\n\nconst tabsListVariants = cva(\"inline-flex items-center\", {\n variants: {\n variant: {\n underline: \"border-b border-white/10 gap-0\",\n pill: \"gap-1 bg-surface-1 p-1\",\n bordered: \"border border-white/10 gap-0\",\n },\n },\n defaultVariants: { variant: \"underline\" },\n});\n\nexport interface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n));\nTabsList.displayName = \"TabsList\";\n\n/* ── Trigger variants ────────────────────────────────────────────────────── */\n\nconst tabsTriggerVariants = cva(\n [\n \"font-display text-[13px] font-semibold uppercase tracking-wider\",\n \"transition-all duration-150 cursor-pointer\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-inset\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n ],\n {\n variants: {\n variant: {\n underline: [\n \"px-4 py-2.5 text-muted-foreground border-b-2 border-transparent -mb-px\",\n \"hover:text-foreground\",\n \"data-[state=active]:text-primary data-[state=active]:border-b-primary\",\n ],\n pill: [\n \"px-4 py-1.5 text-muted-foreground\",\n \"hover:text-foreground\",\n \"data-[state=active]:bg-surface-3 data-[state=active]:text-primary\",\n ],\n bordered: [\n \"px-4 py-2.5 text-muted-foreground border-r border-white/10 last:border-r-0\",\n \"hover:text-foreground hover:bg-white/[0.03]\",\n \"data-[state=active]:text-primary data-[state=active]:bg-white/[0.05]\",\n ],\n },\n },\n defaultVariants: { variant: \"underline\" },\n },\n);\n\nexport interface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, variant, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(tabsTriggerVariants({ variant }), className)}\n {...props}\n />\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\n/* ── Content ─────────────────────────────────────────────────────────────── */\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-4 text-sm text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = \"TabsContent\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n tabsListVariants,\n tabsTriggerVariants,\n};\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Root, Trigger, Anchor ───────────────────────────────────────────────── */\n\nconst Popover = PopoverPrimitive.Root;\nPopover.displayName = \"Popover\";\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nPopoverAnchor.displayName = \"PopoverAnchor\";\n\n/* ── Content ─────────────────────────────────────────────────────────────── */\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 6, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[200px]\",\n \"bg-surface-2 border border-white/10 shadow-lg\",\n \"p-4\",\n \"data-[state=open]:animate-fade-in-up\",\n \"data-[state=closed]:animate-fade-in-up\",\n \"focus:outline-none\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = \"PopoverContent\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Root, Trigger, Portal, Close ────────────────────────────────────────── */\n\nconst Dialog = DialogPrimitive.Root;\nDialog.displayName = \"Dialog\";\n\nconst DialogTrigger = DialogPrimitive.Trigger;\nDialogTrigger.displayName = \"DialogTrigger\";\n\nconst DialogPortal = DialogPrimitive.Portal;\nDialogPortal.displayName = \"DialogPortal\";\n\nconst DialogClose = DialogPrimitive.Close;\nDialogClose.displayName = \"DialogClose\";\n\n/* ── Overlay ─────────────────────────────────────────────────────────────── */\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/75 backdrop-blur-sm\",\n \"data-[state=open]:animate-fade-in-up\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\n/* ── Content size variants ───────────────────────────────────────────────── */\n\nconst dialogContentVariants = cva(\n [\n \"fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2\",\n \"bg-surface-2 border border-white/10 shadow-xl\",\n \"flex flex-col\",\n \"data-[state=open]:animate-fade-in-up\",\n \"focus:outline-none\",\n ],\n {\n variants: {\n size: {\n sm: \"w-full max-w-sm\",\n md: \"w-full max-w-lg\",\n lg: \"w-full max-w-2xl\",\n xl: \"w-full max-w-4xl\",\n fullscreen: \"w-screen h-screen max-w-none\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport interface DialogContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof dialogContentVariants> {}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, size, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(dialogContentVariants({ size }), className)}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = \"DialogContent\";\n\n/* ── Header ──────────────────────────────────────────────────────────────── */\n\nfunction DialogHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"flex shrink-0 items-center justify-between border-b border-white/8 px-6 py-4\",\n className,\n )}\n {...props}\n />\n );\n}\nDialogHeader.displayName = \"DialogHeader\";\n\n/* ── Footer ──────────────────────────────────────────────────────────────── */\n\nfunction DialogFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"flex shrink-0 items-center justify-end gap-3 border-t border-white/8 px-6 py-4\",\n className,\n )}\n {...props}\n />\n );\n}\nDialogFooter.displayName = \"DialogFooter\";\n\n/* ── Title ───────────────────────────────────────────────────────────────── */\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 \"font-display text-base font-semibold uppercase tracking-wider text-foreground\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = \"DialogTitle\";\n\n/* ── Description ─────────────────────────────────────────────────────────── */\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(\"flex-1 overflow-y-auto px-6 py-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = \"DialogDescription\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport {\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n dialogContentVariants,\n};\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/* ── Variants ────────────────────────────────────────────────────────────── */\n\nconst separatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n default: \"bg-white/10\",\n subtle: \"bg-white/5\",\n strong: \"bg-white/25\",\n glow: \"bg-gradient-to-r from-transparent via-primary/40 to-transparent\",\n accent: \"bg-primary/30\",\n },\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"w-px h-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n },\n});\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface SeparatorProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>,\n \"orientation\"\n >,\n VariantProps<typeof separatorVariants> {}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(({ className, orientation = \"horizontal\", variant, decorative = true, ...props }, ref) => {\n const resolvedOrientation = orientation ?? \"horizontal\";\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={resolvedOrientation}\n className={cn(\n separatorVariants({ variant, orientation: resolvedOrientation }),\n className,\n )}\n {...props}\n />\n );\n});\nSeparator.displayName = \"Separator\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Separator, separatorVariants };\n","import * as React from \"react\";\n\nexport interface GlitchTextProps {\n children: string;\n className?: string;\n}\n\nexport const GlitchText = React.forwardRef<HTMLSpanElement, GlitchTextProps>(\n ({ children, className = \"\" }, ref) => (\n <span ref={ref} className={`relative inline-block ${className}`}>\n <span className=\"relative z-10\">{children}</span>\n <span\n aria-hidden\n className=\"absolute inset-0 text-ef-cyan opacity-70 animate-glitch\"\n style={{\n clipPath: \"inset(20% 0 50% 0)\",\n transform: \"translate(-2px, 0)\",\n }}\n >\n {children}\n </span>\n <span\n aria-hidden\n className=\"absolute inset-0 text-ef-red opacity-70 animate-glitch\"\n style={{\n clipPath: \"inset(50% 0 20% 0)\",\n transform: \"translate(2px, 0)\",\n animationDelay: \"0.1s\",\n }}\n >\n {children}\n </span>\n </span>\n ),\n);\nGlitchText.displayName = \"GlitchText\";\n","import * as React from \"react\";\n\nexport interface DiamondLoaderProps {\n size?: \"sm\" | \"md\" | \"lg\";\n label?: string;\n className?: string;\n}\n\nconst SIZE_MAP = { sm: 16, md: 28, lg: 44 } as const;\n\nexport const DiamondLoader = React.forwardRef<\n HTMLDivElement,\n DiamondLoaderProps\n>(({ size = \"md\", label, className }, ref) => {\n const s = SIZE_MAP[size];\n return (\n <div\n ref={ref}\n className={`flex flex-col items-center gap-3${className ? ` ${className}` : \"\"}`}\n >\n <div className=\"relative\" style={{ width: s * 2, height: s * 2 }}>\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n className=\"absolute inset-0 border-2 border-primary\"\n style={{\n transform: `rotate(45deg) scale(${1 - i * 0.25})`,\n animation: `diamondSpin ${1.2 + i * 0.4}s linear infinite${i === 1 ? \" reverse\" : \"\"}`,\n opacity: 1 - i * 0.25,\n }}\n />\n ))}\n </div>\n {label && (\n <span className=\"font-mono text-xs text-muted-foreground tracking-[0.15em] uppercase\">\n {label}\n </span>\n )}\n </div>\n );\n});\nDiamondLoader.displayName = \"DiamondLoader\";\n","import * as React from \"react\";\nimport { Crosshair } from \"lucide-react\";\n\nexport interface TacticalPanelProps {\n title: string;\n status?: \"online\" | \"warning\" | \"offline\" | \"scanning\";\n children: React.ReactNode;\n className?: string;\n}\n\nconst STATUS_LABELS: Record<string, string> = {\n online: \"ONLINE\",\n warning: \"CAUTION\",\n offline: \"OFFLINE\",\n scanning: \"SCANNING\",\n};\n\nconst STATUS_COLORS: Record<string, string> = {\n online: \"bg-ef-green\",\n warning: \"bg-ef-yellow\",\n offline: \"bg-ef-red\",\n scanning: \"bg-ef-cyan animate-pulse\",\n};\n\nexport const TacticalPanel = React.forwardRef<\n HTMLDivElement,\n TacticalPanelProps\n>(({ title, status = \"online\", children, className }, ref) => (\n <div\n ref={ref}\n className={`relative border border-border bg-surface-1 scanline-overlay${className ? ` ${className}` : \"\"}`}\n >\n {/* HUD Header */}\n <div className=\"flex items-center justify-between px-4 py-2.5 border-b border-border bg-surface-0\">\n <div className=\"flex items-center gap-3\">\n <Crosshair className=\"w-3.5 h-3.5 text-primary\" />\n <span className=\"font-display text-[11px] font-bold tracking-[0.15em] uppercase text-foreground\">\n {title}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <div\n className={`w-2 h-2 ${STATUS_COLORS[status]}`}\n style={{ clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\" }}\n />\n <span className=\"font-mono text-[10px] tracking-[0.1em] text-muted-foreground\">\n {STATUS_LABELS[status]}\n </span>\n </div>\n </div>\n {/* Corner accents */}\n <div className=\"absolute top-0 left-0 w-6 h-6 border-t-2 border-l-2 border-primary/40 pointer-events-none\" />\n <div className=\"absolute top-0 right-0 w-6 h-6 border-t-2 border-r-2 border-primary/40 pointer-events-none\" />\n <div className=\"absolute bottom-0 left-0 w-6 h-6 border-b-2 border-l-2 border-primary/40 pointer-events-none\" />\n <div className=\"absolute bottom-0 right-0 w-6 h-6 border-b-2 border-r-2 border-primary/40 pointer-events-none\" />\n {/* Content */}\n <div className=\"p-5\">{children}</div>\n </div>\n));\nTacticalPanel.displayName = \"TacticalPanel\";\n","import * as React from \"react\";\n\nexport interface HoloCardProps {\n title: string;\n subtitle: string;\n icon: React.ElementType;\n value?: string;\n className?: string;\n}\n\nexport const HoloCard = React.forwardRef<HTMLDivElement, HoloCardProps>(\n ({ title, subtitle, icon: Icon, value, className }, ref) => {\n const [hovering, setHovering] = React.useState(false);\n return (\n <div\n ref={ref}\n className={`relative clip-corner border border-border bg-surface-1 p-6 overflow-hidden group cursor-pointer transition-all duration-500 hover:border-primary/30${className ? ` ${className}` : \"\"}`}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n >\n {/* Scan line */}\n <div\n className=\"absolute left-0 right-0 h-px bg-gradient-to-r from-transparent via-primary/60 to-transparent pointer-events-none transition-all\"\n style={{\n top: hovering ? \"100%\" : \"-10%\",\n opacity: hovering ? 1 : 0,\n transitionDuration: \"2000ms\",\n }}\n />\n {/* Holographic shimmer */}\n <div\n className=\"absolute inset-0 pointer-events-none transition-opacity duration-500\"\n style={{\n background:\n \"linear-gradient(135deg, transparent 0%, hsl(var(--primary) / 0.03) 40%, transparent 60%)\",\n opacity: hovering ? 1 : 0,\n }}\n />\n <div className=\"relative z-10\">\n <Icon className=\"w-5 h-5 text-primary mb-4 group-hover:drop-shadow-[0_0_8px_hsl(var(--primary)/0.5)] transition-all\" />\n {value && (\n <p className=\"font-display text-3xl font-bold text-primary mb-1\">\n {value}\n </p>\n )}\n <h4 className=\"font-display text-sm font-bold tracking-[0.05em] uppercase text-foreground mb-1\">\n {title}\n </h4>\n <p className=\"text-sm text-muted-foreground\">{subtitle}</p>\n </div>\n {/* Bottom diamond */}\n <div className=\"absolute bottom-3 right-3 text-primary/20 group-hover:text-primary/60 transition-colors text-xs\">\n ◆\n </div>\n </div>\n );\n },\n);\nHoloCard.displayName = \"HoloCard\";\n","import * as React from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { Terminal } from \"lucide-react\";\n\nconst DEFAULT_MESSAGES = [\n \"[SYS] Initializing ENDFIELD protocol...\",\n \"[NET] Connection established — latency: 12ms\",\n \"[SEC] Authentication verified ◆ Level: ALPHA\",\n \"[DAT] Loading design tokens: 94 variables mapped\",\n \"[GPU] Render pipeline: Optimized (60fps locked)\",\n \"[SYS] Component registry: 70 modules online\",\n \"[NET] Sync complete — all nodes operational\",\n \"[DAT] Color system: HSL-based, 9 neutrals, 9 accents\",\n \"[SEC] Encryption: AES-256 ◆ Status: ACTIVE\",\n \"[SYS] ENDFIELD DESIGN SYSTEM v2.0 ◆ READY\",\n];\n\nexport interface DataStreamProps {\n messages?: string[];\n className?: string;\n}\n\nexport const DataStream = React.forwardRef<HTMLDivElement, DataStreamProps>(\n ({ messages = DEFAULT_MESSAGES, className }, ref) => {\n const [lines, setLines] = React.useState<string[]>([]);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n let i = 0;\n const interval = setInterval(() => {\n setLines((prev) => {\n const next = [...prev, messages[i % messages.length]];\n return next.length > 8 ? next.slice(-8) : next;\n });\n i++;\n }, 1200);\n return () => clearInterval(interval);\n }, [messages]);\n\n React.useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\n }\n }, [lines]);\n\n return (\n <div\n ref={ref}\n className={`border border-border bg-background clip-corner overflow-hidden${className ? ` ${className}` : \"\"}`}\n >\n <div className=\"flex items-center gap-2 px-4 py-2 border-b border-border bg-surface-0\">\n <Terminal className=\"w-3.5 h-3.5 text-primary\" />\n <span className=\"font-mono text-[10px] tracking-[0.1em] text-muted-foreground uppercase\">\n LIVE FEED\n </span>\n <div className=\"ml-auto flex items-center gap-1.5\">\n <div\n className=\"w-1.5 h-1.5 bg-ef-green animate-pulse\"\n style={{ clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\" }}\n />\n <span className=\"font-mono text-[10px] text-ef-green\">ACTIVE</span>\n </div>\n </div>\n <div\n ref={containerRef}\n className=\"p-4 h-48 overflow-y-auto font-mono text-xs space-y-1\"\n >\n <AnimatePresence>\n {lines.map((line, i) => (\n <motion.div\n key={`${line}-${i}`}\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n className={\n line.includes(\"[SEC]\")\n ? \"text-ef-green\"\n : line.includes(\"[NET]\")\n ? \"text-ef-blue\"\n : line.includes(\"[DAT]\")\n ? \"text-ef-cyan\"\n : line.includes(\"[GPU]\")\n ? \"text-ef-purple\"\n : \"text-muted-foreground\"\n }\n >\n {line}\n </motion.div>\n ))}\n </AnimatePresence>\n <span className=\"inline-block w-2 h-4 bg-primary animate-cursor-blink\" />\n </div>\n </div>\n );\n },\n);\nDataStream.displayName = \"DataStream\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport const tacticalBadgeVariants = cva(\n \"inline-flex items-center gap-1.5 clip-corner-sm border px-3 py-1 font-display text-[10px] font-bold tracking-[0.15em] uppercase\",\n {\n variants: {\n variant: {\n default: \"border-primary/40 text-primary bg-primary/10\",\n success: \"border-ef-green/40 text-ef-green bg-ef-green/10\",\n warning: \"border-ef-yellow/40 text-ef-yellow bg-ef-yellow/10\",\n danger: \"border-ef-red/40 text-ef-red bg-ef-red/10\",\n info: \"border-ef-cyan/40 text-ef-cyan bg-ef-cyan/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface TacticalBadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof tacticalBadgeVariants> {}\n\nexport const TacticalBadge = React.forwardRef<\n HTMLSpanElement,\n TacticalBadgeProps\n>(({ variant, className, children, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(tacticalBadgeVariants({ variant }), className)}\n {...props}\n >\n <span style={{ fontSize: \"6px\" }}>◆</span>\n {children}\n </span>\n));\nTacticalBadge.displayName = \"TacticalBadge\";\n","import * as React from \"react\";\nimport { AlertTriangle } from \"lucide-react\";\n\nexport interface WarningBannerProps {\n level?: \"caution\" | \"alert\" | \"critical\";\n children: React.ReactNode;\n className?: string;\n}\n\nconst WARNING_STYLES = {\n caution: {\n border: \"border-ef-yellow/30\",\n bg: \"bg-ef-yellow/5\",\n icon: \"text-ef-yellow\",\n label: \"CAUTION\",\n },\n alert: {\n border: \"border-ef-orange/30\",\n bg: \"bg-ef-orange/5\",\n icon: \"text-ef-orange\",\n label: \"ALERT\",\n },\n critical: {\n border: \"border-ef-red/30\",\n bg: \"bg-ef-red/5\",\n icon: \"text-ef-red\",\n label: \"CRITICAL\",\n },\n} as const;\n\nexport const WarningBanner = React.forwardRef<\n HTMLDivElement,\n WarningBannerProps\n>(({ level = \"caution\", children, className }, ref) => {\n const s = WARNING_STYLES[level];\n return (\n <div\n ref={ref}\n className={`clip-corner border ${s.border} ${s.bg} p-4 flex items-start gap-3${className ? ` ${className}` : \"\"}`}\n >\n <AlertTriangle className={`w-5 h-5 ${s.icon} shrink-0 mt-0.5`} />\n <div>\n <span\n className={`font-display text-[11px] font-bold tracking-[0.15em] ${s.icon}`}\n >\n {s.label}\n </span>\n <p className=\"text-sm text-muted-foreground mt-1\">{children}</p>\n </div>\n </div>\n );\n});\nWarningBanner.displayName = \"WarningBanner\";\n","import * as React from \"react\";\n\nexport interface ScanDividerProps {\n label?: string;\n className?: string;\n}\n\nexport const ScanDivider = React.forwardRef<HTMLDivElement, ScanDividerProps>(\n ({ label, className }, ref) => (\n <div\n ref={ref}\n className={`relative flex items-center gap-4 py-2${className ? ` ${className}` : \"\"}`}\n >\n <div className=\"flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent\" />\n {label && (\n <span className=\"font-display text-[10px] font-bold tracking-[0.2em] uppercase text-primary/60 flex items-center gap-2\">\n <span style={{ fontSize: \"6px\" }}>◆</span> {label}{\" \"}\n <span style={{ fontSize: \"6px\" }}>◆</span>\n </span>\n )}\n <div className=\"flex-1 h-px bg-gradient-to-r from-transparent via-primary/30 to-transparent\" />\n </div>\n ),\n);\nScanDivider.displayName = \"ScanDivider\";\n","import * as React from \"react\";\n\nexport interface CoordinateTagProps {\n label: string;\n value: string;\n unit?: string;\n className?: string;\n}\n\nexport const CoordinateTag = React.forwardRef<\n HTMLDivElement,\n CoordinateTagProps\n>(({ label, value, unit, className }, ref) => (\n <div\n ref={ref}\n className={`inline-flex items-center border border-border bg-surface-0 overflow-hidden${className ? ` ${className}` : \"\"}`}\n >\n <span className=\"font-mono text-[10px] tracking-[0.1em] uppercase text-muted-foreground bg-surface-2 px-2.5 py-1.5 border-r border-border\">\n {label}\n </span>\n <span className=\"font-mono text-xs text-primary px-2.5 py-1.5 font-bold\">\n {value}\n </span>\n {unit && (\n <span className=\"font-mono text-[10px] text-muted-foreground pr-2.5\">\n {unit}\n </span>\n )}\n </div>\n));\nCoordinateTag.displayName = \"CoordinateTag\";\n","import * as React from \"react\";\nimport { motion, useInView } from \"framer-motion\";\n\nexport interface RadarChartDataPoint {\n label: string;\n value: number;\n}\n\nexport interface RadarChartProps {\n data: RadarChartDataPoint[];\n size?: number;\n color?: \"primary\" | \"cyan\";\n className?: string;\n}\n\nexport const RadarChart = React.forwardRef<HTMLDivElement, RadarChartProps>(\n ({ data, size = 260, color = \"primary\", className }, forwardedRef) => {\n // useInView requires a RefObject — maintain an internal ref and merge with\n // the forwarded ref via a callback so both are kept in sync.\n const innerRef = React.useRef<HTMLDivElement>(null);\n const isInView = useInView(innerRef, { once: true });\n\n const mergeRef = React.useCallback(\n (el: HTMLDivElement | null) => {\n (innerRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el);\n } else if (forwardedRef) {\n (\n forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = el;\n }\n },\n [forwardedRef],\n );\n\n const cx = size / 2;\n const cy = size / 2;\n const r = size * 0.38;\n const levels = 4;\n const n = data.length;\n const angleStep = (Math.PI * 2) / n;\n\n const colorVar = color === \"cyan\" ? \"--ef-cyan\" : \"--primary\";\n\n const getPoint = (i: number, radius: number) => ({\n x: cx + radius * Math.sin(i * angleStep),\n y: cy - radius * Math.cos(i * angleStep),\n });\n\n const gridPolygons = Array.from({ length: levels }, (_, level) => {\n const lr = r * ((level + 1) / levels);\n return data\n .map((_, i) => getPoint(i, lr))\n .map((p) => `${p.x},${p.y}`)\n .join(\" \");\n });\n\n const dataPoints = data.map((d, i) => getPoint(i, (d.value / 100) * r));\n const dataPath = dataPoints.map((p) => `${p.x},${p.y}`).join(\" \");\n const centerPath = data.map(() => `${cx},${cy}`).join(\" \");\n\n return (\n <div\n ref={mergeRef}\n className={`flex flex-col items-center w-full${className ? ` ${className}` : \"\"}`}\n >\n <svg\n viewBox={`0 0 ${size} ${size}`}\n className=\"w-full max-w-[260px] h-auto overflow-visible\"\n >\n {/* Grid rings */}\n {gridPolygons.map((pts, i) => (\n <polygon\n key={i}\n points={pts}\n fill=\"none\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n opacity={0.5}\n />\n ))}\n {/* Axes */}\n {data.map((_, i) => {\n const p = getPoint(i, r);\n return (\n <line\n key={i}\n x1={cx}\n y1={cy}\n x2={p.x}\n y2={p.y}\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n opacity={0.3}\n />\n );\n })}\n {/* Data area */}\n <motion.polygon\n points={isInView ? dataPath : centerPath}\n fill={`hsl(var(${colorVar}) / 0.15)`}\n stroke={`hsl(var(${colorVar}))`}\n strokeWidth={2}\n initial={false}\n animate={{ points: isInView ? dataPath : centerPath }}\n transition={{ duration: 0.8, ease: [0.25, 0.8, 0.25, 1] }}\n style={{\n filter: `drop-shadow(0 0 8px hsl(var(${colorVar}) / 0.3))`,\n }}\n />\n {/* Data points */}\n {dataPoints.map((p, i) => (\n <motion.circle\n key={i}\n cx={cx}\n cy={cy}\n r={4}\n fill={`hsl(var(${colorVar}))`}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n initial={false}\n animate={{ cx: isInView ? p.x : cx, cy: isInView ? p.y : cy }}\n transition={{ duration: 0.8, delay: i * 0.05 }}\n style={{\n filter: `drop-shadow(0 0 4px hsl(var(${colorVar}) / 0.5))`,\n }}\n />\n ))}\n {/* Labels */}\n {data.map((d, i) => {\n const p = getPoint(i, r + 20);\n return (\n <text\n key={i}\n x={p.x}\n y={p.y}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n className=\"font-display text-[9px] font-bold tracking-[0.1em] uppercase\"\n fill=\"hsl(var(--muted-foreground))\"\n >\n {d.label}\n </text>\n );\n })}\n </svg>\n </div>\n );\n },\n);\nRadarChart.displayName = \"RadarChart\";\n","import * as React from \"react\";\n\nexport interface HUDOverlayProps {\n children?: React.ReactNode;\n systemLabel?: string;\n lat?: string;\n lon?: string;\n showCoords?: boolean;\n showCrosshair?: boolean;\n className?: string;\n}\n\nexport const HUDOverlay = React.forwardRef<HTMLDivElement, HUDOverlayProps>(\n (\n {\n children,\n systemLabel = \"SYS::ENDFIELD v2.0\",\n lat = \"LAT 37.7749°N\",\n lon = \"LON 122.4194°W\",\n showCoords = true,\n showCrosshair = true,\n className,\n },\n ref,\n ) => {\n const [time, setTime] = React.useState(\"\");\n\n React.useEffect(() => {\n const tick = () => setTime(new Date().toLocaleTimeString(\"en-GB\"));\n tick();\n const id = setInterval(tick, 1000);\n return () => clearInterval(id);\n }, []);\n\n return (\n <div\n ref={ref}\n className={`relative border border-border bg-surface-0 aspect-video flex items-center justify-center overflow-hidden${className ? ` ${className}` : \"\"}`}\n >\n {/* Scanline overlay */}\n <div className=\"absolute inset-0 scanline-overlay\" />\n {/* Corner brackets */}\n {(\n [\n \"top-3 left-3 border-t-2 border-l-2\",\n \"top-3 right-3 border-t-2 border-r-2\",\n \"bottom-3 left-3 border-b-2 border-l-2\",\n \"bottom-3 right-3 border-b-2 border-r-2\",\n ] as const\n ).map((pos, i) => (\n <div\n key={i}\n className={`absolute w-8 h-8 ${pos} border-primary/40 pointer-events-none`}\n />\n ))}\n {/* Crosshair */}\n {showCrosshair && (\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none\">\n <div\n className=\"w-6 h-px bg-primary/20\"\n style={{ position: \"absolute\", top: \"50%\", left: \"-12px\" }}\n />\n <div\n className=\"h-6 w-px bg-primary/20\"\n style={{ position: \"absolute\", left: \"50%\", top: \"-12px\" }}\n />\n </div>\n )}\n {/* Top-left: system label + live time */}\n {showCoords && (\n <div className=\"absolute top-4 left-12 font-mono text-[9px] text-muted-foreground/60 space-y-0.5\">\n <div>{systemLabel}</div>\n <div className=\"text-primary/60\">{time}</div>\n </div>\n )}\n {/* Top-right: coordinates */}\n {showCoords && (\n <div className=\"absolute top-4 right-12 font-mono text-[9px] text-muted-foreground/60 text-right space-y-0.5\">\n <div>{lat}</div>\n <div>{lon}</div>\n </div>\n )}\n {/* Bottom status bar */}\n <div className=\"absolute bottom-4 left-12 right-12 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-1.5 h-1.5 bg-ef-green\"\n style={{ clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\" }}\n />\n <span className=\"font-mono text-[9px] text-ef-green/80\">\n LINK ACTIVE\n </span>\n </div>\n <div className=\"flex gap-4\">\n {[\"FPS:60\", \"MEM:47%\", \"NET:12ms\"].map((s) => (\n <span\n key={s}\n className=\"font-mono text-[9px] text-muted-foreground/50\"\n >\n {s}\n </span>\n ))}\n </div>\n </div>\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </div>\n );\n },\n);\nHUDOverlay.displayName = \"HUDOverlay\";\n"],"names":["cn","inputs","twMerge","clsx","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","React","className","sideOffset","props","ref","jsx","ToastProvider","ToastPrimitives","ToastViewport","toastVariants","cva","Toast","variant","ToastAction","ToastClose","X","ToastTitle","ToastDescription","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","state","action","t","toast","listeners","memoryState","listener","id","update","dismiss","open","useToast","setState","index","Toaster","toasts","title","description","jsxs","theme","Sonner","buttonVariants","Button","size","asChild","loading","disabled","children","type","Slot","badgeVariants","Badge","removable","onRemove","e","BRACKET_BASE","cardVariants","Card","hoverable","selected","CardHeader","CardMeta","CardTitle","CardDescription","CardBody","CardFooter","inputWrapperVariants","Input","leftElement","rightElement","pl","pr","Label","HelperText","textareaVariants","Textarea","showCount","maxLength","onChange","rest","setCount","initial","counterColorClass","Checkbox","label","helperText","generatedId","checkboxId","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","itemId","Switch","offLabel","onLabel","checked","switchId","SwitchPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","SelectScrollUpButton","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","danger","SelectSeparator","avatarVariants","statusColors","Avatar","status","AvatarPrimitive","AvatarImage","AvatarFallback","progressTrackVariants","progressFillVariants","Progress","value","showLabel","isIndeterminate","clampedValue","ProgressPrimitive","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Tabs","TabsPrimitive","tabsListVariants","TabsList","tabsTriggerVariants","TabsTrigger","TabsContent","Popover","PopoverPrimitive","PopoverTrigger","PopoverAnchor","PopoverContent","align","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","dialogContentVariants","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","separatorVariants","Separator","orientation","decorative","resolvedOrientation","SeparatorPrimitive","GlitchText","SIZE_MAP","DiamondLoader","s","i","STATUS_LABELS","STATUS_COLORS","TacticalPanel","Crosshair","HoloCard","subtitle","Icon","hovering","setHovering","DEFAULT_MESSAGES","DataStream","messages","lines","setLines","containerRef","interval","prev","next","Terminal","AnimatePresence","line","motion","tacticalBadgeVariants","TacticalBadge","WARNING_STYLES","WarningBanner","level","AlertTriangle","ScanDivider","CoordinateTag","unit","RadarChart","data","color","forwardedRef","innerRef","isInView","useInView","mergeRef","el","cx","cy","r","levels","n","angleStep","colorVar","getPoint","radius","gridPolygons","_","lr","p","dataPoints","d","dataPath","centerPath","pts","HUDOverlay","systemLabel","lat","lon","showCoords","showCrosshair","time","setTime","tick","pos"],"mappings":"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"}