reend-components 0.3.0 → 1.0.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","../../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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"}
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/skeleton.tsx","../../src/components/ui/empty-state.tsx","../../src/components/ui/alert.tsx","../../src/components/ui/timeline.tsx","../../src/components/ui/stepper.tsx","../../src/components/ui/pagination.tsx","../../src/components/ui/breadcrumb.tsx","../../src/components/ui/number-input.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","../../src/components/ui/signature/mission-card.tsx","../../src/components/ui/signature/operator-card.tsx","../../src/components/ui/signature/status-bar.tsx","../../src/components/ui/signature/command-output.tsx","../../src/components/ui/signature/countdown-timer.tsx","../../src/components/ui/signature/tactical-table.tsx","../../src/components/ui/signature/matrix-grid.tsx","../../src/components/ui/signature/frequency-bars.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-border-strong 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-surface-2 border border-border 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-border text-muted-foreground bg-surface-2\",\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-input\",\n \"hover:border-border-strong\",\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-input\",\n \"hover:border-border-strong\",\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-input 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-input bg-surface-3\",\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-input bg-surface-1 px-3\",\n \"font-mono text-sm text-foreground\",\n \"transition-all duration-150\",\n \"hover:border-border-strong\",\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-border 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-border\", 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-surface-3\",\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-border\", 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-surface-hover\",\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(\"flex items-center overflow-x-auto\", {\n variants: {\n variant: {\n underline: \"border-b border-border gap-0 w-full\",\n pill: \"gap-1 bg-surface-1 p-1 w-fit\",\n bordered: \"border border-border gap-0 w-full\",\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-border last:border-r-0\",\n \"hover:text-foreground hover:bg-surface-hover\",\n \"data-[state=active]:text-primary data-[state=active]:bg-surface-3\",\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-border 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-border shadow-xl\",\n \"flex flex-col max-h-[90vh]\",\n \"data-[state=open]:animate-dialog-in\",\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-border 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-border 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-border\",\n subtle: \"bg-border\",\n strong: \"bg-border-strong\",\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\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── SkeletonLine ─────────────────────────────────────────────────────────── */\n\nconst skeletonLineVariants = cva(\"animate-skeleton rounded-none\", {\n variants: {\n width: {\n full: \"w-full\",\n \"3/4\": \"w-3/4\",\n \"1/2\": \"w-1/2\",\n \"1/3\": \"w-1/3\",\n \"1/4\": \"w-1/4\",\n },\n height: {\n xs: \"h-2\",\n sm: \"h-3\",\n md: \"h-4\",\n lg: \"h-6\",\n },\n },\n defaultVariants: { width: \"full\", height: \"md\" },\n});\n\nexport interface SkeletonLineProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonLineVariants> {}\n\nconst SkeletonLine = React.forwardRef<HTMLDivElement, SkeletonLineProps>(\n ({ className, width, height, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(skeletonLineVariants({ width, height }), className)}\n aria-hidden=\"true\"\n {...props}\n />\n ),\n);\nSkeletonLine.displayName = \"SkeletonLine\";\n\n/* ── SkeletonText ────────────────────────────────────────────────────────── */\n\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n lines?: number;\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, className, ...props }, ref) => {\n const lineWidths: Array<\n VariantProps<typeof skeletonLineVariants>[\"width\"]\n > = [\"full\", \"3/4\", \"full\", \"1/2\", \"3/4\"];\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-2\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n {Array.from({ length: lines }).map((_, i) => (\n <SkeletonLine\n key={i}\n width={lineWidths[i % lineWidths.length]}\n height=\"sm\"\n />\n ))}\n </div>\n );\n },\n);\nSkeletonText.displayName = \"SkeletonText\";\n\n/* ── SkeletonAvatar ──────────────────────────────────────────────────────── */\n\nconst skeletonAvatarSizes = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n lg: \"w-14 h-14\",\n xl: \"w-20 h-20\",\n};\n\nexport interface SkeletonAvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: keyof typeof skeletonAvatarSizes;\n}\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = \"md\", className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"animate-skeleton clip-corner-sm shrink-0\",\n skeletonAvatarSizes[size],\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n />\n ),\n);\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n/* ── SkeletonCard ────────────────────────────────────────────────────────── */\n\nexport interface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n showAvatar?: boolean;\n lines?: number;\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ showAvatar = false, lines = 3, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"border border-border bg-surface-1 p-4 space-y-3\",\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n >\n {/* Header row */}\n <div className=\"flex items-center gap-3\">\n {showAvatar && <SkeletonAvatar size=\"md\" />}\n <div className=\"flex-1 space-y-2\">\n <SkeletonLine width=\"3/4\" height=\"md\" />\n <SkeletonLine width=\"1/2\" height=\"sm\" />\n </div>\n </div>\n\n {/* Body lines */}\n <SkeletonText lines={lines} />\n\n {/* Footer strip */}\n <SkeletonLine width=\"1/3\" height=\"xs\" />\n </div>\n ),\n);\nSkeletonCard.displayName = \"SkeletonCard\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport {\n SkeletonLine,\n SkeletonText,\n SkeletonAvatar,\n SkeletonCard,\n skeletonLineVariants,\n};\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Preset variant copy ─────────────────────────────────────────────────── */\n\nconst PRESET_COPY: Record<string, { title: string; description: string }> = {\n search: {\n title: \"NO RESULTS FOUND\",\n description: \"Try adjusting your search query.\",\n },\n error: {\n title: \"FAILED TO LOAD\",\n description: \"An error occurred. Please try again.\",\n },\n permission: {\n title: \"ACCESS RESTRICTED\",\n description: \"You don't have permission to view this.\",\n },\n empty: {\n title: \"NO ITEMS YET\",\n description: \"Add your first item to get started.\",\n },\n default: { title: \"\", description: \"\" },\n};\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst emptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center py-16 px-8\",\n {\n variants: {\n size: {\n sm: \"py-8 px-4\",\n md: \"py-16 px-8\",\n lg: \"py-24 px-12\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface EmptyStateProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof emptyStateVariants> {\n icon?: React.ReactNode;\n title?: string;\n description?: string;\n action?: React.ReactNode;\n variant?: \"default\" | \"search\" | \"error\" | \"permission\" | \"empty\";\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n icon,\n title,\n description,\n action,\n variant = \"default\",\n size,\n className,\n ...props\n },\n ref,\n ) => {\n const preset = PRESET_COPY[variant] ?? PRESET_COPY.default;\n const resolvedTitle = title ?? preset.title;\n const resolvedDesc = description ?? preset.description;\n\n return (\n <div\n ref={ref}\n className={cn(emptyStateVariants({ size }), className)}\n {...props}\n >\n {icon && (\n <div className=\"text-muted-foreground/30 mb-6 [&>svg]:w-12 [&>svg]:h-12\">\n {icon}\n </div>\n )}\n\n {resolvedTitle && (\n <h3 className=\"font-display text-[18px] font-bold uppercase tracking-wider text-foreground mb-3\">\n {resolvedTitle}\n </h3>\n )}\n\n {resolvedDesc && (\n <p className=\"text-[14px] text-muted-foreground max-w-[360px] leading-relaxed\">\n {resolvedDesc}\n </p>\n )}\n\n {action && <div className=\"mt-6\">{action}</div>}\n </div>\n );\n },\n);\nEmptyState.displayName = \"EmptyState\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { EmptyState, emptyStateVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst alertVariants = cva(\n \"relative flex items-start gap-3 p-4 border-l-[3px] transition-all\",\n {\n variants: {\n variant: {\n info: \"bg-ef-blue/[0.08] border-l-ef-blue border border-ef-blue/20\",\n success:\n \"bg-ef-green/[0.08] border-l-ef-green border border-ef-green/20\",\n warning:\n \"bg-ef-orange/[0.08] border-l-ef-orange border border-ef-orange/20\",\n error:\n \"bg-destructive/[0.08] border-l-destructive border border-destructive/20\",\n },\n },\n defaultVariants: { variant: \"info\" },\n },\n);\n\n/* ── Default icon + icon colors per variant ───────────────────────────────── */\n\nconst VARIANT_CONFIG = {\n info: { icon: \"◆\", color: \"text-ef-blue\" },\n success: { icon: \"✓\", color: \"text-ef-green\" },\n warning: { icon: \"⚠\", color: \"text-ef-orange\" },\n error: { icon: \"✕\", color: \"text-destructive\" },\n} as const;\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface AlertProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n icon?: React.ReactNode;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n variant = \"info\",\n title,\n dismissible = false,\n onDismiss,\n icon,\n children,\n className,\n ...props\n },\n ref,\n ) => {\n const cfg = VARIANT_CONFIG[variant];\n const showIcon = icon !== null;\n const iconNode =\n icon !== null && icon !== undefined ? (\n icon\n ) : (\n <span\n aria-hidden=\"true\"\n className={cn(\n \"font-mono text-[14px] font-bold leading-none\",\n cfg.color,\n )}\n >\n {cfg.icon}\n </span>\n );\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-live={variant === \"error\" ? \"assertive\" : \"polite\"}\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n {/* Icon */}\n {showIcon && <div className=\"shrink-0 mt-0.5\">{iconNode}</div>}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"font-display text-[13px] font-bold uppercase tracking-wider text-foreground mb-1\">\n {title}\n </p>\n )}\n {children && (\n <div className=\"text-[13px] text-muted-foreground leading-relaxed\">\n {children}\n </div>\n )}\n </div>\n\n {/* Dismiss button */}\n {dismissible && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n className=\"shrink-0 text-muted-foreground hover:text-foreground transition-colors font-mono text-[12px] leading-none\"\n >\n ✕\n </button>\n )}\n </div>\n );\n },\n);\nAlert.displayName = \"Alert\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Alert, alertVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst timelineItemVariants = cva(\"\", {\n variants: {\n status: {\n complete: \"text-primary\",\n current: \"text-primary\",\n upcoming: \"text-muted-foreground/40\",\n },\n },\n defaultVariants: { status: \"upcoming\" },\n});\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement> {\n date?: string;\n title: string;\n description?: string;\n status?: \"complete\" | \"current\" | \"upcoming\";\n}\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {\n items?: TimelineItemProps[];\n}\n\n/* ── TimelineItem ─────────────────────────────────────────────────────────── */\n\nconst TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n ({ date, title, description, status = \"upcoming\", children, className, ...props }, ref) => {\n const isActive = status === \"complete\" || status === \"current\";\n const marker = isActive ? \"◆\" : \"◇\";\n\n return (\n <div\n ref={ref}\n role=\"listitem\"\n aria-current={status === \"current\" ? \"true\" : undefined}\n className={cn(\"relative pb-8 last:pb-0\", className)}\n {...props}\n >\n {/* Timeline node */}\n <span\n className={cn(\n \"absolute -left-[15px] top-0.5 font-mono text-[11px] leading-none select-none\",\n timelineItemVariants({ status }),\n status === \"current\" && \"drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]\",\n )}\n aria-hidden=\"true\"\n >\n {marker}\n </span>\n\n {/* Date */}\n {date && (\n <p className=\"font-mono text-[11px] text-muted-foreground/60 mb-1\">{date}</p>\n )}\n\n {/* Title */}\n <p className=\"font-display text-[14px] font-semibold uppercase text-foreground\">\n {title}\n </p>\n\n {/* Description */}\n {description && (\n <p className=\"text-[13px] text-muted-foreground mt-1\">{description}</p>\n )}\n\n {/* Slot children */}\n {children}\n </div>\n );\n },\n);\nTimelineItem.displayName = \"TimelineItem\";\n\n/* ── Timeline ────────────────────────────────────────────────────────────── */\n\nconst Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n ({ items, children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"list\"\n className={cn(\n \"relative pl-6 space-y-0\",\n \"before:absolute before:left-[9px] before:top-2 before:bottom-2 before:w-px before:bg-border\",\n className,\n )}\n {...props}\n >\n {items\n ? items.map((item, i) => {\n const { date, title, description, status, children: itemChildren, className: itemCn, ...rest } = item;\n return (\n <TimelineItem\n key={i}\n date={date}\n title={title}\n description={description}\n status={status}\n className={itemCn}\n {...rest}\n >\n {itemChildren}\n </TimelineItem>\n );\n })\n : children}\n </div>\n );\n },\n);\nTimeline.displayName = \"Timeline\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Timeline, TimelineItem, timelineItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport interface StepItem {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\n/* ── Helpers ─────────────────────────────────────────────────────────────── */\n\nfunction getStepState(\n index: number,\n currentStep: number,\n): \"complete\" | \"current\" | \"upcoming\" {\n if (index < currentStep) return \"complete\";\n if (index === currentStep) return \"current\";\n return \"upcoming\";\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n (\n { steps, currentStep, orientation = \"horizontal\", className, ...props },\n ref,\n ) => {\n if (orientation === \"vertical\") {\n return (\n <div\n ref={ref}\n role=\"list\"\n aria-label=\"Progress steps\"\n className={cn(\"flex flex-col gap-0\", className)}\n {...props}\n >\n {steps.map((step, i) => {\n const state = getStepState(i, currentStep);\n const isComplete = state === \"complete\";\n const isCurrent = state === \"current\";\n const isLast = i === steps.length - 1;\n const marker = isComplete || isCurrent ? \"◆\" : \"◇\";\n const stateLabel = isComplete ? \"completed\" : isCurrent ? \"current\" : \"upcoming\";\n\n return (\n <div\n key={i}\n role=\"listitem\"\n aria-label={`Step ${i + 1} of ${steps.length}: ${step.label}, ${stateLabel}`}\n aria-current={isCurrent ? \"step\" : undefined}\n className=\"flex items-start gap-3 relative\"\n >\n {/* Node column */}\n <div className=\"flex flex-col items-center flex-shrink-0\">\n <span\n className={cn(\n \"font-mono text-[13px] leading-none\",\n isComplete && \"text-primary\",\n isCurrent &&\n \"text-primary drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]\",\n !isComplete && !isCurrent && \"text-muted-foreground/40\",\n )}\n aria-hidden=\"true\"\n >\n {marker}\n </span>\n {!isLast && (\n <div\n className={cn(\n \"flex-1 w-px min-h-6 mt-1\",\n isComplete ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n </div>\n\n {/* Content */}\n <div className=\"pb-6 last:pb-0\">\n <p\n className={cn(\n \"font-display text-[11px] uppercase tracking-wider mt-1\",\n isCurrent && \"text-foreground font-semibold\",\n isComplete && \"text-primary\",\n !isComplete && !isCurrent && \"text-muted-foreground/60\",\n )}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-[12px] text-muted-foreground/60 mt-0.5\">\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n // Horizontal (default)\n return (\n <div\n ref={ref}\n role=\"list\"\n aria-label=\"Progress steps\"\n className={cn(\"flex items-start w-full min-w-max\", className)}\n {...props}\n >\n {steps.map((step, i) => {\n const state = getStepState(i, currentStep);\n const isComplete = state === \"complete\";\n const isCurrent = state === \"current\";\n const isLast = i === steps.length - 1;\n const marker = isComplete || isCurrent ? \"◆\" : \"◇\";\n const stateLabel = isComplete ? \"completed\" : isCurrent ? \"current\" : \"upcoming\";\n\n return (\n <React.Fragment key={i}>\n <div\n role=\"listitem\"\n aria-label={`Step ${i + 1} of ${steps.length}: ${step.label}, ${stateLabel}`}\n aria-current={isCurrent ? \"step\" : undefined}\n className=\"flex flex-col items-center flex-shrink-0\"\n >\n <span\n className={cn(\n \"font-mono text-[13px] leading-none mb-1.5\",\n isComplete && \"text-primary\",\n isCurrent &&\n \"text-primary drop-shadow-[0_0_6px_rgba(255,212,41,0.6)]\",\n !isComplete && !isCurrent && \"text-muted-foreground/40\",\n )}\n aria-hidden=\"true\"\n >\n {marker}\n </span>\n <p\n className={cn(\n \"font-display text-[11px] uppercase tracking-wider mt-1\",\n isCurrent && \"text-foreground font-semibold\",\n isComplete && \"text-primary\",\n !isComplete && !isCurrent && \"text-muted-foreground/60\",\n )}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-[12px] text-muted-foreground/60 mt-0.5 text-center\">\n {step.description}\n </p>\n )}\n </div>\n\n {/* Connector between steps */}\n {!isLast && (\n <div\n className={cn(\n \"flex-1 h-px self-start mt-[0.45em] mx-2\",\n isComplete ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n },\n);\nStepper.displayName = \"Stepper\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Stepper };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst paginationItemVariants = cva(\n \"font-mono text-[12px] w-9 h-9 flex items-center justify-center transition-all border\",\n {\n variants: {\n active: {\n true: \"bg-primary text-primary-foreground border-primary font-bold\",\n false:\n \"text-muted-foreground border-border hover:border-primary/40 hover:text-foreground\",\n },\n disabled: {\n true: \"opacity-40 cursor-not-allowed pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: { active: false, disabled: false },\n },\n);\n\n/* ── Page range helper ───────────────────────────────────────────────────── */\n\nfunction getPageRange(\n current: number,\n total: number,\n siblings: number,\n): (number | \"...\")[] {\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n const left = Math.max(2, current - siblings);\n const right = Math.min(total - 1, current + siblings);\n const pages: (number | \"...\")[] = [1];\n if (left > 2) pages.push(\"...\");\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < total - 1) pages.push(\"...\");\n pages.push(total);\n return pages;\n}\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLElement> {\n totalPages: number;\n currentPage: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n totalPages,\n currentPage,\n onPageChange,\n siblingCount = 1,\n className,\n ...props\n },\n ref,\n ) => {\n const pages = getPageRange(currentPage, totalPages, siblingCount);\n const isPrevDisabled = currentPage <= 1;\n const isNextDisabled = currentPage >= totalPages;\n\n return (\n <nav\n ref={ref}\n aria-label=\"Pagination\"\n className={cn(className)}\n {...props}\n >\n <div className=\"flex items-center gap-1\">\n {/* PREV */}\n <button\n type=\"button\"\n onClick={() => !isPrevDisabled && onPageChange(currentPage - 1)}\n disabled={isPrevDisabled}\n aria-label=\"Previous page\"\n className={cn(\n paginationItemVariants({\n active: false,\n disabled: isPrevDisabled,\n }),\n \"font-display uppercase text-[11px] tracking-wider px-2 w-auto\",\n )}\n >\n ◆ PREV\n </button>\n\n {/* Page numbers */}\n {pages.map((page, i) =>\n page === \"...\" ? (\n <span\n key={`ellipsis-${i}`}\n className=\"w-9 h-9 flex items-center justify-center font-mono text-[12px] text-muted-foreground/40 select-none\"\n aria-hidden=\"true\"\n >\n …\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n onClick={() => onPageChange(page)}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? \"page\" : undefined}\n className={cn(\n paginationItemVariants({ active: page === currentPage }),\n )}\n >\n {page}\n </button>\n ),\n )}\n\n {/* NEXT */}\n <button\n type=\"button\"\n onClick={() => !isNextDisabled && onPageChange(currentPage + 1)}\n disabled={isNextDisabled}\n aria-label=\"Next page\"\n className={cn(\n paginationItemVariants({\n active: false,\n disabled: isNextDisabled,\n }),\n \"font-display uppercase text-[11px] tracking-wider px-2 w-auto\",\n )}\n >\n NEXT ◆\n </button>\n </div>\n </nav>\n );\n },\n);\nPagination.displayName = \"Pagination\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Pagination, paginationItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport interface BreadcrumbItemData {\n label: string;\n href?: string;\n}\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\n items: BreadcrumbItemData[];\n separator?: React.ReactNode;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ items, separator, className, ...props }, ref) => {\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(className)}\n {...props}\n >\n <ol className=\"flex items-center gap-2 flex-wrap font-display text-[12px] uppercase tracking-wider\">\n {items.map((item, i) => {\n const isCurrent = i === items.length - 1;\n return (\n <React.Fragment key={i}>\n <li>\n {isCurrent || !item.href ? (\n <span\n aria-current={isCurrent ? \"page\" : undefined}\n className={\n isCurrent\n ? \"text-foreground font-semibold\"\n : \"text-muted-foreground\"\n }\n >\n {item.label}\n </span>\n ) : (\n <a\n href={item.href}\n className=\"text-muted-foreground hover:text-primary transition-colors\"\n >\n {item.label}\n </a>\n )}\n </li>\n {!isCurrent && (\n <li\n aria-hidden=\"true\"\n role=\"presentation\"\n className=\"text-[10px] text-muted-foreground/40 select-none\"\n >\n {separator ?? \"›\"}\n </li>\n )}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n );\n },\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { Breadcrumb };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst numberInputVariants = cva(\n \"inline-flex items-center border border-input bg-transparent\",\n {\n variants: {\n size: {\n sm: \"h-8\",\n md: \"h-9\",\n lg: \"h-10\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface NumberInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"onChange\" | \"value\" | \"defaultValue\" | \"size\"\n >,\n VariantProps<typeof numberInputVariants> {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n step = 1,\n size = \"md\",\n className,\n disabled,\n ...props\n },\n ref,\n ) => {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<number>(\n defaultValue ?? 0,\n );\n const current = isControlled ? value! : internalValue;\n\n const clamp = (n: number) =>\n Math.min(max ?? Infinity, Math.max(min ?? -Infinity, n));\n\n const update = (next: number) => {\n const clamped = clamp(next);\n if (!isControlled) setInternalValue(clamped);\n onChange?.(clamped);\n };\n\n const decrement = () => update(current - step);\n const increment = () => update(current + step);\n\n const atMin = min !== undefined && current <= min;\n const atMax = max !== undefined && current >= max;\n\n const buttonBase =\n \"px-2 font-mono text-[13px] text-muted-foreground transition-colors select-none\";\n\n return (\n <div className={cn(numberInputVariants({ size }), className)}>\n {/* Decrement */}\n <button\n type=\"button\"\n onClick={decrement}\n disabled={disabled || atMin}\n aria-label=\"Decrement\"\n className={cn(\n buttonBase,\n \"h-full border-r border-input\",\n (disabled || atMin) && \"opacity-40 cursor-not-allowed\",\n !(disabled || atMin) && \"hover:text-foreground\",\n )}\n >\n −\n </button>\n\n {/* Input */}\n <input\n ref={ref}\n type=\"number\"\n value={current}\n disabled={disabled}\n onChange={(e) => {\n const parsed = parseFloat(e.target.value);\n if (!isNaN(parsed)) update(parsed);\n }}\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n increment();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n decrement();\n }\n }}\n className={cn(\n \"w-16 h-full text-center font-mono text-[13px] text-foreground bg-transparent\",\n \"border-x border-input outline-none\",\n \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\",\n disabled && \"opacity-40 cursor-not-allowed\",\n )}\n {...props}\n />\n\n {/* Increment */}\n <button\n type=\"button\"\n onClick={increment}\n disabled={disabled || atMax}\n aria-label=\"Increment\"\n className={cn(\n buttonBase,\n \"h-full border-l border-input\",\n (disabled || atMax) && \"opacity-40 cursor-not-allowed\",\n !(disabled || atMax) && \"hover:text-foreground\",\n )}\n >\n +\n </button>\n </div>\n );\n },\n);\nNumberInput.displayName = \"NumberInput\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { NumberInput, numberInputVariants };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport type GlitchIntensity = \"low\" | \"medium\" | \"high\";\n\n/* ── Intensity config ────────────────────────────────────────────────────── */\n\nconst INTENSITY_CONFIG: Record<\n GlitchIntensity,\n {\n duration: string;\n clipTop: string;\n clipBot: string;\n offset: number;\n defaultInterval: number;\n }\n> = {\n low: {\n duration: \"6s\",\n clipTop: \"15% 0 70% 0\",\n clipBot: \"65% 0 15% 0\",\n offset: 1,\n defaultInterval: 4000,\n },\n medium: {\n duration: \"3s\",\n clipTop: \"20% 0 50% 0\",\n clipBot: \"50% 0 20% 0\",\n offset: 2,\n defaultInterval: 2500,\n },\n high: {\n duration: \"1.2s\",\n clipTop: \"10% 0 60% 0\",\n clipBot: \"55% 0 10% 0\",\n offset: 4,\n defaultInterval: 1200,\n },\n};\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface GlitchTextProps extends Omit<\n React.HTMLAttributes<HTMLSpanElement>,\n \"children\"\n> {\n children: string;\n intensity?: GlitchIntensity;\n continuous?: boolean;\n continuousInterval?: number;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst GlitchText = React.forwardRef<HTMLSpanElement, GlitchTextProps>(\n (\n {\n children,\n className,\n intensity = \"medium\",\n continuous = false,\n continuousInterval,\n ...props\n },\n ref,\n ) => {\n const cfg = INTENSITY_CONFIG[intensity];\n const interval = continuousInterval ?? cfg.defaultInterval;\n\n const [glitching, setGlitching] = React.useState(false);\n\n React.useEffect(() => {\n if (!continuous) return;\n const id = setInterval(() => {\n setGlitching(true);\n const off = setTimeout(\n () => setGlitching(false),\n parseFloat(cfg.duration) * 1000,\n );\n return () => clearTimeout(off);\n }, interval);\n return () => clearInterval(id);\n }, [continuous, interval, cfg.duration]);\n\n const animClass = glitching || !continuous ? \"animate-glitch\" : \"\";\n\n return (\n <span\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n {...props}\n >\n {/* Visible text */}\n <span className=\"relative z-10\">{children}</span>\n\n {/* Glitch layer 1 — cyan, top slice */}\n <span\n aria-hidden\n className={cn(\"absolute inset-0 text-ef-cyan opacity-70\", animClass)}\n style={{\n clipPath: `inset(${cfg.clipTop})`,\n transform: `translate(-${cfg.offset}px, 0)`,\n animationDuration: cfg.duration,\n }}\n >\n {children}\n </span>\n\n {/* Glitch layer 2 — red, bottom slice */}\n <span\n aria-hidden\n className={cn(\"absolute inset-0 text-ef-red opacity-70\", animClass)}\n style={{\n clipPath: `inset(${cfg.clipBot})`,\n transform: `translate(${cfg.offset}px, 0)`,\n animationDuration: cfg.duration,\n animationDelay: \"0.1s\",\n }}\n >\n {children}\n </span>\n </span>\n );\n },\n);\nGlitchText.displayName = \"GlitchText\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { 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\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Status config ───────────────────────────────────────────────────────── */\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\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface TacticalPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string;\n status?: \"online\" | \"warning\" | \"offline\" | \"scanning\";\n headerAction?: React.ReactNode;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n collapsed?: boolean;\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst TacticalPanel = React.forwardRef<HTMLDivElement, TacticalPanelProps>(\n (\n {\n title,\n status = \"online\",\n children,\n className,\n headerAction,\n collapsible = false,\n defaultCollapsed = false,\n collapsed: controlledCollapsed,\n onCollapseChange,\n ...props\n },\n ref,\n ) => {\n const [internalCollapsed, setInternalCollapsed] =\n React.useState(defaultCollapsed);\n\n const isControlled = controlledCollapsed !== undefined;\n const isCollapsed = isControlled ? controlledCollapsed : internalCollapsed;\n\n const handleHeaderClick = () => {\n if (!collapsible) return;\n const next = !isCollapsed;\n if (!isControlled) setInternalCollapsed(next);\n onCollapseChange?.(next);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative border border-border bg-surface-1 scanline-overlay\",\n className,\n )}\n {...props}\n >\n {/* ── HUD Header ── */}\n <div\n className={cn(\n \"flex items-center justify-between px-4 py-2.5 border-b border-border bg-surface-0\",\n collapsible && \"cursor-pointer select-none\",\n )}\n onClick={handleHeaderClick}\n >\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 {collapsible && (\n <span className=\"font-mono text-[14px] text-primary/60 ml-1 leading-none\">\n {isCollapsed ? \"+\" : \"−\"}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center gap-2\">\n <div\n className={cn(\"w-2 h-2\", STATUS_COLORS[status])}\n style={{\n clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\",\n }}\n />\n <span className=\"font-mono text-[10px] tracking-[0.1em] text-muted-foreground\">\n {STATUS_LABELS[status]}\n </span>\n </div>\n {headerAction && (\n <div\n className=\"flex items-center\"\n onClick={(e) => e.stopPropagation()}\n >\n {headerAction}\n </div>\n )}\n </div>\n </div>\n\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\n <div\n className={cn(\n \"overflow-hidden transition-all duration-300\",\n isCollapsed ? \"max-h-0\" : \"max-h-[9999px]\",\n )}\n >\n <div className=\"p-5\">{children}</div>\n </div>\n </div>\n );\n },\n);\nTacticalPanel.displayName = \"TacticalPanel\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { 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\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Speed map ───────────────────────────────────────────────────────────── */\n\nconst SPEED_INTERVALS: Record<number, number> = {\n 1: 2000,\n 2: 1500,\n 3: 1000,\n 4: 600,\n 5: 300,\n};\n\n/* ── Message type config ─────────────────────────────────────────────────── */\n\ntype MessageColorMode = \"mono\" | \"classified\" | \"transmission\";\n\nconst STREAM_COLOR_OVERRIDES: Record<MessageColorMode, string> = {\n mono: \"text-muted-foreground\",\n classified: \"text-primary\",\n transmission: \"text-ef-cyan\",\n};\n\nconst MSG_TYPE_COLORS: Record<string, string> = {\n system: \"text-muted-foreground\",\n data: \"text-ef-cyan\",\n warning: \"text-ef-orange\",\n classified: \"text-primary\",\n};\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport type DataStreamMessage =\n | string\n | { text: string; type?: \"system\" | \"data\" | \"warning\" | \"classified\" };\n\n/* ── Defaults ────────────────────────────────────────────────────────────── */\n\nconst DEFAULT_MESSAGES: DataStreamMessage[] = [\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\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface DataStreamProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n messages?: DataStreamMessage[];\n speed?: 1 | 2 | 3 | 4 | 5;\n messageType?: MessageColorMode;\n}\n\n/* ── Helpers ─────────────────────────────────────────────────────────────── */\n\nfunction msgText(m: DataStreamMessage): string {\n return typeof m === \"string\" ? m : m.text;\n}\n\nfunction msgColor(m: DataStreamMessage, override?: MessageColorMode): string {\n if (override) return STREAM_COLOR_OVERRIDES[override];\n\n if (typeof m !== \"string\" && m.type) {\n return MSG_TYPE_COLORS[m.type] ?? \"text-muted-foreground\";\n }\n\n const txt = typeof m === \"string\" ? m : m.text;\n if (txt.includes(\"[SEC]\")) return \"text-ef-green\";\n if (txt.includes(\"[NET]\")) return \"text-ef-blue\";\n if (txt.includes(\"[DAT]\")) return \"text-ef-cyan\";\n if (txt.includes(\"[GPU]\")) return \"text-ef-purple\";\n return \"text-muted-foreground\";\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst DataStream = React.forwardRef<HTMLDivElement, DataStreamProps>(\n (\n {\n messages = DEFAULT_MESSAGES,\n speed = 3,\n messageType,\n className,\n ...props\n },\n ref,\n ) => {\n const intervalMs = SPEED_INTERVALS[speed] ?? SPEED_INTERVALS[3];\n\n const [lines, setLines] = React.useState<DataStreamMessage[]>([]);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n let i = 0;\n const id = 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 }, intervalMs);\n return () => clearInterval(id);\n }, [messages, intervalMs]);\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={cn(\n \"border border-border bg-background clip-corner overflow-hidden\",\n className,\n )}\n {...props}\n >\n {/* Header */}\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={{\n clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\",\n }}\n />\n <span className=\"font-mono text-[10px] text-ef-green\">ACTIVE</span>\n </div>\n </div>\n\n {/* Stream body */}\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={`${msgText(line)}-${i}`}\n initial={{ opacity: 0, x: -10 }}\n animate={{ opacity: 1, x: 0 }}\n className={msgColor(line, messageType)}\n >\n {msgText(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\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { 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\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport interface RadarChartDataPoint {\n label: string;\n value: number;\n}\n\nexport interface RadarAxisConfig {\n label: string;\n min?: number;\n max?: number;\n}\n\nexport interface RadarDataset {\n label?: string;\n values: number[];\n color?: string;\n fillOpacity?: number;\n}\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface RadarChartProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"color\"\n> {\n data?: RadarChartDataPoint[];\n color?: \"primary\" | \"cyan\";\n\n axes?: RadarAxisConfig[];\n datasets?: RadarDataset[];\n showLegend?: boolean;\n\n size?: number;\n}\n\n/* ── Helpers ─────────────────────────────────────────────────────────────── */\n\nfunction getPoint(\n cx: number,\n cy: number,\n r: number,\n angleStep: number,\n i: number,\n) {\n return {\n x: cx + r * Math.sin(i * angleStep),\n y: cy - r * Math.cos(i * angleStep),\n };\n}\n\nfunction toPoints(pts: { x: number; y: number }[]) {\n return pts.map((p) => `${p.x},${p.y}`).join(\" \");\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst RadarChart = React.forwardRef<HTMLDivElement, RadarChartProps>(\n (\n {\n data,\n color = \"primary\",\n axes,\n datasets,\n showLegend = false,\n size = 260,\n className,\n ...props\n },\n forwardedRef,\n ) => {\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 =\n 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 /* ── Normalise input (legacy → new) ── */\n const resolvedAxes: RadarAxisConfig[] =\n axes ?? data?.map((d) => ({ label: d.label, min: 0, max: 100 })) ?? [];\n\n const resolvedDatasets: RadarDataset[] =\n datasets ??\n (data\n ? [\n {\n label: undefined,\n values: data.map((d) => d.value),\n color:\n color === \"cyan\"\n ? \"hsl(var(--ef-cyan))\"\n : \"hsl(var(--primary))\",\n },\n ]\n : []);\n\n const n = resolvedAxes.length;\n if (n < 3) return null;\n\n const cx = size / 2;\n const cy = size / 2;\n const r = size * 0.38;\n const levels = 4;\n const angleStep = (Math.PI * 2) / n;\n\n /* Grid ring polygons */\n const gridPolygons = Array.from({ length: levels }, (_, lvl) => {\n const lr = r * ((lvl + 1) / levels);\n return toPoints(\n resolvedAxes.map((_, i) => getPoint(cx, cy, lr, angleStep, i)),\n );\n });\n\n /* Axis lines */\n const axisLines = resolvedAxes.map((_, i) =>\n getPoint(cx, cy, r, angleStep, i),\n );\n\n /* Per-dataset polygon paths */\n const datasetPaths = resolvedDatasets.map((ds) => {\n const dataPoints = resolvedAxes.map((axis, i) => {\n const min = axis.min ?? 0;\n const max = axis.max ?? 100;\n const norm = max > min ? (ds.values[i] - min) / (max - min) : 0;\n return getPoint(\n cx,\n cy,\n Math.max(0, Math.min(1, norm)) * r,\n angleStep,\n i,\n );\n });\n return {\n ds,\n path: toPoints(dataPoints),\n center: toPoints(resolvedAxes.map(() => ({ x: cx, y: cy }))),\n };\n });\n\n /* Default dataset colors */\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--ef-blue))\",\n \"hsl(var(--ef-green))\",\n ];\n\n return (\n <div\n ref={mergeRef}\n className={cn(\"flex flex-col items-center w-full\", className)}\n {...props}\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\n {/* Axis lines */}\n {axisLines.map((p, i) => (\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 polygons — one per dataset */}\n {datasetPaths.map(({ ds, path, center }, di) => {\n const fillColor =\n ds.color ?? defaultColors[di % defaultColors.length];\n const fillOpacity = ds.fillOpacity ?? 0.15;\n return (\n <motion.polygon\n key={di}\n points={isInView ? path : center}\n fill={fillColor}\n fillOpacity={fillOpacity}\n stroke={fillColor}\n strokeWidth={2}\n initial={false}\n animate={{ points: isInView ? path : center }}\n transition={{\n duration: 0.8,\n ease: [0.25, 0.8, 0.25, 1],\n delay: di * 0.1,\n }}\n style={{\n filter: `drop-shadow(0 0 8px ${fillColor.replace(\")\", \" / 0.3)\")})`,\n }}\n />\n );\n })}\n\n {/* Data point circles — first dataset only */}\n {datasetPaths[0] &&\n (() => {\n const { ds, path: _ } = datasetPaths[0];\n const fillColor = ds.color ?? defaultColors[0];\n return resolvedAxes.map((axis, i) => {\n const min = axis.min ?? 0;\n const max = axis.max ?? 100;\n const norm = max > min ? (ds.values[i] - min) / (max - min) : 0;\n const p = getPoint(\n cx,\n cy,\n Math.max(0, Math.min(1, norm)) * r,\n angleStep,\n i,\n );\n return (\n <motion.circle\n key={i}\n cx={cx}\n cy={cy}\n r={4}\n fill={fillColor}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n initial={false}\n animate={{\n cx: isInView ? p.x : cx,\n cy: isInView ? p.y : cy,\n }}\n transition={{ duration: 0.8, delay: i * 0.05 }}\n style={{\n filter: `drop-shadow(0 0 4px ${fillColor.replace(\")\", \" / 0.5)\")})`,\n }}\n />\n );\n });\n })()}\n\n {/* Axis labels */}\n {resolvedAxes.map((axis, i) => {\n const p = getPoint(cx, cy, r + 20, angleStep, i);\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 {axis.label}\n </text>\n );\n })}\n </svg>\n\n {/* Legend row */}\n {showLegend && resolvedDatasets.some((ds) => ds.label) && (\n <div className=\"flex items-center gap-4 mt-3\">\n {resolvedDatasets.map((ds, di) => {\n if (!ds.label) return null;\n const c = ds.color ?? defaultColors[di % defaultColors.length];\n return (\n <div key={di} className=\"flex items-center gap-1.5\">\n <span\n className=\"inline-block w-2.5 h-2.5\"\n style={{ backgroundColor: c }}\n />\n <span className=\"font-mono text-[11px] text-muted-foreground uppercase tracking-wider\">\n {ds.label}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n },\n);\nRadarChart.displayName = \"RadarChart\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { RadarChart };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Bracket size config ─────────────────────────────────────────────────── */\n\nconst BRACKET_SIZE: Record<string, string> = {\n sm: \"w-5 h-5\",\n md: \"w-8 h-8\",\n lg: \"w-12 h-12\",\n};\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface HUDOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n systemLabel?: string;\n lat?: string;\n lon?: string;\n showCoords?: boolean;\n showCrosshair?: boolean;\n showScanlines?: boolean;\n showNoise?: boolean;\n bracketSize?: \"sm\" | \"md\" | \"lg\";\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst 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 showScanlines = true,\n showNoise = false,\n bracketSize = \"md\",\n className,\n ...props\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 const bClass = BRACKET_SIZE[bracketSize] ?? BRACKET_SIZE.md;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative border border-border bg-surface-0 aspect-video flex items-center justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n {showScanlines && (\n <div className=\"absolute inset-0 scanline-overlay pointer-events-none\" />\n )}\n\n {showNoise && (\n <div\n className=\"absolute inset-0 pointer-events-none noise-overlay\"\n style={{\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E\\\")\",\n backgroundRepeat: \"repeat\",\n backgroundSize: \"200px 200px\",\n opacity: 0.6,\n }}\n />\n )}\n\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, borders], i) => (\n <div\n key={i}\n className={cn(\n \"absolute border-primary/40 pointer-events-none\",\n bClass,\n pos,\n borders,\n )}\n />\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\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\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\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={{\n clipPath: \"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)\",\n }}\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\n {/* User content — rendered above all decoration layers */}\n <div className=\"relative z-10\">{children}</div>\n </div>\n );\n },\n);\nHUDOverlay.displayName = \"HUDOverlay\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { HUDOverlay };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst missionCardVariants = cva(\n [\n \"relative bg-surface-1 border overflow-hidden transition-all duration-300\",\n \"before:absolute before:top-0 before:left-0 before:w-5 before:h-5\",\n \"before:border-t-2 before:border-l-2 before:border-primary/40 before:pointer-events-none\",\n \"after:absolute after:bottom-0 after:right-0 after:w-5 after:h-5\",\n \"after:border-b-2 after:border-r-2 after:border-primary/40 after:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n priority: {\n low: \"border-white/8\",\n medium: \"border-ef-blue/30\",\n high: \"border-ef-orange/40\",\n critical: \"border-ef-red/50 shadow-[0_0_12px_rgba(255,71,87,0.1)]\",\n },\n status: {\n active: \"\",\n completed: \"opacity-70\",\n failed: \"opacity-60\",\n pending: \"border-dashed\",\n classified: \"border-primary/20\",\n },\n clickable: {\n true: \"cursor-pointer hover:-translate-y-0.5 hover:shadow-lg\",\n false: \"\",\n },\n },\n defaultVariants: { priority: \"medium\", status: \"active\", clickable: false },\n },\n);\n\n/* ── Config maps ──────────────────────────────────────────────────────────── */\n\nconst STATUS_CONFIG = {\n active: {\n label: \"ACTIVE\",\n cls: \"text-ef-green border-ef-green/40 bg-ef-green/10\",\n },\n completed: {\n label: \"COMPLETED\",\n cls: \"text-muted-foreground border-white/20 bg-white/5\",\n },\n failed: {\n label: \"FAILED\",\n cls: \"text-destructive border-destructive/40 bg-destructive/10\",\n },\n pending: {\n label: \"PENDING\",\n cls: \"text-ef-orange border-ef-orange/40 bg-ef-orange/10\",\n },\n classified: {\n label: \"CLASSIFIED\",\n cls: \"text-primary border-primary/40 bg-primary/10\",\n },\n} as const;\n\nconst PRIORITY_CONFIG = {\n low: { label: \"LOW\", cls: \"text-muted-foreground\" },\n medium: { label: \"MEDIUM\", cls: \"text-ef-blue\" },\n high: { label: \"HIGH\", cls: \"text-ef-orange\" },\n critical: { label: \"CRITICAL\", cls: \"text-destructive\" },\n} as const;\n\n/* ── Types ────────────────────────────────────────────────────────────────── */\n\nexport type MissionStatus = keyof typeof STATUS_CONFIG;\nexport type MissionPriority = keyof typeof PRIORITY_CONFIG;\n\nexport interface MissionCardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof missionCardVariants>, \"clickable\"> {\n title: string;\n missionId?: string;\n description?: string;\n status?: MissionStatus;\n priority?: MissionPriority;\n date?: string;\n progress?: number;\n tags?: string[];\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst MissionCard = React.forwardRef<HTMLDivElement, MissionCardProps>(\n (\n {\n className,\n title,\n missionId,\n description,\n status = \"active\",\n priority = \"medium\",\n date,\n progress,\n tags,\n onClick,\n ...props\n },\n ref,\n ) => {\n const statusCfg = STATUS_CONFIG[status];\n const priorityCfg = PRIORITY_CONFIG[priority];\n const isClickable = !!onClick;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isClickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n };\n\n const clampedProgress =\n progress !== undefined ? Math.min(100, Math.max(0, progress)) : undefined;\n\n return (\n <div\n ref={ref}\n role={isClickable ? \"button\" : \"article\"}\n aria-label={`Mission: ${title}`}\n tabIndex={isClickable ? 0 : undefined}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n className={cn(\n missionCardVariants({ priority, status, clickable: isClickable }),\n className,\n )}\n {...props}\n >\n {/* ── Header ── */}\n <div className=\"flex items-center justify-between px-4 py-2.5 border-b border-white/8 bg-surface-0\">\n <span\n className={cn(\n \"font-mono text-[10px] font-semibold tracking-[0.1em] uppercase\",\n priorityCfg.cls,\n )}\n >\n ◆ PRIORITY: {priorityCfg.label}\n </span>\n <span\n className={cn(\n \"font-mono text-[10px] font-semibold tracking-[0.1em] uppercase border px-2 py-0.5\",\n statusCfg.cls,\n )}\n >\n {statusCfg.label}\n </span>\n </div>\n\n {/* ── Body ── */}\n <div className=\"px-4 pt-3 pb-2\">\n <h3 className=\"font-display text-[15px] font-bold uppercase tracking-wider text-foreground leading-tight\">\n {title}\n </h3>\n {missionId && (\n <p className=\"font-mono text-[11px] text-muted-foreground/60 mt-0.5\">\n ID: {missionId}\n </p>\n )}\n {description && (\n <p className=\"text-[13px] text-muted-foreground mt-2 leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n\n {/* ── Footer ── */}\n {(date !== undefined ||\n clampedProgress !== undefined ||\n (tags && tags.length > 0)) && (\n <div className=\"px-4 pb-3 pt-1 space-y-2\">\n {clampedProgress !== undefined && (\n <div className=\"flex items-center gap-2\">\n <div\n role=\"progressbar\"\n aria-valuenow={clampedProgress}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label=\"Mission progress\"\n className=\"flex-1 h-1 bg-white/8 overflow-hidden\"\n >\n <div\n className=\"h-full bg-primary transition-all duration-500\"\n style={{ width: `${clampedProgress}%` }}\n />\n </div>\n <span className=\"font-mono text-[10px] text-muted-foreground shrink-0 w-8 text-right\" aria-hidden=\"true\">\n {clampedProgress}%\n </span>\n </div>\n )}\n <div className=\"flex items-center justify-between gap-2 flex-wrap\">\n {date && (\n <span className=\"font-mono text-[11px] text-muted-foreground/60\">\n {date}\n </span>\n )}\n {tags && tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1 ml-auto\">\n {tags.map((tag) => (\n <span\n key={tag}\n className=\"font-mono text-[9px] uppercase tracking-wider border border-white/10 px-1.5 py-0.5 text-muted-foreground/60\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\nMissionCard.displayName = \"MissionCard\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { MissionCard, missionCardVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Rarity config ────────────────────────────────────────────────────────── */\n\nconst RARITY_STAR_COLORS: Record<number, string> = {\n 1: \"text-white/40\",\n 2: \"text-ef-green/70\",\n 3: \"text-ef-blue/80\",\n 4: \"text-ef-purple\",\n 5: \"text-ef-orange\",\n 6: \"text-primary\",\n};\n\n/* ── Stat fill colors ─────────────────────────────────────────────────────── */\n\nconst STAT_FILL: Record<string, string> = {\n default: \"bg-primary\",\n success: \"bg-ef-green\",\n danger: \"bg-destructive\",\n info: \"bg-ef-blue\",\n};\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst operatorCardVariants = cva(\n [\n \"relative bg-surface-1 border border-white/8 overflow-hidden transition-all duration-300\",\n \"before:absolute before:top-0 before:left-0 before:w-5 before:h-5\",\n \"before:border-t-2 before:border-l-2 before:border-primary/40 before:pointer-events-none\",\n ].join(\" \"),\n {\n variants: {\n size: {\n compact: \"flex gap-3 p-3\",\n default: \"p-4\",\n },\n },\n defaultVariants: { size: \"default\" },\n },\n);\n\n/* ── Types ────────────────────────────────────────────────────────────────── */\n\nexport interface OperatorStat {\n label: string;\n value: number;\n max?: number;\n color?: \"default\" | \"success\" | \"danger\" | \"info\";\n}\n\nexport interface OperatorCardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof operatorCardVariants> {\n name: string;\n operatorClass?: string;\n rarity?: 1 | 2 | 3 | 4 | 5 | 6;\n avatarSrc?: string;\n initials?: string;\n stats?: OperatorStat[];\n faction?: string;\n tags?: string[];\n}\n\n/* ── Avatar block ─────────────────────────────────────────────────────────── */\n\nfunction OperatorAvatar({\n src,\n name,\n initials,\n sizeClass,\n}: {\n src?: string;\n name: string;\n initials?: string;\n sizeClass: string;\n}) {\n return (\n <div\n className={cn(\n \"shrink-0 bg-surface-2 flex items-center justify-center\",\n \"font-display font-bold uppercase text-primary\",\n sizeClass,\n )}\n style={{\n clipPath:\n \"polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%)\",\n }}\n >\n {src ? (\n <img src={src} alt={name} className=\"w-full h-full object-cover\" />\n ) : (\n <span>{initials ?? name.slice(0, 2)}</span>\n )}\n </div>\n );\n}\n\n/* ── Stars ────────────────────────────────────────────────────────────────── */\n\nfunction RarityStars({ rarity }: { rarity: number }) {\n const starColor = RARITY_STAR_COLORS[rarity] ?? RARITY_STAR_COLORS[3];\n return (\n <span\n className=\"font-mono text-[11px]\"\n aria-label={`${rarity} star${rarity !== 1 ? \"s\" : \"\"}`}\n >\n {Array.from({ length: rarity }).map((_, i) => (\n <span key={`f-${i}`} className={starColor}>\n ◆\n </span>\n ))}\n {Array.from({ length: 6 - rarity }).map((_, i) => (\n <span key={`e-${i}`} className=\"text-white/15\">\n ◇\n </span>\n ))}\n </span>\n );\n}\n\n/* ── Class badge (inline, replicates TacticalBadge style) ────────────────── */\n\nfunction ClassBadge({ label }: { label: string }) {\n return (\n <span\n className={[\n \"inline-flex items-center gap-1.5 clip-corner-sm border\",\n \"px-2.5 py-0.5 font-display text-[10px] font-bold tracking-[0.15em] uppercase\",\n \"border-primary/40 text-primary bg-primary/10\",\n ].join(\" \")}\n >\n <span style={{ fontSize: \"6px\" }}>◆</span>\n {label}\n </span>\n );\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst OperatorCard = React.forwardRef<HTMLDivElement, OperatorCardProps>(\n (\n {\n className,\n name,\n operatorClass,\n rarity = 3,\n avatarSrc,\n initials,\n stats,\n faction,\n tags,\n size,\n ...props\n },\n ref,\n ) => {\n const clampedRarity = Math.min(6, Math.max(1, rarity)) as\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6;\n\n /* ── Compact layout ── */\n if (size === \"compact\") {\n return (\n <div\n ref={ref}\n className={cn(operatorCardVariants({ size }), className)}\n {...props}\n >\n <OperatorAvatar\n src={avatarSrc}\n name={name}\n initials={initials}\n sizeClass=\"w-12 h-12 text-sm\"\n />\n <div className=\"flex-1 min-w-0 py-0.5\">\n <p className=\"font-display text-[13px] font-bold uppercase tracking-wider text-foreground truncate\">\n {name}\n </p>\n {operatorClass && (\n <p className=\"font-mono text-[10px] text-muted-foreground mt-0.5\">\n ◆ {operatorClass.toUpperCase()}\n </p>\n )}\n <div className=\"mt-1\">\n <RarityStars rarity={clampedRarity} />\n </div>\n </div>\n </div>\n );\n }\n\n /* ── Default layout ── */\n return (\n <div\n ref={ref}\n className={cn(operatorCardVariants({ size }), className)}\n {...props}\n >\n {/* Top section: avatar + identity */}\n <div className=\"flex items-start gap-4 mb-3\">\n <OperatorAvatar\n src={avatarSrc}\n name={name}\n initials={initials}\n sizeClass=\"w-20 h-20 text-xl\"\n />\n <div className=\"flex-1 min-w-0 pt-1\">\n <h3 className=\"font-display text-[16px] font-bold uppercase tracking-wider text-foreground leading-tight\">\n {name}\n </h3>\n {faction && (\n <p className=\"font-mono text-[10px] text-muted-foreground/60 mt-0.5 uppercase tracking-wider\">\n {faction}\n </p>\n )}\n {operatorClass && (\n <div className=\"mt-1.5\">\n <ClassBadge label={operatorClass} />\n </div>\n )}\n <div className=\"mt-2\">\n <RarityStars rarity={clampedRarity} />\n </div>\n </div>\n </div>\n\n {/* Tags */}\n {tags && tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1 mb-3\">\n {tags.map((tag) => (\n <span\n key={tag}\n className=\"font-mono text-[9px] uppercase tracking-wider border border-white/10 px-1.5 py-0.5 text-muted-foreground/60\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n\n {/* Stats */}\n {stats && stats.length > 0 && (\n <div className=\"space-y-2 pt-2 border-t border-white/6\">\n {stats.map((stat) => {\n const maxVal = stat.max ?? stat.value;\n const pct =\n maxVal > 0 ? Math.min(100, (stat.value / maxVal) * 100) : 0;\n const fill =\n STAT_FILL[stat.color ?? \"default\"] ?? STAT_FILL.default;\n return (\n <div key={stat.label} className=\"flex items-center gap-2\">\n <span className=\"font-mono text-[10px] uppercase tracking-wider text-muted-foreground w-8 shrink-0\">\n {stat.label}\n </span>\n <div className=\"flex-1 h-1 bg-white/8 overflow-hidden\">\n <div\n className={cn(\"h-full transition-all duration-500\", fill)}\n style={{ width: `${pct}%` }}\n />\n </div>\n <span className=\"font-mono text-[10px] text-muted-foreground/70 w-12 text-right shrink-0\">\n {stat.value.toLocaleString()}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n },\n);\nOperatorCard.displayName = \"OperatorCard\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { OperatorCard, operatorCardVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst statusBarContainerVariants = cva(\"flex items-center gap-1.5\", {\n variants: {\n size: {\n sm: \"[&>span.seg]:w-3 [&>span.seg]:h-2\",\n md: \"[&>span.seg]:w-4 [&>span.seg]:h-3\",\n lg: \"[&>span.seg]:w-6 [&>span.seg]:h-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nconst statusBarSegmentVariants = cva(\"seg transition-all duration-200\", {\n variants: {\n variant: {\n health: \"\",\n energy: \"\",\n shield: \"\",\n experience: \"\",\n },\n },\n defaultVariants: { variant: \"health\" },\n});\n\n/* ── Fill color per variant ───────────────────────────────────────────────── */\n\nconst FILL_COLORS: Record<string, string> = {\n health: \"bg-ef-green\",\n energy: \"bg-primary\",\n shield: \"bg-ef-blue\",\n experience: \"bg-ef-purple\",\n};\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface StatusBarProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof statusBarContainerVariants>,\n VariantProps<typeof statusBarSegmentVariants> {\n value: number;\n max?: number;\n segments?: number;\n label?: string;\n showValue?: boolean;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst StatusBar = React.forwardRef<HTMLDivElement, StatusBarProps>(\n (\n {\n className,\n value,\n max = 100,\n segments = 10,\n label,\n showValue = false,\n size,\n variant = \"health\",\n ...props\n },\n ref,\n ) => {\n const clampedValue = Math.min(max, Math.max(0, value));\n const ratio = max > 0 ? clampedValue / max : 0;\n const filledCount = Math.round(ratio * segments);\n\n /* Auto-danger color for health bar at low values */\n const resolveFill = (segIdx: number): string => {\n if (segIdx >= filledCount) return \"bg-white/8\";\n if (variant === \"health\") {\n if (ratio <= 0.15) return \"bg-destructive\";\n if (ratio <= 0.3) return \"bg-ef-orange\";\n }\n return FILL_COLORS[variant ?? \"health\"] ?? FILL_COLORS.health;\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center gap-2\", className)}\n role=\"meter\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label ?? `${variant} bar`}\n {...props}\n >\n {label && (\n <span className=\"font-mono text-[10px] uppercase tracking-wider text-muted-foreground shrink-0\">\n {label}\n </span>\n )}\n\n <div className={cn(statusBarContainerVariants({ size }))}>\n {Array.from({ length: segments }).map((_, i) => (\n <span\n key={i}\n className={cn(\n statusBarSegmentVariants({ variant }),\n resolveFill(i),\n )}\n />\n ))}\n </div>\n\n {showValue && (\n <span className=\"font-mono text-[10px] text-muted-foreground shrink-0 ml-1\">\n {clampedValue}/{max}\n </span>\n )}\n </div>\n );\n },\n);\nStatusBar.displayName = \"StatusBar\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { StatusBar, statusBarContainerVariants, statusBarSegmentVariants };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Log level config ─────────────────────────────────────────────────────── */\n\nexport type LogLevel = \"system\" | \"info\" | \"success\" | \"warning\" | \"error\";\n\nconst LOG_CONFIG: Record<\n LogLevel,\n { prefix: string; color: string; ariaLive: string }\n> = {\n system: { prefix: \"[SYS] \", color: \"text-muted-foreground\", ariaLive: \"off\" },\n info: { prefix: \"[INFO]\", color: \"text-ef-blue\", ariaLive: \"off\" },\n success: { prefix: \"[OK] \", color: \"text-ef-green\", ariaLive: \"polite\" },\n warning: { prefix: \"[WARN]\", color: \"text-ef-orange\", ariaLive: \"polite\" },\n error: { prefix: \"[ERR] \", color: \"text-destructive\", ariaLive: \"assertive\" },\n};\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport interface LogEntry {\n id?: string | number;\n level: LogLevel;\n message: string;\n timestamp?: string;\n}\n\nexport interface CommandOutputProps extends React.HTMLAttributes<HTMLDivElement> {\n entries: LogEntry[];\n showHeader?: boolean;\n headerText?: string;\n showCursor?: boolean;\n autoScroll?: boolean;\n maxHeight?: string;\n showTimestamp?: boolean;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst CommandOutput = React.forwardRef<HTMLDivElement, CommandOutputProps>(\n (\n {\n className,\n entries,\n showHeader = true,\n headerText = \"TERMINAL\",\n showCursor = true,\n autoScroll = true,\n maxHeight = \"320px\",\n showTimestamp = false,\n ...props\n },\n ref,\n ) => {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (autoScroll && scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }\n }, [entries, autoScroll]);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-[#0F0F0F] border border-white/8 font-mono text-[13px]\",\n className,\n )}\n {...props}\n >\n {/* Header */}\n {showHeader && (\n <div className=\"flex items-center gap-2 px-4 py-2 border-b border-white/8\">\n <div className=\"flex gap-1\">\n <span className=\"w-2.5 h-2.5 bg-white/10\" />\n <span className=\"w-2.5 h-2.5 bg-white/10\" />\n <span className=\"w-2.5 h-2.5 bg-white/10\" />\n </div>\n <span className=\"font-mono text-[10px] text-muted-foreground/60 uppercase tracking-[0.15em] mx-auto\">\n {headerText}\n </span>\n </div>\n )}\n\n {/* Output area */}\n <div\n ref={scrollRef}\n style={{ maxHeight }}\n className=\"overflow-y-auto py-2 scrollbar-thin\"\n role=\"log\"\n aria-live=\"polite\"\n aria-label={headerText}\n >\n {entries.length === 0 && (\n <div className=\"px-4 py-2 text-muted-foreground/40 text-[12px]\">\n No output.\n </div>\n )}\n {entries.map((entry, i) => {\n const cfg = LOG_CONFIG[entry.level];\n const key = entry.id ?? i;\n return (\n <div\n key={key}\n className=\"flex gap-3 px-4 py-0.5 hover:bg-white/[0.02] transition-colors\"\n >\n {/* Prefix */}\n <span\n className={cn(\n \"text-[11px] font-semibold shrink-0 select-none\",\n \"w-[54px]\",\n cfg.color,\n )}\n >\n {cfg.prefix}\n </span>\n\n {/* Timestamp */}\n {showTimestamp && (\n <span className=\"text-[11px] text-muted-foreground/40 shrink-0\">\n {entry.timestamp ??\n new Date().toISOString().slice(0, 19).replace(\"T\", \"/\")}\n </span>\n )}\n\n {/* Message */}\n <span className=\"text-[#E0E0E0] break-all\">\n {entry.message}\n </span>\n </div>\n );\n })}\n\n {/* Blinking cursor */}\n {showCursor && (\n <div className=\"flex items-center gap-3 px-4 py-0.5 mt-0.5\">\n <span className=\"w-[54px] shrink-0\" />\n <span\n className=\"inline-block w-2 h-4 bg-primary animate-pulse\"\n aria-hidden\n />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\nCommandOutput.displayName = \"CommandOutput\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { CommandOutput };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst countdownDigitVariants = cva(\n \"font-display font-bold text-primary tabular-nums leading-none\",\n {\n variants: {\n size: {\n sm: \"text-2xl\",\n md: \"text-5xl\",\n lg: \"text-7xl\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nconst countdownUnitVariants = cva(\n \"font-mono uppercase tracking-widest text-muted-foreground/60\",\n {\n variants: {\n size: {\n sm: \"text-[9px]\",\n md: \"text-[10px]\",\n lg: \"text-[11px]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\n/* ── Helpers ─────────────────────────────────────────────────────────────── */\n\ninterface TimeLeft {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n total: number;\n}\n\nfunction computeTimeLeft(targetMs: number): TimeLeft {\n const total = Math.max(0, targetMs - Date.now());\n const seconds = Math.floor((total / 1000) % 60);\n const minutes = Math.floor((total / 1000 / 60) % 60);\n const hours = Math.floor((total / (1000 * 60 * 60)) % 24);\n const days = Math.floor(total / (1000 * 60 * 60 * 24));\n return { days, hours, minutes, seconds, total };\n}\n\nfunction pad2(n: number) {\n return String(n).padStart(2, \"0\");\n}\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface CountdownTimerProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof countdownDigitVariants> {\n targetDate?: string;\n seconds?: number;\n onComplete?: () => void;\n label?: string;\n autoHideZero?: boolean;\n showDays?: boolean;\n}\n\n/* ── Unit cell ───────────────────────────────────────────────────────────── */\n\nfunction UnitCell({\n value,\n unit,\n size,\n}: {\n value: string;\n unit: string;\n size: \"sm\" | \"md\" | \"lg\" | null | undefined;\n}) {\n return (\n <div className=\"flex flex-col items-center gap-1\">\n <span className={countdownDigitVariants({ size })}>{value}</span>\n <span className={countdownUnitVariants({ size })}>{unit}</span>\n </div>\n );\n}\n\n/* ── Separator ────────────────────────────────────────────────────────────── */\n\nfunction Colon({ size }: { size: \"sm\" | \"md\" | \"lg\" | null | undefined }) {\n const cls =\n size === \"sm\" ? \"text-xl\" : size === \"lg\" ? \"text-5xl\" : \"text-3xl\";\n return (\n <span\n className={cn(\n \"font-mono text-primary/30 font-bold select-none mb-4\",\n cls,\n )}\n >\n :\n </span>\n );\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst CountdownTimer = React.forwardRef<HTMLDivElement, CountdownTimerProps>(\n (\n {\n className,\n targetDate,\n seconds: durationSeconds,\n onComplete,\n label,\n autoHideZero = false,\n showDays = true,\n size,\n ...props\n },\n ref,\n ) => {\n const targetMs = React.useMemo(() => {\n if (targetDate) return new Date(targetDate).getTime();\n if (durationSeconds !== undefined)\n return Date.now() + durationSeconds * 1000;\n return Date.now();\n }, [targetDate, durationSeconds]);\n\n const [timeLeft, setTimeLeft] = React.useState<TimeLeft>(() =>\n computeTimeLeft(targetMs),\n );\n\n const completedRef = React.useRef(false);\n\n React.useEffect(() => {\n completedRef.current = false;\n\n const tick = () => {\n const tl = computeTimeLeft(targetMs);\n setTimeLeft(tl);\n if (tl.total === 0 && !completedRef.current) {\n completedRef.current = true;\n onComplete?.();\n }\n };\n\n tick();\n const id = setInterval(tick, 1000);\n return () => clearInterval(id);\n }, [targetMs, onComplete]);\n\n const ariaLabel = React.useMemo(\n () =>\n `Countdown: ${timeLeft.days} days ${timeLeft.hours} hours ${timeLeft.minutes} minutes ${timeLeft.seconds} seconds`,\n [timeLeft.days, timeLeft.hours, timeLeft.minutes],\n );\n\n const displayDays = showDays && !(autoHideZero && timeLeft.days === 0);\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col items-center gap-4\", className)}\n role=\"timer\"\n aria-label={ariaLabel}\n aria-live=\"off\"\n {...props}\n >\n {label && (\n <p className=\"font-mono text-[11px] uppercase tracking-widest text-muted-foreground\">\n {label}\n </p>\n )}\n\n <div className=\"flex items-end gap-2\">\n {displayDays && (\n <>\n <UnitCell value={String(timeLeft.days)} unit=\"DAYS\" size={size} />\n <Colon size={size} />\n </>\n )}\n <UnitCell value={pad2(timeLeft.hours)} unit=\"HRS\" size={size} />\n <Colon size={size} />\n <UnitCell value={pad2(timeLeft.minutes)} unit=\"MIN\" size={size} />\n <Colon size={size} />\n <UnitCell value={pad2(timeLeft.seconds)} unit=\"SEC\" size={size} />\n </div>\n </div>\n );\n },\n);\nCountdownTimer.displayName = \"CountdownTimer\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { CountdownTimer };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Types ───────────────────────────────────────────────────────────────── */\n\nexport interface TacticalTableColumn<T> {\n key: keyof T & string;\n header: string;\n sortable?: boolean;\n cell?: (row: T, rowIndex: number) => React.ReactNode;\n width?: string;\n align?: \"left\" | \"center\" | \"right\";\n}\n\nexport interface TacticalTableProps<\n T extends Record<string, unknown>,\n> extends React.HTMLAttributes<HTMLDivElement> {\n columns: TacticalTableColumn<T>[];\n data: T[];\n sortKey?: keyof T & string;\n sortDirection?: \"asc\" | \"desc\";\n onSort?: (key: keyof T & string) => void;\n selectable?: boolean;\n selectedIndices?: number[];\n onRowClick?: (row: T, index: number) => void;\n loading?: boolean;\n skeletonRows?: number;\n emptyState?: React.ReactNode;\n caption?: string;\n}\n\n/* ── Sort indicator ───────────────────────────────────────────────────────── */\n\nfunction SortIndicator({\n active,\n direction,\n}: {\n active: boolean;\n direction?: \"asc\" | \"desc\";\n}) {\n if (!active)\n return <span className=\"ml-1 text-muted-foreground/20 text-[10px]\">↕</span>;\n return (\n <span className=\"ml-1 text-primary text-[10px]\">\n {direction === \"asc\" ? \"▲\" : \"▼\"}\n </span>\n );\n}\n\n/* ── Skeleton row ─────────────────────────────────────────────────────────── */\n\nfunction SkeletonRow({ colCount }: { colCount: number }) {\n return (\n <tr>\n {Array.from({ length: colCount }).map((_, i) => (\n <td key={i} className=\"px-4 py-3 border-b border-white/[0.04]\">\n <div\n className={cn(\n \"h-3 bg-surface-2 animate-skeleton\",\n i === 0 ? \"w-3/4\" : i % 3 === 0 ? \"w-1/2\" : \"w-full\",\n )}\n />\n </td>\n ))}\n </tr>\n );\n}\n\n/* ── Align map ────────────────────────────────────────────────────────────── */\n\nconst ALIGN_CLASS = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nfunction TacticalTableInner<T extends Record<string, unknown>>(\n {\n className,\n columns,\n data,\n sortKey,\n sortDirection,\n onSort,\n selectable = false,\n selectedIndices,\n onRowClick,\n loading = false,\n skeletonRows = 4,\n emptyState,\n caption,\n ...props\n }: TacticalTableProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const selectedSet = new Set(selectedIndices ?? []);\n\n return (\n <div\n ref={ref}\n className={cn(\"w-full overflow-x-auto\", className)}\n {...props}\n >\n <table className=\"w-full border-collapse\" role=\"grid\">\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n\n {/* Head */}\n <thead>\n <tr>\n {columns.map((col) => {\n const isActiveSort = sortKey === col.key;\n return (\n <th\n key={col.key}\n scope=\"col\"\n className={cn(\n \"px-4 py-3 border-b border-white/10 bg-surface-0 sticky top-0 z-10\",\n \"font-mono text-[11px] font-bold tracking-[0.12em] uppercase text-muted-foreground\",\n col.width ?? \"\",\n ALIGN_CLASS[col.align ?? \"left\"],\n col.sortable &&\n \"cursor-pointer select-none hover:text-foreground transition-colors\",\n )}\n aria-sort={\n col.sortable && isActiveSort\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : undefined\n }\n onClick={col.sortable ? () => onSort?.(col.key) : undefined}\n >\n {col.header}\n {col.sortable && (\n <SortIndicator\n active={isActiveSort}\n direction={sortDirection}\n />\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n\n {/* Body */}\n <tbody>\n {loading ? (\n Array.from({ length: skeletonRows }).map((_, i) => (\n <SkeletonRow key={i} colCount={columns.length} />\n ))\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-12 text-center\">\n {emptyState ?? (\n <span className=\"font-mono text-[12px] text-muted-foreground/40 uppercase tracking-wider\">\n NO DATA\n </span>\n )}\n </td>\n </tr>\n ) : (\n data.map((row, rowIdx) => {\n const isSelected = selectable && selectedSet.has(rowIdx);\n const isEven = rowIdx % 2 === 1;\n return (\n <tr\n key={rowIdx}\n aria-selected={selectable ? isSelected : undefined}\n tabIndex={selectable ? 0 : undefined}\n onClick={\n selectable ? () => onRowClick?.(row, rowIdx) : undefined\n }\n onKeyDown={\n selectable\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onRowClick?.(row, rowIdx);\n }\n }\n : undefined\n }\n className={cn(\n \"transition-colors\",\n isSelected\n ? \"bg-primary/[0.06]\"\n : isEven\n ? \"bg-white/[0.015] hover:bg-primary/[0.03]\"\n : \"hover:bg-primary/[0.03]\",\n selectable && \"cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary\",\n )}\n >\n {columns.map((col) => (\n <td\n key={col.key}\n className={cn(\n \"px-4 py-3 text-[14px] text-foreground border-b border-white/[0.04]\",\n ALIGN_CLASS[col.align ?? \"left\"],\n )}\n >\n {col.cell\n ? col.cell(row, rowIdx)\n : (row[col.key] as React.ReactNode)}\n </td>\n ))}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\nconst TacticalTable = React.forwardRef(TacticalTableInner) as <\n T extends Record<string, unknown>,\n>(\n props: TacticalTableProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },\n) => React.ReactElement;\n\n(TacticalTable as { displayName?: string }).displayName = \"TacticalTable\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { TacticalTable };\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface MatrixGridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: number;\n rows?: number;\n dotSize?: number;\n gap?: number;\n activeColor?: string;\n activeProbability?: number;\n intervalMs?: number;\n static?: boolean;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst MatrixGrid = React.forwardRef<HTMLDivElement, MatrixGridProps>(\n (\n {\n className,\n cols = 20,\n rows = 10,\n dotSize = 4,\n gap = 8,\n activeColor = \"bg-primary\",\n activeProbability = 0.05,\n intervalMs = 300,\n static: isStatic = false,\n ...props\n },\n ref,\n ) => {\n const total = cols * rows;\n const [activeDots, setActiveDots] = React.useState<Set<number>>(\n () => new Set<number>(),\n );\n\n /* Detect reduced-motion preference */\n const prefersReduced = React.useMemo(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n }, []);\n\n /* Random activation loop */\n React.useEffect(() => {\n if (isStatic || prefersReduced) return;\n\n const id = setInterval(() => {\n setActiveDots((prev) => {\n const next = new Set(prev);\n /* Activate random dots */\n for (let i = 0; i < total; i++) {\n if (Math.random() < activeProbability) {\n next.add(i);\n }\n }\n for (const dot of next) {\n if (Math.random() < 0.3) next.delete(dot);\n }\n return next;\n });\n }, intervalMs);\n\n return () => clearInterval(id);\n }, [isStatic, prefersReduced, total, activeProbability, intervalMs]);\n\n return (\n <div\n ref={ref}\n className={cn(\"overflow-hidden\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${cols}, ${dotSize}px)`,\n gap: `${gap}px`,\n }}\n >\n {Array.from({ length: total }).map((_, i) => (\n <div\n key={i}\n style={{ width: dotSize, height: dotSize }}\n className={cn(\n \"transition-opacity\",\n isStatic || prefersReduced ? \"duration-0\" : \"duration-500\",\n activeDots.has(i)\n ? cn(\"opacity-100\", activeColor)\n : \"opacity-10 bg-white\",\n )}\n />\n ))}\n </div>\n </div>\n );\n },\n);\nMatrixGrid.displayName = \"MatrixGrid\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { MatrixGrid };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── Variants ─────────────────────────────────────────────────────────────── */\n\nconst frequencyBarsVariants = cva(\"flex items-end gap-px\", {\n variants: {\n color: {\n primary: \"[&>span]:bg-primary\",\n success: \"[&>span]:bg-ef-green\",\n danger: \"[&>span]:bg-destructive\",\n info: \"[&>span]:bg-ef-blue\",\n muted: \"[&>span]:bg-white/20\",\n },\n },\n defaultVariants: { color: \"primary\" },\n});\n\n/* ── Props ───────────────────────────────────────────────────────────────── */\n\nexport interface FrequencyBarsProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n VariantProps<typeof frequencyBarsVariants> {\n barCount?: number;\n barWidth?: number;\n height?: number;\n speed?: \"slow\" | \"medium\" | \"fast\";\n paused?: boolean;\n}\n\n/* ── Component ───────────────────────────────────────────────────────────── */\n\nconst SPEED_DURATION: Record<string, string> = {\n slow: \"1.4s\",\n medium: \"0.8s\",\n fast: \"0.4s\",\n};\n\nconst FrequencyBars = React.forwardRef<HTMLDivElement, FrequencyBarsProps>(\n (\n {\n className,\n barCount = 12,\n barWidth = 3,\n height = 32,\n speed = \"medium\",\n paused = false,\n color,\n style,\n ...props\n },\n ref,\n ) => {\n const duration = SPEED_DURATION[speed] ?? SPEED_DURATION.medium;\n\n const bars = React.useMemo(\n () =>\n Array.from({ length: barCount }, (_, i) => ({\n delay: `${((i * 0.13) % 0.9).toFixed(2)}s`,\n })),\n [barCount],\n );\n\n return (\n <div\n ref={ref}\n className={cn(frequencyBarsVariants({ color }), className)}\n style={{ height, ...style }}\n aria-hidden=\"true\"\n {...props}\n >\n {bars.map((bar, i) => (\n <span\n key={i}\n style={{\n display: \"inline-block\",\n width: barWidth,\n height: \"100%\",\n transformOrigin: \"center bottom\",\n animation: `frequency-bar ${duration} ease-in-out infinite alternate`,\n animationDelay: bar.delay,\n animationPlayState: paused ? \"paused\" : \"running\",\n }}\n />\n ))}\n </div>\n );\n },\n);\nFrequencyBars.displayName = \"FrequencyBars\";\n\n/* ── Exports ─────────────────────────────────────────────────────────────── */\n\nexport { FrequencyBars, frequencyBarsVariants };\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","skeletonLineVariants","SkeletonLine","width","height","SkeletonText","lines","lineWidths","_","i","skeletonAvatarSizes","SkeletonAvatar","SkeletonCard","showAvatar","PRESET_COPY","emptyStateVariants","EmptyState","icon","preset","resolvedTitle","resolvedDesc","alertVariants","VARIANT_CONFIG","Alert","dismissible","onDismiss","cfg","showIcon","iconNode","timelineItemVariants","TimelineItem","date","marker","Timeline","items","item","itemChildren","itemCn","getStepState","currentStep","Stepper","steps","step","isComplete","isCurrent","isLast","stateLabel","paginationItemVariants","getPageRange","current","total","siblings","left","right","pages","Pagination","totalPages","currentPage","onPageChange","siblingCount","isPrevDisabled","isNextDisabled","page","Breadcrumb","separator","numberInputVariants","NumberInput","defaultValue","min","max","isControlled","internalValue","setInternalValue","clamp","n","next","clamped","decrement","increment","atMin","atMax","buttonBase","parsed","INTENSITY_CONFIG","GlitchText","intensity","continuous","continuousInterval","interval","glitching","setGlitching","off","animClass","SIZE_MAP","DiamondLoader","s","STATUS_LABELS","STATUS_COLORS","TacticalPanel","headerAction","collapsible","defaultCollapsed","controlledCollapsed","onCollapseChange","internalCollapsed","setInternalCollapsed","isCollapsed","handleHeaderClick","Crosshair","HoloCard","subtitle","Icon","hovering","setHovering","SPEED_INTERVALS","STREAM_COLOR_OVERRIDES","MSG_TYPE_COLORS","DEFAULT_MESSAGES","msgText","m","msgColor","override","txt","DataStream","messages","speed","messageType","intervalMs","setLines","containerRef","prev","Terminal","AnimatePresence","line","motion","tacticalBadgeVariants","TacticalBadge","WARNING_STYLES","WarningBanner","level","AlertTriangle","ScanDivider","CoordinateTag","unit","getPoint","cx","cy","r","angleStep","toPoints","pts","p","RadarChart","data","color","axes","datasets","showLegend","forwardedRef","innerRef","isInView","useInView","mergeRef","el","resolvedAxes","d","resolvedDatasets","levels","gridPolygons","lvl","lr","axisLines","datasetPaths","ds","dataPoints","axis","norm","defaultColors","path","center","di","fillColor","fillOpacity","c","BRACKET_SIZE","HUDOverlay","systemLabel","lat","lon","showCoords","showCrosshair","showScanlines","showNoise","bracketSize","time","setTime","tick","bClass","pos","borders","missionCardVariants","STATUS_CONFIG","PRIORITY_CONFIG","MissionCard","missionId","priority","progress","tags","onClick","statusCfg","priorityCfg","isClickable","handleKeyDown","clampedProgress","tag","RARITY_STAR_COLORS","STAT_FILL","operatorCardVariants","OperatorAvatar","src","name","initials","sizeClass","RarityStars","rarity","starColor","ClassBadge","OperatorCard","operatorClass","avatarSrc","stats","faction","clampedRarity","stat","maxVal","pct","fill","statusBarContainerVariants","statusBarSegmentVariants","FILL_COLORS","StatusBar","segments","showValue","ratio","filledCount","resolveFill","segIdx","LOG_CONFIG","CommandOutput","entries","showHeader","headerText","showCursor","autoScroll","maxHeight","showTimestamp","scrollRef","entry","key","countdownDigitVariants","countdownUnitVariants","computeTimeLeft","targetMs","seconds","minutes","hours","pad2","UnitCell","Colon","cls","CountdownTimer","targetDate","durationSeconds","onComplete","autoHideZero","showDays","timeLeft","setTimeLeft","completedRef","tl","ariaLabel","displayDays","Fragment","SortIndicator","active","direction","SkeletonRow","colCount","ALIGN_CLASS","TacticalTableInner","columns","sortKey","sortDirection","onSort","selectable","selectedIndices","onRowClick","skeletonRows","emptyState","caption","selectedSet","col","isActiveSort","row","rowIdx","isSelected","isEven","TacticalTable","MatrixGrid","cols","rows","dotSize","gap","activeColor","activeProbability","isStatic","activeDots","setActiveDots","prefersReduced","dot","frequencyBarsVariants","SPEED_DURATION","FrequencyBars","barCount","barWidth","paused","style","duration","bars","bar"],"mappings":"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"}